logo

보이스-코드 정규형(BCNF)

전제 조건: 첫 번째 정규형 , 두 번째 정규형 , 제3정규형

2NF 및 3NF의 일반 정의를 적용하면 하나 이상의 후보 키를 위반하는 종속성으로 인해 발생하는 추가 중복성을 식별할 수 있습니다. 그러나 이러한 추가 제약에도 불구하고 3NF 관계에 중복성을 발생시키는 종속성이 여전히 존재할 수 있습니다. 3NF의 이러한 약점으로 인해 더 강력한 정규 형식이 제시되었습니다. 그만큼 보이스-코드 정규형(Codd, 1974) .



3NF는 관계형 데이터베이스에 적합한 정규형이지만 X가 주어진 관계의 후보 키가 아닌 경우 X->Y 기능 종속성으로 인해 이 (3NF) 정규형이 100% 중복성을 제거하지 못할 수 있습니다. 이는 BCNF(Boyce-Codd Normal Form)를 통해 해결할 수 있습니다.

보이스-코드 정규형(BCNF)

BCNF(Boyce–Codd Normal Form)는 관계의 모든 후보 키를 고려하는 기능적 종속성을 기반으로 합니다. 그러나 BCNF에는 3NF의 일반적인 정의와 비교하여 추가 제약 조건도 있습니다.

BCNF 규칙

규칙 1: 테이블은 세 번째 정규형이어야 합니다.



규칙 2: X는 주어진 관계에서 모든 기능적 종속성(FD) X->Y에 대한 슈퍼키여야 합니다.

메모: 관계가 BCNF에 있는지 테스트하기 위해 모든 결정자를 식별하고 그것이 후보 키인지 확인합니다.

DBMS의 BCNF



다음과 같은 유사한 계층 구조를 발견했습니다. 촘스키 정규형 계산 이론에서. 이제 위의 계층 구조를 주의 깊게 살펴보세요. 이라고 추론할 수 있다 BCNF의 모든 관계는 3NF에도 있습니다. . 달리 말하면, 3NF의 관계는 BCNF에 있을 필요가 없습니다. 이 말씀을 잠시 생각해 보십시오.

함수적 종속성을 갖는 주어진 관계 R의 가장 높은 정규형을 결정하기 위한 첫 번째 단계는 BCNF 조건이 유지되는지 확인하는 것입니다. R이 BCNF에 있는 것으로 확인되면 해당 관계도 BCNF에 속한다고 안전하게 추론할 수 있습니다. 3NF , 2NF, 그리고 1NF 계층구조가 보여주듯이요. 1NF는 제한이 가장 적습니다. 즉, 각 튜플에 원자 값을 갖는 관계 R만 필요합니다. 2NF에는 약간 더 제한적인 제약이 있습니다.

3NF는 처음 두 정규형보다 더 제한적인 제약을 갖고 있지만 BCNF보다는 덜 제한적입니다. 이러한 방식으로 계층 구조를 아래로 이동할 때 제한이 증가합니다.

여기서는 BCNF의 속성을 이해할 수 있는 몇 가지 기본 예를 논의하겠습니다. 여기서는 여러 가지 예를 논의하겠습니다.

실시예 1

학생의 데이터가 언급된 학생 데이터베이스를 고려해 보겠습니다.

This_ID This_Branch Stu_Course 지점 번호 Stu_Course_No
101 컴퓨터 과학 및 공학 DBMS B_001 201
101 컴퓨터 과학 및 공학 컴퓨터 네트워크 B_001 202
102 전자통신공학과 VLSI 기술 B_003 401
102 전자통신공학과 이동통신 B_003 402

위의 기능적 종속성은 다음과 같습니다.

Stu_ID −>Stu_Branch Stu_Course −> {Branch_Number, Stu_Course_No}>

위 표의 후보 키는 다음과 같습니다. {This_ID, This_Course}

이 테이블이 BCNF에 없는 이유는 무엇입니까?

위의 테이블은 BCNF에 없습니다. 왜냐하면 Stu_ID나 Stu_Course 모두 ​​슈퍼 키가 아니라는 것을 알 수 있기 때문입니다. 위에서 언급한 규칙에 따르면 테이블이 BCNF에 있으려면 기능적 종속성 X−>Y에 대해 X가 슈퍼 키에 있어야 하며 여기서 이 속성이 실패하는 속성을 따라야 합니다. 이것이 바로 이 테이블이 BCNF에 없는 이유입니다. .

BCNF를 만족시키는 방법은 무엇입니까?

