我需要帮助进行规范化。我无法理解如何在我的数据库项目中完成3NF。这里是 的 1NF
规范化表
Donut ID(PK)
Donut Name
Description
Unit Price
Donut Order ID
Qty
CustomerID
Last Name
First Name
Last Name
Street Address
Apt
City
State
Zip
Home Phone
Mobile Phone
Other Phone
Order Date
Special Notes
2NF 甜甜圈表
DonutID (PK)
Donut Name
Description
Unit Price
销售订单表
Sales OrderID (PK)
CustomerID
Last Name
First Name
Last Name
Street Address
Apt
City
State
Zip
Home Phone
Mobile Phone
Other Phone
Order Date
Special Notes
销售订单行项目表
Sales Order (PK)(FK)
Dount ID (PK)(FK)
Qty
我的问题是摆脱3NF中的传递依赖。我将在第四个表中使用什么属性,以便在没有主键的情况下没有任何冗余或依赖于彼此?任何方向将不胜感激。
答案 0 :(得分:1)
Sales Order
表格对客户的姓名和地址具有传递依赖性。如果仔细观察,您会看到每个订单都包含给定客户的完整地址和名称信息,即使该信息可能不会从一个订单更改为下一个订单。要解决此问题,您可以将此信息移动到具有以下字段的新Customer
表中:
客户表
CustomerID (PK)
Last Name
First Name
Last Name
Street Address
Apt
City
State
Zip
Home Phone
Mobile Phone
Other Phone
Sales Order
表将成为:
销售订单表
Sales OrderID (PK)
Order Date
CustomerID (FK)
Special Notes
请注意,订单日期可以保留在Sales Order
表中,因为从概念上讲,它代表每个订单发生时的时间戳,对于该特定订单而言是唯一的。