2016-09-19 122 views
1

我需要规范化帮助。我无法理解如何在我的数据库项目上完成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的传递依赖的。在我的第四张表格中我会使用什么属性,这样没有任何重复或者没有主键而依赖于彼此?任何方向将不胜感激。

回答

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表中,因为从概念上讲,它表示发生每个订单时的时间戳,对于该特定订单而言是唯一的。

+0

哦,哇,谢谢你,让总感觉!除了我在2NF忘记订购日期。让我编辑一下,请原谅我,我是编程新手。 – Danestyles

+0

我更新了这个考虑因素。 –

+0

再次感谢!我 – Danestyles