본문 바로가기
IT 와 Social 이야기/Relational Data Modeling 프리미엄 가이드 - 김기창

04 정규화 (Normalization) 4

by manga0713 2019. 10. 21.

 

 

 

 

- 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 정규형으로 만들면 아래와 같다.

 

 

 

 

 

  • 코드 데이터는 코드 엔터티에서 통합해서 관리하는 것이 바람직하다.
  • 과목이나 업체와 같은 엔터티는 실체 성격의 데이터이므로 관리 속성이나 데이터가 적더라도 별도의 엔터티로 분리해 관리하는 것이 바람직하다.