【问题标题】:4th Normal Form of table not met不满足表格的第四范式
【发布时间】:2018-02-17 07:21:16
【问题描述】:
下图是一个数据库图表,该数据库用于管理多年的大学生注册和成绩。下面列出了对数据库的要求
- 学生必须能够成为班级的一员
- 课程必须教授一门学科
- 每个班级可能有 0 个或多个课程作业
- 每个班级将有一次考试
- 每节课可以由多个讲师授课
- 课程作业只能由一位讲师设置
- 课程作业和考试可以由不同于设置它们的工作人员进行评分,并且评分的工作人员必须能够被识别和记录。
- 必须指定所参加的考试是第一次参加还是补考
我认为数据库现在处于第四范式,如下表所示。
键代表该表的主键,绿色箭头表示它是外键。
谁能发现任何错误或提出改进方法?
【问题讨论】:
标签:
database
database-design
【解决方案1】:
这里没有足够的信息来判断您是否满足任何标准形式。我们只能猜测一些依赖关系。
例如,“每个班级都会有一次考试”似乎是在说班级→考试。另一方面,您的考试表满足依赖考试ID→classID,这不是您的要求之一。我无法从您的图表中判断 classID 是否是考试表中的候选键。如果 classID→examID 是要满足的依赖项之一,examTaken 看起来也不会在 4NF 中。
从实际数据建模的角度来看,4NF 并不是很重要。 5NF更重要。这是作业吗?如果是这样,我建议您在开始绘制图表之前写下属性和依赖关系。您创建的属性似乎比需求声明中建议的要多。
【解决方案2】:
显然 coursework 和 courseworktaken 之间的基数不能是 1:1。
(为什么有些线是虚线而有些不是?)