我想獲得更多關於簡單數據庫概念的知識,並且在更高的規範化方面遇到困難。例如,下面以第四範式(4NF)的博伊斯科德範式(BCNF)&看起來如何?如何將示例數據表分成BCNF/4NF?
發票(CUSTOMERNUMBER,名字,姓氏,電話,InvoiceNumber,DateIn,DateOut,ItemType的,Quanitty,ITEMPRICE,擴展價格,SpecialInstructions)
我這樣做,到目前爲止,但我知道我還沒有應用:
客戶(CUSTOMERNUMBER,名字,姓氏,電話,InvoiceNumber) INVOICE(InvoiceNumber,DateIn,DateOut,ItemType的,數量ITEMPRICE,SpecialInstructions)
按照書我讀,以下地設想mptions都已經到位:
- CUSTOMERNUMBER - >(名字,姓氏),而不是CUSTOMERNUMBER - > - >(名字,姓氏)
- CUSTOMERNUMBER - > - >電話。每個客戶可能有多個 的電話號碼。
- 一個客戶有許多訂單,但每個訂單僅與一個客戶關聯,即 。
- 一個訂單有很多ItemTypes,但每個ItemType只在 任何ORDER中出現一次。
- 商品價格因訂單而異,因此ItemType決定 ItemPrice。
- SpecialInstructions與每個項目類型相關聯,因爲 可能會針對不同的項目給出不同的說明。
- 訂單號碼是分配給訂單本身的一個號碼,沒有 與任何特定客戶的關聯。因此,我們具有諸如「123454」,123455「等等的號碼 而不是」客戶101,訂單1「, 客戶101,訂單2」,客戶102,訂單1「等。
- ItemPrice可以隨着訂單,以便價格中反映的特價報價爲 。
任何人都可以幫我嗎?
這可能屬於[dba.se]。對於初學者來說,'INVOICE'應該有'FK'給'客戶',而不是像你所擁有的那樣。 –
你能告訴我它應該是4NF嗎? –
項目不應位於Invoice表中,而應位於InvoiceItems表中。您假設發票只能包含一個項目。 –