2

我被分配了大学作业,其中一个问题是描述 3NF 的重要性。

我理解规范化是为了消除数据冗余。

任何帮助或资源都会有很大帮助。

4

1 回答 1

0

规范化是数据库设计的重要组成部分,它是由 EF Codd 在 70 年代定义的。如您所知,它减少了表(关系)中数据的重复,但它保持了引用完整性 - 信息相同但可能更优化。虽然它有一个成本 - 更多的表,与外键关系相关。这通常会在数据库上添加抽象。

由于您特别需要3NF,因此应确保:

  • 关系 R (table) 是第二范式 (2NF)
  • R 的每个非主属性都非传递地依赖于 R 的每个超键。

该表应首先在第一范式 (1NF) 和第二范式 (2NF) 中进行规范化,然后最终在 3NF 中进行规范化。此外,表中的行应该只依赖于“Nothing but the key”。如果一组字段的内容适用于多个主键,则应将其放在另一个表中。

例如,如果您的数据库中有员工表,其中包含员工的家乡,那么您可能有几个与家乡纽约重复的行。这个 hometown 可以与另一个表hometown分开,主键和列如 name,与员工相关(通过EmployeeHometown表),其中只有一次列出 New York(没有重复)。在一张桌子上检查 5 个家乡,比通过 100 名员工得到他们的家乡要容易得多。

于 2015-08-08T17:20:43.333 回答