2016-06-19 5 views
0

이 테이블을 정상화하고 지금까지 2NF까지 얻을 수 있었지만 어떻게하면 3NF로 만들 수 있는지 혼란스러워합니다. 기본 키는 굵게 표시됩니다.이 관계를 세 번째 정규형 (3NF)으로 만들려면 어떻게해야합니까?

1NF : 약속 (StaffNo, DNAME, PatName, PatNum, PatTelNo, ApptDateTime, RoomNo, RoomExt)

2NF :

박사 (StaffNo, DNAME)

환자 (PatName, , PatNum, PatTelNo)

룸 (RoomNo, RoomExt)

약속 (StaffNo, PatNum, RoomNo, ApptDateTime)

는 여기 이적 종속성을 볼 정말 수 아니에요. 어떻게 이것을 3NF로 만들 수 있습니까?

편집 :

내가 어떤 생각을했지만 내 대답이 맞다면 내가 확인하고 싶습니다 :

박사 (StaffNo, DNAME)

환자 (PatNum, PatTelNo)

PatientDetails (PatTelNo, PatName)

룸 (RoomNo, RoomExt)

약속 (StaffNo, PatNum, RoomNo, ApptDateTime)

+0

정규화의 경우 기능 종속성을 나열하여 시작해야합니다. 귀하의 편집 내용은 상식에 어긋나지 만, FD가 없으면 귀하의 의견에 대한 나의 가정 일뿐입니다. – reaanb

답변

0

는 여기 이적 종속성을 볼 정말 수 아니에요. 어떻게 이것을 3NF로 만들 수 있습니까?

나는 기능적 종속성에 대해 숙련되고 추측해야하지만 그 추측을 바탕으로 정규화에 대한 몇 가지 사항을 오해한다고합니다.

당신은 제목 "2NF"에서이 일을 가지고 있지만,

박사 (StaffNo, DNAME)가, 아마 6NF에서

환자입니다 (PatName, PatNum, PatTelNo는) 아마에 5NF,

룸 (RoomNo, RoomExt는) 6NF 아마, 그리고

Appointm (직원 번호, PatNum, RoomNo, ApptDateTime)은 아마도 6NF입니다.

"나는 부분 키 종속성이 없으므로 각각 2NF에 있습니다."라고 말한 것처럼 보입니다. 그러나 부분 키 종속성이 없다고해서 이것이 의미는 아닙니다. 관계가 이상이고 적어도 2NF 인 것을 의미합니다.

5NF에있는 관계는 4NF, BCNF, 3NF, 2NF 및 1NF에도 있습니다. 2NF 및 더 높은의 관계를 정규화하고 3NF 으로 정규화 한 다음으로 정규화 할 수 있다는 생각은 일반적인 오해입니다.

나중에 편집하는 것은 거의 실수입니다. 그것을 정당화 할 수있는 기능 의존성은 PatTelNo -> PatName뿐입니다. 일반적인 경우에는 사실이 아닙니다.

기능적 종속성이 무엇인지 모르거나 중요하지 않거나 특성 이름에 정규화를 기반으로한다고 생각하기 때문에 기능 종속성을 제공하지 않습니다. 그러나 함수 종속성을 알지 못하면 정규화를 수행 할 수 없습니다. 그들은 중요하지 않고 중요합니다. 속성 이름은 그 속성과 아무 관련이 없습니다.