将1NF表规范化为3NF

时间:2014-12-08 11:24:51

标签: database database-normalization third-normal-form

我正在课堂上学习规范化。我在article here

中找到了这个练习

它要求将下表标准化为3NF enter image description here

我就是这样做的。enter image description here

我想知道我组织表格的方式是否正确。

1 个答案:

答案 0 :(得分:0)

  

我想知道我组织表格的方式是否正确。

不,不是。

首先,通过BCNF的规范化基于功能依赖性。您还没有发现任何功能依赖。

其次,规范化永远不会引入在您开始的关系中没有的新属性。您介绍了新属性" sFirstName"," sLastName"," dateOfBirth"," tuteId"," tutorName", " bookId"," bookName"。

最后,像您链接的在线练习并不是非常有用。作者显然希望您从所提供的小表中获得所有功能依赖性,但除非数据具有代表性,否则您无法可靠地执行此操作。例如,您可以通过检查确定Room-> Date,但在现实世界中没有多大意义。

规范化基于语义 - 数据意味着什么?什么"日期"这意味着什么数据支持所有这些解释。 (还有更多。)

  • 房间的唯一使用日期。 (间 - >日期)
  • 将使用房间的第一个日期。 (间 - >日期)
  • 出版图书的日期(书籍 - >日期)
  • 学生注册单位的日期(StudentId,UnitId-> Date)

完全根据数据,您可以声明等级 - >日期,但这没有任何意义。这样的废话会告诉您数据不具代表性,并且您只能使用作者未提供提供的信息来规范化表格。