对一个或多个表进行非规范化

时间:2012-07-08 14:38:02

标签: database denormalization

我正在修改即将进行的数据库管理考试。

关于对样本员工数据库进行非规范化的问题。问题如下,架构也如下所示:

问题: 使用'employees'数据库对任何两个(或更多)表进行反规范化,以生成2NF中的表。你必须准确地解释为什么表是2NF而不是3NF。

架构:

enter image description here

我的回答:

我会将'工资'表反规范化到'员工'表中。为了规范化,我会将{salary,from_date,to_date}移动到employees表中并删除“工资”表。注意:from_date不再是'employees'中主键的一部分。

'员工'表不再是3NF,现在是2NF。这是因为表中引入了“传递依赖”。

传递依赖如下:'salary'取决于'from_date'。它是传递性的而不是部分的,因为'from_date'不是主键的组件。在部分依赖中,行列式必须是主键的一部分。


基本上对于这个问题,我需要创建一个传递依赖。这个模式看起来有点稀疏,而且由于日期是主键的一部分,我也有点失望。

如果上述依赖错误,有人可能会为我指出一个吗?

另一种可能的解决方案是将“部门”反规范化为“dept_emp”。我可以将'dept_name'添加到'dept_emp'中。但是从查看此表的SQL可以看出'dept_no'是主键的一部分。

对此的任何指导将不胜感激。

0 个答案:

没有答案