반응형

1. 데이터 모델링의 이해

- 1_1. 데이터 모델링의 이해

  - 데이터 모델의 이해

    · 모델링: 현실 세계의 비즈니스 프로세스와 데이터 요구 사항을 추상적이고 구조화된 형태로 표현하는 과정

    · 데이터베이스의 구조와 관계를 정의, 데이터의 저장, 조작, 관리 방법을 표현

    · 특징: 단순화, 추상화, 명확화 ~ 단추명

      > 단순화: 불필요한 세부 사항을 제거

      > 추상화: 간략하게 대략적으로 표현

      > 명확화: 애매모호함 없이 정확하게 현상을 기술         

    - 모델링 유의점: 중복, 비유연성, 비일관성(중복이 없더라도 비일관성은 발생 가능)

      > 중복: 테이블에 같은 정보를 저장 X

      > 비유연성: 사소한 업무에 잦은 모델 변경 X

      > 비일관성: DB 내의 정보가 모순되거나 상반된 내용 X

    · 데이터 모델링 3가지 요소: 대상(엔터티), 속성, 관계

    · 데이터 모델링의 3단계: 개념적, 논리적, 물리적 모델링 ~ 개논물

      > 개념적 모델링: 업무 중심적이고 포괄적인 수준의 모델링(추상화 수준 가장 높음), 업무의 핵심 엔터티를 추출하는 단계, ERD 작성

      > 논리적 모델링: 개념적 모델링 결과를 토대로 세부속성, 식별자, 관계 등을 표현하는 단계, 데이터 정규화 수행

      > 물리적 모델링: 논리 모델링이 끝나면 직접 물리적으로 생성하는 과정, 가장 구체적인 모델링(추상화 수준 가장 낮음)

    · ERD(Entity Relationship Diagram, 데이터 모델의 표기법)

      > 피터 첸이 만든 표기법으로 엔터티와 엔터티 간의 관계를 시각적으로 표현한 다이어그램

    · ERD 작성 절차(6단계)

      1. 엔터티를 도출한 후 그림 2. 엔터티 배치 → 3. 관계 설정 → 4. 관계명 서술 → 5. 관계 참여도 기술 → 6. 관계의 필수 여부 확인

  - 엔터티(=테이블)

    · 현실 세계에서 독립적으로 식별 가능한 객체나 사물을 나타냄

    · 엔터티는 업무상 분석해야 하는 대상(instance)들로 이루어진 집합

    · 인스턴스는 엔터티의 특정한 속성 값들로 구성되며, 엔터티 개념을 현실에서 구체적으로 나타낸 것(e.g., 엔터티와 속성, 인스턴스 등의 관계)

      > 엔터티: 학생 | 속성: 학번, 이름, 학과 | 식별자: 학번(고유한 값) | 인스턴스: 특정 학생 한 명의 데이터(e.g., 학번:123123, 이름: 부리부리몬, 학과: 빅데이터학과)

    · 엔터티 특징: 유일한 식별자에 의해 식별 가능, 업무에 필요하고 관리하고자 하는 정보, 2개 이상의 인스턴스들의 집합, 엔터티는 반드시 2개 이상의 속성을 가짐, 엔터티는 업무 프로세스에 의해 이용(실제 사용되지 않으면 잘못 설계), 다른 엔터티와 최소 1개 이상의 관계 성립

    · 엔터티의 분류: 유형과 무형에 따른 분류, 발생 시점에 따른 분류

      > 1. 유형과 무형에 따른 분류: 유형, 개념, 사건

        - 유형엔터티: 물리적 형태가 있음(실체가 있는 대상, e.g., 사원, 물품)

        - 개념엔터티: 물리적인 형태가 없음(e.g., 조직, 보험상품)

        - 사건엔터티: 업무를 수행함에 따라 발생하는 엔터티(e.g., 주문, 청구)

      > 2. 발생 시점에 따른 분류: 기본, 중심, 행위

        - 기본엔터티: 그 업무에 원래 존재하는 정보, 자신의 고유한 주식별자를 가짐(e.g., 사원, 고객, 상품)

        - 중심엔터티: 기본엔터티로부터 발생되고 그 업무에서 중심적인 역할(E.g., 계약, 사고, 주문, 매출)

        - 행위엔터티: 2개 이상의 부모엔터티로부터 발생, 자주 내용이 바뀌거나 데이터 양이 증가(e.g., 주문[고객과 상품으로부터 발생], 사원변경이력)

    · 엔터티의 명명: 현업에서 사용하는 용어, 약자 사용 자제, 단수 명사 사용, 유일한 이름 사용, 엔터티 생성 의미대로 이름 부여

  - 속성(=컬럼으로 표현할 수 있는 단위!)

    · 속성은 업무에서 필요로 하는 고유한 성질, 특징을 의미(관찰 대상)

    · 더 이상 분리되지 않는 최소의 데이터 단위(e.g., 이름, 학번, 학과번호 등)

    · 엔터티, 인스턴스, 속성, 속성값의 관계

      > 한 개의 엔터티는 2개 이상의 인스턴스 집합(2개 이상의 행)2개 이상의 속성(2개 이상의 열)을 갖는다.

      > 한 개의 속성은 1개의 속성값(원자성)을 갖는다(이름에 2개 값 X)

      > 속성은 엔터티에 대한 구체적인 값을 가짐

    · 속성의 특징

      > 정해진 주식별자(행들을 구분할 수 있는 식별자)*함수적 종속성*을 가져야 함 ~ e.g., 학번이 달라지면 학생의 이름이 달라짐

    · 함수적 종속성

      > 어떤 속성 A의 값에 의해 다른 속성 B도 유일하게 결정된다면, BA에 함수적으로 종속됐다고 하고 A → B로 표현

      > 1. 완전 함수적 종속: 특정 컬럼이 기본키에 대해 완전히 종속될 때

      > 2. 부분 함수적 종속: 기본키 전체가 아니라, 기본키 일부에 대해 종속될 때

    · 속성의 분류

      > 1. 속성의 특성에 따른 분류

        - 1. 기본 속성: 업무로부터 추출된 모든 속성(e.g., 원금, 예치기간)

        - 2. 설계 속성: 기본 속성 외에 업무를 규칙화하기 위해 새로 만들어지거나 기본 속성을 변형하여 만들어지는 속성(e.g., 상품코드, 지점코드, 예금분류)

        - 3. 파생 속성: 다른 속성에 의해 만들어지는 속성, 일반적으로 계산된 값들, 데이터 정합성 유지를 위해 가급적 적게 정의하는게 좋음(e.g., 합계, 평균, 이자)

      > 2. 엔터티 구성방식에 따른 분류

        - 1. 기본키(PK): 인스턴스를 식별할 수 있는 속성

        - 2. 외래키(FK): 다른 엔터티와의 관계에서 포함된 속성

        - 3. 일반 속성: 엔터티에 포함되어 있고 PK/FK에 포함 X 속성

      > 3. 분해 여부에 따른 속성

        - 1. 단일 속성: 하나의 의미로 구성된 경우(e.g., 회원 ID, 이름, 학번 등)

        - 2. 복합 속성: 여러개의 의미로 구성된 경우(e.g., 주소(, , 동으로 분해))

        - 3. 다중값 속성: 속성에 여러 개 값을 갖는 경우(e.g., 상품 리스트) ~ 다중값 속성은 다른 엔터티로 분해

    · 속성의 명명규칙: 업무에 사용하는 이름, 서술식 X, 약어 X, 유일한 명칭

    · 도메인(domain): 속성이 가질 수 있는 값의 범위, 데이터 타입, 크기, 제약사항

  - 관계

    · 관계는 엔터티간의 연관성을 나타낸 개념

    · 관계를 정의할 때는 인스턴스(각 행 데이터)간의 논리적인 연관성을 파악하여 정의, 엔터티를 어떻게 정의하느냐에 따라 관계는 변경되기도 함

    · 관계의 종류 ~ ERD에서는 존재관계와 행위관계를 구분하지 않는다!

      > 1. 존재적 관계

        - 한 엔터티의 존재가 다른 엔터티의 존재에 영향을 미치는 관계

        - 엔터티 간의 연관된 상태를 의미(e.g., 부서 엔터티가 삭제되면 사원 엔터티의 존재에 영향을 미침)

      > 2. 행위적 관계

        - 엔터티 간의 어떤 행위가 있는 것을 의미(e.g., 고객 엔터티에 의해 주문 엔터티가 발생)

    · 관계의 구성: 관계명, 차수(cardinality), 선택성(optionality)

    · 관계의 차수(cardinality)

      > 한 엔터티의 레코드(인스턴스)가 다른 엔터티의 레코드(인스턴스)와 어떻게 연결되는지를 나타내는 표현, 주로 1:1, 1:N, M:N 등으로 표현

      > 1. 1:1 관계

        - 완전 1:1 관계: 하나의 엔터티에 관계되는 엔터티가 반드시 하나로 존재하는 경우(e.g., 사원은 반드시 소속 부서가 있어야 함)

        - 선택적 1:1 관계: 하나의 엔터티에 관계되는 엔터티가 하나이거나 없을 수 있는 경우(e.g., 사원은 하나의 소속 부서가 있거나 아직 발령전이면 없을 수 있음)

      > 2. 1:N 관계

        - 엔터티의 하나의 행에 다른 엔터티의 값이 여러 개 있는 관계(e.g., 고객은 여러 개의 계좌를 소유할 수 있음)

      > 3. M:N 관계

        - 두 엔터티가 다대다의 연결 관계를 갖고 있음, 이 경우 조인 시 카티션 곱이 발생하므로 두 엔터티를 연결하는 연결엔터티를 추가하여 1:N 관계로 해소할 필요가 있음(e.g., 한 학생이 여러 강의를 수강할 수 있고, 한 강의 기준으로도 여러 학생을 보유할 수 있으면 두 엔터티의 연결엔터티로는 구매이력 엔터티가 필요함)

    · 관계의 페어링

      > 엔터티 안에 인스턴스가 개별적으로 관계를 가지는 것(관계 페어링)

    · 관계, 차수, 페어링 차이

      > 학생과 강의 엔터티는 관계를 가짐

      > 한 학생은 여러 강의를 수강할 수 있고, 한 강의도 여러 학생에게 수강될 수 있으므로 M:N 관계이며, 이때 차수는 M:N이 됨.

      > 인스턴스의 관계를 보면 학생 A가 강의 B231학기에 수강했고 성적은 ‘A+’를 받았다와 같은 특정한 페어링이 형성

      > 위와 같이 관계의 차수는 하나의 엔터티와 다른 엔터티 간의 레코드 연결 방식을 나타내는 반면, 관계 페어링은 두 엔터티 간의 특정 연결을 설명하고 추가 정보를 제공하는 용도로 사용

  - 식별자

    · 하나의 엔터티에 구성된 여러 개의 속성 중에 엔터티를 대표할 수 있는 속성

    · 하나의 유일한 식별자가 존재해야 함

    · 식별자는 논리 모델링에서 사용하는 용어, 물리 모델링에서는 (key)’로 표현

    · 주식별자(=기본키) 특징: 유일성, 최소성, 불변성, 존재성

      > 유일성: 주식별자에 의해 모든 인스턴스를 유일하게 구분함

      > 최소성: 주식별자를 구성하는 속성은 유일성을 만족하는 최소한의 속성

      > 불변성: 주식별자가 한번 지정되면 그 식별자의 값은 변하지 않아야 함

      > 존재성: 주식별자가 지정되면 반드시 값이 존재해야 하며 NULL 값 허용 X

    · 식별자 분류

      > 1. 대표성 여부에 따른 식별자 종류

