2010-08-05 91 views
8

你們可以告訴我如何以第5種標準形式獲得這種ERD嗎?我們昨天做了一個班級任務,我們有一個真正的客戶進來,向我們解釋他的需要,我的團隊想出了這個模型,我試着更進一步,看看我能否把它變成第五範式,這樣我可以更好地理解它,因爲下週我們將做另一組ERD,它將不得不在5nf的事情是我不知道從哪裏開始,這本書沒有通過我。你們能幫助我嗎? Erd Model http://img534.imageshack.us/img534/2118/capturekk.jpg需要數據庫設計規範化幫助(5nf)

新的信息「假客戶需求」

客戶端有2個部門「實驗1, 實驗2」的順序從 醫療項目他,像手套和PI寵物等。 部門已經成長,他想要跟蹤 庫存什麼廠商正在銷售 誰擁有最好的價格和成本 中心它來自。

的方式,他解釋 它的項目是有序是 一個人去給他,並要求 用品,他則寫下的人是什麼樣的實驗室 從人的名字 什麼成本中心法案。但他 也想跟蹤什麼 按日期購買,什麼是在庫存 和什麼必須被買。他還 給一些用戶希望從特定的供應商 項 可能沒有最好的價格和他 也與價格收到一些目錄中 郵件太多,他希望 軌道的例子。

我很抱歉,如果它的混亂,但這都是從記憶。

+0

有沒有什麼讓你覺得這已經不是5NF? – 2010-08-05 16:02:53

+0

研究維基百科上這些形式的定義讓我懷疑它是這樣,儘管我會帶着興趣去關注討論。 – 2010-08-05 16:09:43

+0

請澄清此模型背後的業務邏輯:它是一種採購跟蹤系統,這是客戶對其與各供應商訂購的訂單的視圖,而不是通常情況下由供應商跟蹤客戶下單的情況。 – APC 2010-08-05 16:16:00

回答

4

我將堅持我的脖子出來,並說你目前的模式沒有任何5NF的資格。維基百科以報價,它說,大多數4NF表已經符合5NF:只有在極少數的情況下

用法做了 4NF表不符合5NF。這些 是在該表的結構中不隱含控制4NF表中的屬性值 的有效組合的複合現實世界約束 的情況。如果這樣的 表沒有歸一化至5NF,保持 表內的數據的邏輯一致性 的 負擔,必須部分地由負責 插入,缺失,和更新 它 應用承載;並且 的風險有所增加,表中的數據將會變爲 不一致。相比之下,5NF設計不包括這種不一致的可能性。

http://en.wikipedia.org/wiki/Fifth_normal_form

也許目的不是爲了讓你的數據庫5NF,但要知道這是相比於5NF結構,並提出爲什麼它可能已在5NF參數。

更新:從評論中閱讀某種形式的共識,看來你的設計可能已經在5NF了,無論是設計還是偶然從以前的正常化通行證。

+0

但是能不能進一步改進是我真正想知道的,當我們瘋狂這張圖表時,我領導着這個組織,主要是我的意見是構成ERD,但主要是偶然的,並且通過參考我們以前的一些幻燈片在課堂上審查。 – 2010-08-05 16:18:46

+0

好,所以我的主要問題是你會以不同的方式做它?如果是這樣的話,你會怎麼做才能使它成爲一個堅實的5nf設計。 – 2010-08-05 16:35:19

+0

對我來說看起來足夠穩固 - 您已將相關數據(即具有其屬性的實體)彙總到他們自己的表格中,您已將您的多對多分割出來。我想你需要一個更復雜的結果集來演示5NF。看看wiki條目,那裏顯示的例子非常具體。我認爲目前的設計是好的 - 如果沒有,那麼講師可以指出任何缺陷。 – 2010-08-06 08:00:39

1

免責聲明:在不知道您的業務邏輯的情況下,我可能完全錯誤的一些以下建議。

好吧,我看到你的數據庫模式中的一些事情。

  1. 您的成本中心表看起來既是查找表和關聯表。因此,如果您擁有一定數量的成本中心(比如說5,但有1000個用戶),那麼此表將包含5000個記錄,這些記錄全部存儲成本中心名稱(這是假定成本中心分配不是每個用戶唯一的)。您可能希望將用戶關聯拆分爲具有自己的PK和FK的costcenterId和userId的單獨表。
  2. 您的庫存表,我假設庫存的庫存量爲一件物品,應該只需要一個手頭數量就不知道該描述是什麼。如果說明不是每個料品庫存唯一的,則可能需要將其分解到其自己的查找表中,並在庫存表中引用它。
  3. 您正在供應商表中存儲「lineQuantity」。這是什麼專欄。這聽起來像是以某種方式與特定訂單相關(購買的物品的數量?)如果是這樣,您將希望將其拆分到它自己的表格中,並將其與訂單而不是供應商相關聯。儘管這個建議可能是完全錯誤的,但並不確切知道lineQuantity是什麼。
  4. 最後的建議不確定這對你的班級是否重要。您正在將所有數據類型定義爲CHAR(10),您可能希望將它們更改爲將用於數據庫的實際數據類型。