BCNF에서 이 테이블을 만족시키려면 이를 추가 테이블로 분해해야 합니다. 다음은 이 테이블을 BCNF로 변환하는 전체 절차입니다. 먼저 이 메인 테이블을 두 개의 테이블로 나누어 보겠습니다. This_Branch 그리고 Stu_Course 테이블.

Stu_Branch 테이블

This_ID This_Branch
101 컴퓨터 과학 및 공학
102 전자통신공학과

이 테이블의 후보 키: This_ID .

이런

Stu_코스 테이블

Stu_Course 지점 번호 Stu_Course_No
DBMS B_001 201
컴퓨터 네트워크 B_001 202
VLSI 기술 B_003 401
이동통신 B_003 402

이 테이블의 후보 키: Stu_Course .

Stu_ID에서 Stu_Course_No 테이블로

This_ID Stu_Course_No
101 201
101 202
102 401
102 402

이 테이블의 후보 키: {Stu_ID, Stu_Course_No}.

추가 테이블로 분해한 후 이제 BCNF에 있습니다. 즉 기능적 종속성 X−>Y에서 X는 슈퍼 키 조건을 전달하기 때문입니다. 슈퍼 키.

실시예 2

FD가 다음과 같이 설정된 관계 R(A, B, C, D, E)의 가장 높은 정규형을 찾습니다.

{ BC->D, AC->BE, B->E }>

설명:

  • 1 단계: 보시다시피 (AC)+ ={A, C, B, E, D}이지만 그 하위 집합 중 어느 것도 관계의 모든 속성을 결정할 수 없으므로 AC가 후보 키가 됩니다. A 또는 C는 관계의 다른 속성에서 파생될 수 없으므로 후보 키 {AC}는 1개만 있습니다.
  • 2 단계: 프라임 속성은 이 예에서 후보 키 {A, C}의 일부인 속성이고 다른 속성은 이 예에서 프라임이 아닌 {B, D, E}입니다.
  • 3단계: 관계형 DBMS는 다중 값 또는 복합 속성을 허용하지 않으므로 관계 R은 첫 번째 정규 형식입니다.

BC->D가 제2정규형(BC는 후보키 AC의 진부분집합이 아님)이고 AC->BE가 제2정규형(AC는 후보키)이고 B->E이기 때문에 관계는 제2정규형이다. 2차 정규형입니다(B는 후보 키 AC의 진부분집합이 아닙니다).

관계는 ~ 아니다 BC->D(BC는 슈퍼 키도 아니고 D도 프라임 속성이 아님) 및 B->E(B도 슈퍼 키도 아니고 E도 프라임 속성도 아님)에서는 3차 정규형이지만 , FD의 LHS는 슈퍼 키이거나 RHS가 주요 속성이어야 합니다. 따라서 관계의 가장 높은 정규형은 2차 정규형이 됩니다.

메모: 주요 속성은 BCNF 관계의 키에 전이적으로 종속될 수 없습니다.

일부 관계 R의 기능적 종속성을 고려하십시오.

AB ->C C ->B AB ->B>

R의 유일한 후보 키가 AB인 것으로 알려져 있다고 가정합니다. 주요 속성 B가 C를 통해 키 AB에 전이적으로 의존하므로 위의 종속성이 전이적 종속성이라는 결론을 내리려면 주의 깊은 관찰이 필요합니다. 이제 첫 번째와 세 번째 FD는 둘 다 후보 키(또는 간단히 말해서)를 포함하므로 BCNF에 있습니다. KEY) 왼쪽에 있습니다. 그러나 두 번째 종속성은 BCNF가 아니지만 오른쪽에 프라임 속성이 있기 때문에 확실히 3NF에 있습니다. 따라서 세 개의 FD가 모두 3NF가 되기 위한 필수 조건을 충족하므로 R의 가장 높은 정규형은 3NF입니다.

실시예 3

예를 들어 관계 R(A, B, C)를 생각해 보세요.

A ->기원전, B -> A>

A와 B는 모두 슈퍼 키이므로 위의 관계는 BCNF에 있습니다.

메모: 무손실 조인 조건에서는 BCNF 분해가 항상 가능하지 않을 수 있습니다. 예를 들어, 기능적 종속성을 갖는 관계 R(V, W, X, Y, Z)은 다음과 같습니다.

V, W ->XY, Z -> X W -> Y>

BCNF 분해를 유지하는 종속성을 만족시키지 않습니다.

메모: 중복을 완전히 제거하는 것이 항상 가능한 것은 아니기 때문에 BCNF 관계에 중복이 여전히 존재하는 경우가 있습니다.

4차 정규형과 5차 정규형과 같은 일부 고차 정규형도 있습니다.

자세한 내용은 4차 및 5차 정규형을 참조하세요.