추천, 2024

에디터의 선택

3NF와 BCNF의 차이점

정규화 는 관계에서 중복 을 제거하여 데이터베이스의 성능을 저하시키는 삽입, 삭제 및 업데이트 예외를 최소화하는 방법입니다. 이 기사에서는 3NF와 BCNF와 같은 두 개의 상위 정규형을 구분합니다. 3NF와 BCNF의 기본적인 차이점은 3NF가 BCNF에있는 관계와 테이블에서 전이 종속성을 제거한다는 것입니다. X가 수퍼 키인 경우에만 관계에있는 사소한 기능 종속성 X -> Y가 유지되어야합니다.

아래 비교 차트의 도움으로 3NF와 BCNF의 차이점을 논의합시다.

비교 차트

비교의 근거3NFBCNF
개념비 (非) 소수 속성은 후보 키에 전이 적으로 의존해야합니다.관계 R에서의 사소한 의존성이 X-> Y이면 X는 관계 R의 수퍼 키 여야합니다.
의존3NF는 모든 종속성을 희생하지 않고도 얻을 수 있습니다.BCNF에서는 종속성이 보존되지 않을 수 있습니다.
분해3NF에서 무손실 분해가 가능합니다.무손실 분해는 BCNF에서 달성하기 어렵습니다.

3NF의 정의

테이블 또는 관계는 테이블이 이미 2NF 에 있고 관계의 후보 키전이 적으로 의존하는 비 프라임 속성이없는 경우에만 제 3 정규형으로 간주됩니다.

따라서 3NF에서 테이블을 정규화하는 과정을 설명하기 전에 후보 키에 대해 논의 해 보겠습니다. 후보 키최소 수퍼 키, 즉 관계의 모든 속성을 정의 할 수있는 최소 속성을 갖는 수퍼 키입니다. 따라서 테이블을 정규화하는 과정에서 먼저 주어진 관계의 후보 키를 인식합니다. 후보 키의 일부인 속성프라임 속성 이며, 후보 키의 일부가 아닌 속성비 프라임 속성 입니다.

이제 우리는 관계 R (A, B, C, D, E, F)이고 우리는 관계 R에 대해 함수 의존성을 따른다.

기능적 종속성을 살펴보면 AB 가 릴레이션 R의 후보 키라는 결론을 내릴 수 있습니다. 이는 키 AB를 사용하여 릴레이션 R의 모든 속성 값을 검색 할 수 있기 때문입니다. 따라서 A, B 는 함께 후보 키를 구성 할 때 프라임 속성이 됩니다. 속성 C, D, E, F 는 모두 후보 키의 일부가 아니기 때문에 비 프라임 속성이됩니다.

non-prime 속성이 후보 키에 부분적으로 의존하지 않으므로 테이블은 2NF입니다.

그러나 속성 F 가 후보 키 AB 에 직접적으로 의존하지 않기 때문에 전이 종속성이 제공된 기능적 종속성간에 관찰됩니다. 대신, 속성 F 는 속성 D 를 통해 후보 키 AB전이 적으로 종속됩니다. 속성 D가 후보 키 AB로부터 F의 속성 값에 도달 할 수있는 어떤 값을 가질 때까지. 속성 D의 값이 NULL 인 경우 후보 키 AB의 도움으로 F의 값을 찾거나 검색 할 수 없습니다. 이것이 3NF가 관계로부터 전이 의존성을 제거해야하는 이유입니다.

따라서이 전 이적 종속성을 제거하려면 관계 R을 나눌 필요가 있습니다. 관계를 나누는 동안 항상 후보 키와 첫 번째 관계에서 해당 후보 키에 의존하는 모든 속성을 배치합니다. 다음 분할 된 관계에서 우리는 전이 의존성을 야기하는 속성과 그것에 의존하는 속성을 두 번째 관계에 배치 할 것입니다.

이제 테이블 R1과 R2는 3NF에 있습니다. 부분적이고 전 이적 인 종속성이 없기 때문입니다. 관계 R1 (A, B, C, D, E) 는 후보 키 AB를 가지며, 관계 R2 (D, E)D 를 후보 키로 갖는다.

BCNF의 정의

BCNF는 3NF보다 강하다고 간주됩니다. BCNF에있는 관계 R은 3NF 이어야합니다. 그리고 관계 R에서 A -> B아닌 관계가없는 경우 A 는 관계 R의 수퍼 키 여야합니다. 우리가 알고 있듯이 수퍼 키는 하나의 속성 또는 속성 집합을 가지고있는 키입니다. 릴레이션의 속성.

이제 BCNF를 더 잘 이해하는 예제로 넘어 갑니 다. 다음 함수 적 종속성을 갖는 관계 R (A, B, C, D, F)을 가정 해 봅시다.

관계 R을 관찰함으로써 ABF 는 릴레이션 R의 모든 속성 값을 검색 할 수 있기 때문에 ABF 가 관계 R의 후보 키 라고 말할 수 있습니다. 따라서 A, B, F프라임 속성이고 CD 비 프라임 속성입니다. 위에있는 함수 의존성에는 전이 종속성이 관찰되지 않습니다. 따라서 테이블 R은 3NF입니다.

그러나 하나의 기능적 종속성 즉, D -> F 는 BCNF의 정의를 위반하고 있으며, D -> F가 존재하면 D 는 여기에없는 수퍼 키 여야합니다. 그래서 관계 R을 나눌 것입니다.

이제 테이블 R1과 R2는 BCNF에 있습니다. 관계 R1 은 두 개의 후보 AB, R1의 사소한 기능 의존성, 즉 A → BCD와 B → ACD를 가지며, A와 B는 관계의 수퍼 키인 BCNF를 유지합니다. 관계 R2D후보 키로, D -> F는 D가 수퍼 키이므로 BCNF에도 적용됩니다.

3NF와 BCNF의 주요 차이점

  1. 3NF는 non-prime 속성이 관계의 후보 키에 전이 적으로 종속되어서는 안된다고 명시합니다. 다른 한편 BCNF는 관계에 대해 사소한 기능 의존성 X -> Y가 존재한다면; X는 슈퍼 키 여야합니다.
  2. 3NF는 관계의 종속성을 희생하지 않고도 얻을 수 있습니다. 그러나 BCNF를 얻는 동안 종속성이 유지되지 않을 수 있습니다.
  3. 3NF는 이전 테이블에서 정보를 잃지 않고 얻을 수 있지만 BCNF를 얻는 동안 이전 테이블에서 일부 정보가 풀릴 수 있습니다.

결론:

BCNF는 테이블을 더 정상화하는 데 도움이되는 3NF보다 훨씬 제한적입니다. 3NF의 관계에는 BCNF에 의해 추가로 제거되는 최소 중복이 있습니다.

Top