我在课堂上学习规范化。我在这里的这篇文章中找到了这个练习
它要求将下表标准化为 3NF。
我就是这样做的。
我想知道我组织表格的方式是否正确。
我想知道我组织表格的方式是否正确。
不,这不对。
首先,通过 BCNF 进行规范化是基于函数依赖的。您尚未确定任何功能依赖项。
其次,规范化永远不会引入不在您开始的关系中的新属性。您介绍了新属性“sFirstName”、“sLastName”、“dateOfBirth”、“tuteId”、“tutorName”、“bookId”和“bookName”。
最后,您链接到的在线练习并不是很有用。作者显然希望您从提供的小表中导出所有功能依赖关系,但除非数据具有代表性,否则您无法可靠地做到这一点。例如,您可以通过检查确定 Room->Date,但在现实世界中没有多大意义。
规范化是基于语义的——数据是什么意思?这里的“日期”是什么意思?数据支持所有这些解释。(和更多。)
仅根据数据,您可以声明成绩->日期,但这没有任何意义。诸如此类的废话告诉您数据不具有代表性,并且您只能使用作者未提供的信息来规范化表格。