阅读一本旧教科书以更好地掌握数据库概念,我不确定我是否正确。谁能确认或解释我可能做错了什么?
1 回答
我发现这模棱两可且具有误导性,提供的数据无济于事;似乎示例中的大多数人都喜欢认识自己。
来自特定项目的员工在给定日期参加了会议。
项目每天最多开会一次。
只有一个员工代表一个给定的项目,但该员工可以分配给多个项目。
Q1:这是一个项目的会议,还是来自不同项目的人的会议?
Q2:什么是项目?这是否意味着在某一天可以有一系列项目会议,或者一天中所有项目都可以召开一次会议?举个例子,
(Tim, FQLIMS, '8/4/2013') , (Tim, MSFCCS, '8/4/2013')
; Tim 是代表两个项目参加了一次会议,还是在那一天他参加了两个项目会议?Q3:分配了什么?代表一个项目与被分配给它是一样的吗?是每个项目一个人,还是一个项目负责人和更多人分配给它?
所以,解释的方法不止一种{Employee, Project, Date}
,这里有两个我看到的版本:
项目由员工代表参加了日期的员工会议。
员工在日期参加了项目会议。
显然数据集不够,每个项目只列出一次,而约束允许每天开一次会。不可能从这样的数据集中陈述功能依赖关系,因此必须使用约束的语义,在这个例子中它是模棱两可的。
我会选择版本 1,只是因为小数据集支持它。
版本 1
项目由员工代表参加某日的员工会议。
1.0 项目由员工代表。
每个项目仅由一名员工代表。同一员工可能代表多个项目。
这显然意味着FD {Project} -> {Employee}
1.1 项目在某个日期出席了员工会议。
每个项目在给定日期 Date 的员工会议上最多代表一次。
这将导致
PrjEmp {Project, Employee} -- Project is represented by Employee
KEY {Project}
Meeting {Project, Date} -- Project was represented at staff meeting on Date.
KEY {Project, Date}