1

阅读一本旧教科书以更好地掌握数据库概念,我不确定我是否正确。谁能确认或解释我可能做错了什么?

4

1 回答 1

2

我发现这模棱两可且具有误导性,提供的数据无济于事;似乎示例中的大多数人都喜欢认识自己。

  1. 来自特定项目的员工在给定日期参加了会议。

  2. 项目每天最多开会一次。

  3. 只有一个员工代表一个给定的项目,但该员工可以分配给多个项目。

  • Q1:这是一个项目的会议,还是来自不同项目的人的会议?

  • Q2:什么是项目?这是否意味着在某一天可以有一系列项目会议,或者一天中所有项目都可以召开一次会议?举个例子,(Tim, FQLIMS, '8/4/2013') , (Tim, MSFCCS, '8/4/2013'); Tim 是代表两个项目参加了一次会议,还是在那一天他参加了两个项目会议?

  • Q3:分配了什么?代表一个项目与被分配给它是一样的吗?是每个项目一个人,还是一个项目负责人和更多人分配给它?

所以,解释的方法不止一种{Employee, Project, Date},这里有两个我看到的版本:

  1. 项目由员工代表参加了日期的员工会议。

  2. 员工在日期参加了项目会议。

显然数据集不够,每个项目只列出一次,而约束允许每天开一次会。不可能从这样的数据集中陈述功能依赖关系,因此必须使用约束的语义,在这个例子中它是模棱两可的。

我会选择版本 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}
于 2013-08-30T17:34:37.843 回答