Computer >> 컴퓨터 >  >> 프로그램 작성 >> SQL

Boyce–Codd 정규형(BCNF)


BCNF는 제3정규형(3NF)의 확장이며 3NF보다 약간 더 강력합니다.

P -> Q가 사소한 기능 종속성이고 P가 R에 대한 수퍼키인 경우 관계 R은 BCNF에 있습니다.

관계가 BCNF에 있는 경우 함수 종속성을 기반으로 하는 중복성이 제거되었지만 일부 중복성은 여전히 ​​존재함을 의미합니다.

예를 들어 보겠습니다 -

<스포츠클럽>

그라운드
시작_시간
End_Time
패키지
G01
07:00
09:00
골드
G01
10:00
12:00
골드
G01
10:30
11:00
브론즈
G02
10:15
11:15
실버
G02
08:00
09:00
실버


위의 관계는 1NF, 2NF, 3NF에 있지만 BCNF에는 없습니다. 여기에 이유가 있습니다 -

기능 종속성 {패키지->접지}

이것은 Ground가 의존하는 결정 속성 패키지가 후보 키도 후보 키의 상위 집합도 아닙니다.

<패키지>

패키지
그라운드
골드
G01
실버
G02
브론즈
G01


<내일 예약>

그라운드
시작 시간
End_Time
G01
07:00
09:00
G01
10:00
12:00
G01
10:30
11:00
G02
10:15
11:15
G02
08:00
09:00


이제 위의 테이블은 BCNF에 있습니다.

<패키지> 후보 키 테이블은 패키지 및 접지입니다.

후보 키 테이블은 {Ground, Begin_Time}입니다. 및 {Ground, End_Time}

에서 Package를 키로 사용했기 때문에 예외가 제거되었습니다. 관계.