Database 取消一个或多个表的规范化

Database 取消一个或多个表的规范化,database,denormalization,Database,Denormalization,我目前正在为即将到来的数据库管理考试复习 有一个关于样本员工数据库非规范化的问题。问题如下,模式如下所示: 问题: 使用“employees”数据库对任意两个或多个表进行非标准化,以生成2NF格式的表。您必须准确地解释为什么表格是2NF而不是3NF 模式: 我的答覆是: 我会将“工资”表非规范化为“员工”表,以进行调整。为了正常化,我将{salary,from_date,To_date}移动到employees表中,并删除'salaries'表。注意:开始日期不再是“employees”主键的一

我目前正在为即将到来的数据库管理考试复习

有一个关于样本员工数据库非规范化的问题。问题如下,模式如下所示:

问题: 使用“employees”数据库对任意两个或多个表进行非标准化,以生成2NF格式的表。您必须准确地解释为什么表格是2NF而不是3NF

模式:

我的答覆是:

我会将“工资”表非规范化为“员工”表,以进行调整。为了正常化,我将{salary,from_date,To_date}移动到employees表中,并删除'salaries'表。注意:开始日期不再是“employees”主键的一部分

“employees”表不再是3NF格式,现在是2NF格式。这是因为表中引入了“可传递依赖项”

可传递的依赖关系如下:“工资”依赖于“起始日期”。它是可传递的,不是部分的,因为“from_date”不是主键的组件。在部分依赖中,行列式必须是主键的一部分

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

如果上面的依赖是错误的,有人能为我指出一个吗

另一个可能的解决方案是将“部门”非规范化为“部门emp”。我可以将“dept_name”添加到“dept_emp”中。但是从这个表的SQL来看,“dept_no”是主键的一部分


对此,如有任何指导,我们将不胜感激。

@Mat感谢您的修复。你是怎么做到的?我不能,只是在那一段和--。