2013-09-01 33 views
0

我想獲得更多關於簡單數據庫概念的知識,並且在更高的規範化方面遇到困難。例如,下面以第四範式(4NF)的博伊斯科德範式(BCNF)&看起來如何?如何將示例數據表分成BCNF/4NF?

發票(CUSTOMERNUMBER,名字,姓氏,電話,InvoiceNumber,DateIn,DateOut,ItemType的,Quanitty,ITEMPRICE,擴展價格,SpecialInstructions)

我這樣做,到目前爲止,但我知道我還沒有應用:

客戶(CUSTOMERNUMBER,名字,姓氏,電話,InvoiceNumber) INVOICE(InvoiceNumber,DateIn,DateOut,ItemType的,數量ITEMPRICE,SpecialInstructions)

按照書我讀,以下地設想mptions都已經到位:

  1. CUSTOMERNUMBER - >(名字,姓氏),而不是CUSTOMERNUMBER - > - >(名字,姓氏)
  2. CUSTOMERNUMBER - > - >電話。每個客戶可能有多個 的電話號碼。
  3. 一個客戶有許多訂單,但每個訂單僅與一個客戶關聯,即 。
  4. 一個訂單有很多ItemTypes,但每個ItemType只在 任何ORDER中出現一次。
  5. 商品價格因訂單而異,因此ItemType決定 ItemPrice。
  6. SpecialInstructions與每個項目類型相關聯,因爲 可能會針對不同的項目給出不同的說明。
  7. 訂單號碼是分配給訂單本身的一個號碼,沒有 與任何特定客戶的關聯。因此,我們具有諸如「123454」,123455「等等的號碼 而不是」客戶101,訂單1「, 客戶101,訂單2」,客戶102,訂單1「等。
  8. ItemPrice可以隨着訂單,以便價格中反映的特價報價爲 。

任何人都可以幫我嗎?

+0

這可能屬於[dba.se]。對於初學者來說,'INVOICE'應該有'FK'給'客戶',而不是像你所擁有的那樣。 –

+0

你能告訴我它應該是4NF嗎? –

+0

項目不應位於Invoice表中,而應位於InvoiceItems表中。您假設發票只能包含一個項目。 –

回答

0

我不確定如何回覆這篇文章(see this meta post),而不是「答案」,我只是拋出一些想法,希望能讓你朝着正確的方向前進。

@Analytic,它看起來像你只通過項目#2!你的ORDER表在哪裏? ITEM呢?請將其添加到您的帖子中,以便我們知道您的第一次嘗試是什麼(我們不會爲您做功課!)。

所以既然你只給我們你在#1和#2上的努力,我會評論顧客的電話號碼。您的設計只允許每個客戶使用一個電話號碼,因此不符合要求?你會想象什麼樣的數據結構可以讓你爲一個客戶提供多個電話號碼?你會在Phone1,Phone2,Phone3等客戶表上創建更多的字段嗎?這會實用嗎?你會放多少?如果客戶有比你計劃的更多的東西呢?查看描述one-to-many)關係的網頁。

如果您想在本文中添加更多作品並給予真誠努力,我們將盡力幫助您。

祝你好運。

+0

我明白了。感謝您涵蓋您的所有!我會在早上重新審視一些事情並回復我的進展。 –