- 3정규형
- 3정규형은 이행적 종속성과 관련 있다.
- 이행적 종속성(Transitive Dependency): 만약 Y가 X에 종속되고 Z가 Y에 종속되면 Z는 Y에 종속된다고 추론하는 것
- 즉 X → Y이고 Y → Z이면 X → Z가 성립한다. 이때 Y는 릴레이션의 후보 식별자도 아니고 후보 식별자의 일부도 아닌 일반 속성이다.
- 일반 속성(비식별 속성) 간의 종속 관계를 분해하면 3정규형이 된다.
- 위 그림에서 속성 C는 일반 속성이면서 속성 D의 결정자(Determinant) 이기도 하다. 속성 D는 종속자(Dependent)이면서 주 식별자의 이행 종속 속성이다. 즉 속성 D는 주 식별자인 A와 B에 간접 종속돼 있다. 릴레이션은 직접적인 함수 종속에 의해서 분해해야 한다. 즉 아래와 같이 속성 C와 D를 분해하여 릴레이션을 생성한다.
- 아래 모델은 주문 엔터티에서 일반 속성인 고객ID와 고객명이 함수 종속 관계이다. 즉 고객ID를 알면 고객 이름이 하나만 결정되므로 고객명은 고객ID에 종속적인 속성이다.
- 후보 식별자가 아닌 일반 속성 간의 종속이 발생했으므로 고객명 속성은 주문 엔터티에서 삭제하고 고객ID를 주 식별자로 하는 고객 엔터티를 생성하여 고객명을 속성을 추가한다. 새로운 엔터티인 고객 엔테티와 주문 엔터티를 1:M 관계로 생성한다. 아래 모델과 같다.
- 보이드코드 정규형
- Raymond F. Boyce와 Edgar F. Codd에 의해서 정립된 BC정규형(Boyce-Codd Normal Form)은 3정규형을 보강한 정규형이다.
- 3정규형보다 드물게 발생하지만, 실무에 적용하기 이상적이라고 언급되는 정규형 중의 하나이다.
- 모든 결정자(Determinant)는 주 식별자이어야 한다.
- 릴레이션에 존재하는 종속자가 후보 식별자이면 BC 정규형이 아님
- 위 릴레이션에서 일반속성 C의 종속자 B가 주 식별자이므로 BC 정규형에 어긋남
- 위 릴레이선에서 주 식별자는 A이고 B, C가 후보식별자일 때 D가 C의 결정자이므로 BC 정규형이 아님
- 위 두 릴레이션의 BC 정규형은 각각 아래와 같다. 식별자이지만 종속자인 속성은 원본 릴레이션에서 분리돼 새로운 릴레이션의 종속자가 된다.
- 학생의 학점을 관리하는 아래의 릴레이션을 살펴보면,
- 일반 속성인 교수번호가 주 식별자에 속한 과목명을 결정하므로 BC 정규형이 아니며 이를 BC 정규형으로 만들면 아래와 같다.
- 코드 데이터는 코드 엔터티에서 통합해서 관리하는 것이 바람직하다.
- 과목이나 업체와 같은 엔터티는 실체 성격의 데이터이므로 관리 속성이나 데이터가 적더라도 별도의 엔터티로 분리해 관리하는 것이 바람직하다.
'IT 와 Social 이야기 > Relational Data Modeling 프리미엄 가이드 - 김기창' 카테고리의 다른 글
05 데이터 통합 (Generalization) (0) | 2019.12.18 |
---|---|
04 정규화 (Normalization) 5 (1) | 2019.10.21 |
04 정규화 (Normalization) 3 (0) | 2019.09.30 |
04 정규화 (Normalization) 2 (1) | 2019.09.23 |
04 정규화 (Normalization) (0) | 2019.09.15 |