BCNF

2013-05-12 3 views
6

내가 BCNF가 무엇인지 이해하려고 노력하고 있는데이 같은 관계가 있습니다 BCNF

학생

(아이디, 주민등록번호, 이메일, 이름, 성)

  • ID가 NOT NULL 및 자동 증가 속성와 차 대용 키가 어디
  • SSN은이다 null이 아닌 고유 속성 키
  • 전자 메일은 null이 아닌 고유 키입니다..

BCNF를 위반하는 것이 있습니까? 그렇다면 어떻게하면 더 나은 디자인으로 이러한 상황을 극복 할 수 있습니까?

내 함수 종속을 작성하려고하지만, 내가 틀렸다면 수정하시기 바랍니다하고

편집 할 수 있습니다.

다른 속성을 결정하는 세 가지 속성이 있으므로 방정식의 왼쪽과 오른쪽에 ssn과 전자 메일이 모두 있다는 것이 혼란 스럽습니다. 이 관계는 BCNF에 있지 않은 것 같다하지만 뭔가 잘못 :)

id -> (ssn, email, name, surname) 
ssn -> (id, email, name, surname) 
email -> (id, ssn, name, surname) 

답변

1

예, 귀하의 테이블은 BCNF입니다. 겹치는 후보 키가 없기 때문입니다. 즉, 서로 다른 두 개의 키에 나타나는 속성이 없기 때문입니다.

키의 일부를 구성하는 다른 속성 인 X (예 : (SSN, X) 및 (전자 메일, X) - 그러면 주어진 SSN 및 전자 메일 쌍에 대해 X가 동일해야하므로 테이블이 BCNF를 실패합니다. 이 키 정의는 주어진 SSN과 전자 메일에 대해 다른 X 값을 허용합니다.

BCNF에 대한 설명은 this answer을 참조하십시오.

+0

sedran의 종속성 세트가 완전하면 yes입니다. 그러나 일반적으로 키가 겹치지 않는다고해서 자동으로 관계가 BCNF에 있다는 것을 의미하지는 않습니다. 비 핵심 종속성 또는 부분 키 종속성이 발생한 경우 BCNF를 충족시키지 못합니다. – sqlvogel

+0

@sqlvogel - 중복되는 키가 없으면 어떻게 BCNF에 실패 할 수 있는지 생각할 수 없습니다. 예를 보여 주시겠습니까? –

+0

예. A와 B가 비 보증 (nonprime) 인 종속성 A -> B는 후보 키가 무엇이든간에 BCNF (및 3NF)를 위반하게됩니다. – sqlvogel

2

제대로 귀하의 질문에 대답 할 수있는 방법은 함수 종속이 적용되어있는 것을 확인하는 것입니다이 있어야합니다. 의존성이 무엇이라고 생각하는지 적어 두십시오. 모든 사소한 종속성의 왼쪽이 수퍼 키인 경우 관계식은 BCNF를 만족시킵니다.

+0

감사합니다. 내 질문을 편집했습니다. – sedran

-4

emailaddress 또는 SSN의 고유 또는 Null 허용 제약 조건이 너무 강합니다. 당신은 그들을 시행 할 수 있지만, 그들을 부과해서는 안됩니다. (생각 : 외국인 학생) 일반적으로 SSN 경우와 같이 고유 한 경우에도 사용자의 관할 지역에 있지 않은 키 도메인에 제약 조건을 적용하는 것은 좋지 않습니다.

예를 들면 다음과 같습니다. 어떤 사람이 학생으로 입대하기를 원한다고 가정하지만 SSN이 다른 사람에 의해 이미 사용 중이며 오타가 원인 일 수 있습니다. 새로운 학생을 거부해야합니까, 아니면 이전 학생을 삭제해야합니까? (또는 SSN 필드가 NON-unique 또는 NULLable이되도록 허용해야합니까?)

업데이트/최종 참고 사항 :이 항목은 "datatbase-design"및 "data-normalization"태그가 지정되어 있습니다. 나는 논쟁의 여지가있는 디자인 선택에 대해 반응했다.다른 사람들은 당신에게 표준화 된 하지만 여전히 잘못된 모델을 제공합니다 나쁜 데이터 모델을 정규화

합니다 (고유 후보 키와 NOT NULL 가정 주어진 사소한)이 BCNF 측면에 반응하려고했습니다.

+2

키가 이미 주어지기 때문에 특정 키를 선택하는 것이 현명하거나 그렇지 않은 경우는 정규화 질문과 관련이 없습니다. 분명히 학생들에게 고유 한 이메일 주소와 고유 한 세금 ID를 요구하는 것은 나쁜 생각이 아닙니다. 실제 세계 시스템은 * 쉽게 * 쉽게 기억, 검증 및 비교적 안정적이기 때문에 고유 한 전자 메일 주소를 식별자로 요구합니다. 그리고 중복 된 SSN이 함께 나타나면 그것을 허용하지 않는 것이 중요합니다. 누군가가 그러한 중복 중 어느 것이 잘못 입력되었거나 유효하지 않은지 확인해야합니다. – sqlvogel

+0

OP는 "외국"도메인에 대한 암시 적 가정을하기 때문에 장난감 예이고 IMHO * bad * 장난감 예입니다. 실제 장난감 예제의 경우 교사는 실제 장난감 문제 (예 : 스도쿠, 스크 라블 또는 십자말 풀이)를 사용해야합니다. – wildplasser

+3

흠, Amazon 또는 Microsoft에 시스템에 고유 한 이메일 주소가 필요하다는 사실을 알리면 장난감이됩니다. ! 저는 당신이 정규화 이론에서 완벽하게 현실적인 예를 설정하는 문제에 대한 가정을하고 있다고 생각합니다. – sqlvogel

관련 문제