0

이번 주 중반에 데이터베이스가 있으며 BCNF 위반을 식별하는 데 문제가 있습니다. 나는 관계를 분해하고 열쇠가 무엇인지, 그리고 수퍼 키인지 찾는 방법을 안다. 내포 된 FD를 작성할 수도 있습니다. 나는 다음 비디오를보고 있었다 : https://www.youtube.com/watch?v=hTFyG5o8-EA. BCNF에 대한 위반 사항은 어떻게 지적합니까?

다음과 같은 관계에 BCNF 알고리즘을 적용하기 시작 설명, 레이디 그것을 요약하면 (그녀는 학생의 예를 사용하지만 나는 그것을 단순화하는 문자로 변환 한) :

R (A를 B를 FDG : A → BCG, G → H, D → EF를 사용하여 C, D, E, F, G,

나는 그 열쇠가 AD + = ABCDEFGH이므로 키가 AD라는 것을 알고 있습니다. > EF (D + = DEF) // 어떤 위반 그런데 왜 -

R1 = D :

BCNF 시도 # 1 : 그녀는 모든 FDS 위반이다 제출하고 알고리즘을 적용하기 시작 있다고? 그것은 단지 위반이 아니 었습니까?

R2 = ABCDEFG - (DEF - D) = ABCDGH // 위반 이유는 무엇입니까? 두 키가 모두 들어 있습니다. R2에


BCNF 시도 # 2 :

R3 = G -> H (G + = GH) // 아무 위반 두 속성이 GH 때문에, 내가 믿는

R4 = ABCDG // 위반은 있지만 그 이유는 모르겠습니다.


R4에 BCNF 시도 # 3 :

R5 = A -> BCG // 전혀 위반하지

R6 = AD // 아무 위반 (?) (?)

최종 관계 : R1, R2, R5, R6.

답변

2

R의 위반은 부분적이며 전이적인 기능 종속성입니다. 이 FD가 별도의 관계로 추출되면 더 이상 부분 또는 전 이적이 아닙니다. 이것이 우리가 정상화하는 이유이기 때문에 고립되었을 때 위반이 중지되는 것은 놀랄 일이 아닙니다.

R1/R2 : R에서 EFDAD 키 후보의 일부를 달려 있으므로이 부분 의존성이다. R1으로 추출 할 때 D을 후보 키로 사용하면 종속성이 더 이상 부분적이지 않습니다. R의 나머지는 여전히 부분 FD (A -> BCG) 및 전이 FD (A -> G -> H)를 포함하는 R2이됩니다.

R3/R4는 : R2에서는 그렇게 G -> HA -> G -> H는 전이 FD이다.R3으로 추출하면 오랜 전이가 발생하지 않습니다. R2의 나머지 부분은 R4이되지만 여전히 부분적인 FD (A -> BCG)를 포함합니다.

R5/R6는 : R4에서 BCGAD 키 후보의 일부이다 A에 의존한다. A을 후보 키로 사용하여 R5으로 추출하면 종속성이 더 이상 부분적이지 않습니다. R4의 나머지 부분은 의미가없는 FD가없는 R6이됩니다.

최종 답은 R1, R3, R5 및 R6이어야합니다.

추신. 모든 BCNF 위반이 부분 또는 이행 적 기능 종속성으로 분류 될 수있는 것은 아닙니다.

+0

내 최종 답변을 수정하고 설명해 주셔서 감사합니다. – mamajava

+0

@philipxy 부분적이고 전이성 인 FD가 BCNF를 위반한다는 것을 보여주는 것은 어렵지 않습니다. 제 요점은 BCNF 위반 사항을 분류하는 것이 아니라 OP 문제의 위반 사항에 대한 유효한 (익숙한) 설명을 제공하는 것이 었습니다. 이러한 문제는 방금 이러한 용어로 설명 될 수 있습니다. 완성을 위해 PS를 추가했습니다. – reaanb

+0

@reaanb 2NF를 위반하기 때문에 CK의 비 기본 속성의 부분 종속성이 BCNF를 위반한다는 것을 쉽게 나타낼 수 있습니다. 그러나 이들은 SK가 아닌 FD입니다. 부분적, 전이 적 및 기타 종속성이 SK가 아닌 FD를 참조하지 않고 BCNF를 위반 하는지를 정확하게 보여주는 것은 쉽지 않습니다. 그리고 후자 * 문제 때문에, 왜 귀찮게합니까? 3NF의 친숙한 개념은 3NF를 사용하는 정의와 결정된 집합과 결정 집합 사이의 집합 차이의 모든 요소를 ​​기본 속성으로 사용하지 않는 한 3NF에서 익숙하지 않은 개념으로 유용하지 않습니다. 전 이적. – philipxy