关系数据库的规范化

时间:2015-12-15 15:43:38

标签: database normalization database-normalization functional-dependencies

我正在通过标准化考试问题的标记计划。它给出附图中显示的表格,并要求瞳孔标准化为第3范式。图像中的表格下方是该问题的标记方案。

有谁知道为什么在2NF中Dept ID留在Team-Employee表中?它已被删除,但我不知道为什么它会在那时保留在那里?

Diagram with 1NF data and outline schemas

2 个答案:

答案 0 :(得分:2)

因为在1NF

  • 仅包含原子值
  • 没有重复的小组

第二范式

  • 所有非关键属性都完全依赖于主键

第3范式

  • 3NF中没有传递函数依赖。

DeptID取决于您正在查看的员工。因此它是第1和第2范式。直到第3个正常形式,才必须提取employee和departmentID之间的一对多关系。

在您的情况下,Dept名称与DeptID绑定,DeptID与Employee绑定,因此deptName具有传递功能依赖性。换一种说法。表中有一对多的关系;这是第3范式不允许的。但它适合2NF,因为部门直接与员工联系在一起,并不是需要以第1范式解决的多对多。

答案 1 :(得分:0)

您没有提供足够的信息。我们可以看到一些没有功能依赖的地方,但是我们不知道与功能依赖性一致的情况是否真的存在。

但假设DeptID在功能上由{EmployeeID}确定(即给定的EmployeeID仅出现一个DeptID)(根据EMPLOYEE的情况,{EmployeeID}作为确定DeptID的候选关键字),TEAM-EMPLOYEE-2具有具有候选键{TeamID,EmployeeID}的DeptID将不在2NF中,因为DeptID在功能上依赖于候选键的适当子集({EmployeeID})(即,它在功能上完全不依赖于它)。然而,在您(据称)的解决方案中,它似乎低于2NF。

所以可能这是一个错字。 (也因为分解后将它留在两个组件中都很奇怪。)