2014-12-08 3 views
0

정규화를 배우고 있습니다. 그리고 이것으로 운동을 찾았습니다 article here1NF 테이블을 3NF로 정규화

다음 표를 3NF로 정규화하도록 요청합니다.
enter image description here

이것은 내가 한 것과 같습니다. enter image description here

내가 테이블을 구성한 방식이 맞는지는 알고 싶습니다.

+0

정규화에는 "bookId"및 "tuteId"와 같은 * 새 * 열 만들기가 필요하지 않습니다. –

답변

0

제가 테이블을 구성한 방식이 맞는지는 알고 싶습니다.

아니요.

먼저 BCNF를 통한 정규화는 기능 종속성을 기반으로합니다. 기능 의존성을 확인하지 않았습니다.

두 번째로, 정규화로 시작한 관계에없는 새로운 특성이 도입되지 않습니다. 새 속성 "sFirstName", "sLastName", "dateOfBirth", "tuteId", "tutorName", "bookId"및 "bookName"을 도입했습니다.

마지막으로 링크 된 것과 같은 온라인 연습은 그리 유용하지 않습니다. 필자는 제공된 작은 테이블에서 모든 기능적 종속성을 파생시킬 것을 분명히 예상하지만 데이터가 대표적인 경우가 아니면 신뢰할 수있는 방식으로 수행 할 수는 없습니다. 예를 들어, 검사를 통해 Room-> Date를 결정할 수 있지만 현실 세계에서는별로 의미가 없습니다.

정규화는 의미론을 기반으로합니다. 의 의미는입니까? 여기서 "날짜"는 무엇을 의미합니까? 데이터는 모두 이러한 해석을 지원합니다. (그 이상)

  • 방만 사용할 수있는 날짜입니다. (방 -> 날짜)
  • 방을 처음 사용할 날짜. (룸 -> 날짜)만을 기반으로 한 책이 출판되었다 ​​
  • 날짜 (Book-> 일)
  • 학생이 단위에 가입 날짜 (StudentId, UnitId-> 일)

데이터, 당신은 Grade-> Date라고 주장 할 수는 있지만 그건 의미가 없습니다. 말도 안되는 것은 데이터가 대표가 아니며 저자가을 제공하지 않았다는 정보 인 을 사용하여 테이블을 정상화 할 수 있음을 나타냅니다.