【问题标题】:1NF to 3NF -- Review1NF 到 3NF——回顾
【发布时间】:2017-01-31 17:39:20
【问题描述】:

所以我从教科书中的这个问题开始:http://imgur.com/Ax8hXj6 然后我必须找到所有的依赖项并从原始文件中创建一个 3NF ......我花了几个小时试图弄清楚这一点并让它正确。有人可以就我目前的最终产品提供反馈吗? http://imgur.com/PE2hY56(我知道这是在关系模型中,而不是 ERD ——我认为这会更容易)

【问题讨论】:

  • 请列出您的功能依赖关系。
  • 没有给出函数依赖,我发现部分依赖和过渡依赖从 1NF 到 3NF
  • 属性是函数依赖(FD),部分依赖是FD,传递依赖是FD的组合。列出您确定的 FD 的目的是让我可以检查您是否正确使用它们进行标准化。我可以从您的解决方案中得出 FD,但随后我会将您的答案与自己的答案以及我自己对数据的解释进行比较。

标签: database normalization


【解决方案1】:

我同意您的大部分解决方案。但是,有一些细节很突出:

  • 您在Training 中介绍了TRAINING_IDTRAINING_DESCR。原始的 EMP_TRAINING 具有单一的值域。规范化只会为您提供桥接表。
  • 您在Education 中介绍了EDUC_CODEEDUC_DESCR。原来的EMP_EDUCATION 有一个值域。规范化只会为您提供桥接表。
  • 您将EMP_CODE 作为JOB_CLASS 的属性引入。我在原文中没有看到匹配的属性。
  • DEPEN_NUM 没有错,但这取决于您将 EMP_DEPENDENTS 解释为有序列表还是无序列表。我会使用(EMP_NUM, DEPEN_FNAME) 作为Dependents 的键。您的解决方案同样有效。

我希望这会有所帮助。

【讨论】:

  • 我对你的前三点感到困惑。对于前两个,培训和教育是多对多的关系,因为一个员工可以有很多培训或学位,一个学位或培训可以属于许多员工,所以我需要用一座桥来打破它,是吗?第三个应该是 EMP_Num,我相信它会解决这个问题
  • 遵循规范化规则会给你一个关系(EMP_NUM, EMP_EDUCATION)。原始数据中没有单独的代码和描述。训练也是如此。
  • JOB_CLASS -> EMP_NUM in Job 是错误的 - 有两名员工的工作类别为 SLS。 Employee 中已经有 EMP_NUM -> JOB_CLASS,它捕获了正确的依赖关系。
  • 所以我会完全取出培训和教育表,让两个桥保持原样并从 Job 表中删除 EMP_NUM?
  • 如果我将 Job_class 和 emp_num 作为作业表的主键怎么办? - 这能解决问题吗?
猜你喜欢
  • 2013-11-22
  • 2016-08-17
  • 1970-01-01
  • 1970-01-01
  • 2013-05-11
  • 1970-01-01
  • 2014-12-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多