我找到了所有功能依赖项吗?

时间:2013-08-30 13:48:21

标签: database database-design

使用旧的教科书来更好地掌握数据库概念,我不确定我是否具有以下正确性。任何人都可以确认或解释我可能做错了什么吗?

1 个答案:

答案 0 :(得分:2)

我发现这种暧昧和误导,所提供的数据无济于事;看来这个例子中的大多数人都喜欢自己。

  
      
  1. 特定项目的员工参加了指定日期的会议。

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

  4.   
  5. 只有一个Employee代表给定项目,但可以将Employee分配给多个项目。

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

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

  • 问题3:分配了什么?表示项目与分配项目相同吗?每个项目是一个人,还是一个项目负责人和更多人分配给它?

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

  1. 项目由员工在日期员工会议上代表。

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

  3. 显然,数据集不够,每个项目只列出一次,而约束则允许每天召开一次会议。不可能从这样的数据集中声明函数依赖性,因此必须使用约束的语义,并且在这个例子中它是不明确的。

    我将仅使用版本1,因为小数据集支持它。


    版本1

    项目由员工在日期的员工会议上代表。

    1.0项目由员工代表。

    每个项目仅由一名员工代表。 可能有多个项目由同一个Employee表示。

    这显然意味着FD {Project} -> {Employee}

    1.1项目在一个日期的员工会议上有代表。

    每个项目在特定日期日期的员工会议上最多只能出席一次。

    这导致

    PrjEmp {Project, Employee}  -- Project is represented by Employee
       KEY {Project} 
    
    Meeting {Project, Date}      -- Project was represented at staff meeting on Date.
        KEY {Project, Date}