0

我在课堂上学习规范化。我在这里的这篇文章中找到了这个练习

它要求将下表标准化为 3NF。
在此处输入图像描述

我就是这样做的。在此处输入图像描述

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

4

1 回答 1

0

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

不,这不对。

首先,通过 BCNF 进行规范化是基于函数依赖的。您尚未确定任何功能依赖项。

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

最后,您链接到的在线练习并不是很有用。作者显然希望您从提供的小表中导出所有功能依赖关系,但除非数据具有代表性,否则您无法可靠地做到这一点。例如,您可以通过检查确定 Room->Date,但在现实世界中没有多大意义。

规范化是基于语义的——数据是什么意思?这里的“日期”是什么意思?数据支持所有这些解释。(和更多。)

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

仅根据数据,您可以声明成绩->日期,但这没有任何意义。诸如此类的废话告诉您数据不具有代表性,并且您只能使用作者未提供的信息来规范化表格。

于 2015-02-15T15:54:06.120 回答