주식별자 보조식별자
· 유일성과 최소성을 만족하면서 엔터티를 대표하는 식별자
· 엔터티 내에서 각 인스턴스를 유일하게 구분할 수 있는 식별자
· 타 엔터티와 참조관계를 연결할 수 있는 식별자
· 엔터티 내에서 각 인스턴스를 구분할 수 있는 구분자지만, 대표성을 가지지 못해 참조 관계를 연결할 수 없는 식별자
· 유일성과 최소성은 만족하지만 대표성을 만족하지 못하는 식별자

      > 2. 생성 여부에 따른 식별자의 종류

내부식별자 외부식별자
· 다른 엔터티 참조 없이 엔터티 내부에서 스스로 생성되는 식별자 · 다른 엔터티와 관계로 인하여 만들어지는 식별자 (외래키)

      > 3. 속성 수에 따른 식별자 종류

단일식별자 복합식별자
· 하나의 속성으로 구성 · 2개 이상의 속성으로 구성

      > 4. 대체 여부에 따른 식별자 종류

본질식별자 인조식별자
· 비즈니스 프로세스에서 만들어지는 식별자 · 인위적으로 만들어지는 식별자
· 자동 증가하는 일련번호 같은 형태

    · 관계간 엔터티 구분

      > 강한 개체: 독립적으로 존재할 수 있는 개체(e.g., 고객과 계좌 엔터티 중, 고객은 독립적으로 존재할 수 있음)

      > 약한 개체: 독립적으로 존재할 수 없는 개체(e.g., 고객과 계좌 엔터티 중, 계좌는 독립적으로 존재할 수 없음)

    · 식별 관계와 비식별관계

      > 1. 식별관계

        - 하나의 엔터티의 기본키를 다른 엔터티가 기본키의 하나로 공유하는 관계

        - 식별관계는 ERD에서 실선으로 표시

        - e.g., 사원과 교육이력 엔터티에서 양쪽 모두 기본키 중 일부가 사원번호

      > 2. 비식별관계

        - 강한 개체의 기본키를 다른 엔터티의 기본키가 아닌 일반 속성으로 관계를 가지는 것

        - 비식별관계는 ERD에서 점선으로 표시

        - e.g., 부서와 사원의 관계에서 부서의 부서번호(기본키)를 사원 엔터티에서는 일반키로 가짐(사원에서는 사원번호가 기본키)