2016-09-19 123 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