아래 비교 차트의 도움으로 3NF와 BCNF의 차이점을 논의합시다.
비교 차트
비교의 근거 | 3NF | BCNF |
---|---|---|
개념 | 비 (非) 소수 속성은 후보 키에 전이 적으로 의존해야합니다. | 관계 R에서의 사소한 의존성이 X-> Y이면 X는 관계 R의 수퍼 키 여야합니다. |
의존 | 3NF는 모든 종속성을 희생하지 않고도 얻을 수 있습니다. | BCNF에서는 종속성이 보존되지 않을 수 있습니다. |
분해 | 3NF에서 무손실 분해가 가능합니다. | 무손실 분해는 BCNF에서 달성하기 어렵습니다. |
3NF의 정의
테이블 또는 관계는 테이블이 이미 2NF 에 있고 관계의 후보 키 에 전이 적으로 의존하는 비 프라임 속성이없는 경우에만 제 3 정규형으로 간주됩니다.
따라서 3NF에서 테이블을 정규화하는 과정을 설명하기 전에 후보 키에 대해 논의 해 보겠습니다. 후보 키 는 최소 수퍼 키, 즉 관계의 모든 속성을 정의 할 수있는 최소 속성을 갖는 수퍼 키입니다. 따라서 테이블을 정규화하는 과정에서 먼저 주어진 관계의 후보 키를 인식합니다. 후보 키의 일부인 속성 은 프라임 속성 이며, 후보 키의 일부가 아닌 속성 은 비 프라임 속성 입니다.
이제 우리는 관계 R (A, B, C, D, E, F)이고 우리는 관계 R에 대해 함수 의존성을 따른다.
non-prime 속성이 후보 키에 부분적으로 의존하지 않으므로 테이블은 2NF입니다.
그러나 속성 F 가 후보 키 AB 에 직접적으로 의존하지 않기 때문에 전이 종속성이 제공된 기능적 종속성간에 관찰됩니다. 대신, 속성 F 는 속성 D 를 통해 후보 키 AB 에 전이 적으로 종속됩니다. 속성 D가 후보 키 AB로부터 F의 속성 값에 도달 할 수있는 어떤 값을 가질 때까지. 속성 D의 값이 NULL 인 경우 후보 키 AB의 도움으로 F의 값을 찾거나 검색 할 수 없습니다. 이것이 3NF가 관계로부터 전이 의존성을 제거해야하는 이유입니다.
따라서이 전 이적 종속성을 제거하려면 관계 R을 나눌 필요가 있습니다. 관계를 나누는 동안 항상 후보 키와 첫 번째 관계에서 해당 후보 키에 의존하는 모든 속성을 배치합니다. 다음 분할 된 관계에서 우리는 전이 의존성을 야기하는 속성과 그것에 의존하는 속성을 두 번째 관계에 배치 할 것입니다.
BCNF의 정의
BCNF는 3NF보다 강하다고 간주됩니다. BCNF에있는 관계 R은 3NF 이어야합니다. 그리고 관계 R에서 A -> B 가 아닌 관계가없는 경우 A 는 관계 R의 수퍼 키 여야합니다. 우리가 알고 있듯이 수퍼 키는 하나의 속성 또는 속성 집합을 가지고있는 키입니다. 릴레이션의 속성.
이제 BCNF를 더 잘 이해하는 예제로 넘어 갑니 다. 다음 함수 적 종속성을 갖는 관계 R (A, B, C, D, F)을 가정 해 봅시다.
그러나 하나의 기능적 종속성 즉, D -> F 는 BCNF의 정의를 위반하고 있으며, D -> F가 존재하면 D 는 여기에없는 수퍼 키 여야합니다. 그래서 관계 R을 나눌 것입니다.
3NF와 BCNF의 주요 차이점
- 3NF는 non-prime 속성이 관계의 후보 키에 전이 적으로 종속되어서는 안된다고 명시합니다. 다른 한편 BCNF는 관계에 대해 사소한 기능 의존성 X -> Y가 존재한다면; X는 슈퍼 키 여야합니다.
- 3NF는 관계의 종속성을 희생하지 않고도 얻을 수 있습니다. 그러나 BCNF를 얻는 동안 종속성이 유지되지 않을 수 있습니다.
- 3NF는 이전 테이블에서 정보를 잃지 않고 얻을 수 있지만 BCNF를 얻는 동안 이전 테이블에서 일부 정보가 풀릴 수 있습니다.
결론:
BCNF는 테이블을 더 정상화하는 데 도움이되는 3NF보다 훨씬 제한적입니다. 3NF의 관계에는 BCNF에 의해 추가로 제거되는 최소 중복이 있습니다.