2016-04-23 124 views
0

我目前正在做一些課程,我得到了一個建議表,我必須確定哪個規範形式的規則會被破壞。我認爲我已經完成了這些工作,但是在應用某些規則時我一直很困惑。所以,如果有人能夠檢查它並向我解釋爲什麼如果有什麼事情是錯誤的,我將不勝感激。數據庫規範化(1NF到3NF)

實施例:

UNF

這將打破1NF爲有重複的數據,因爲每個攝影師可參加多個匹配(匹配ID),因此,解決這個和帶來1NF我這樣做:

1NF and 2NF

由於沒有組合鍵,它已經在2NF的兩個表中,但是公司和公司編號之間存在傳遞依賴關係。因此,這樣做是爲了帶給3NF:

3nf

是手機號碼和照片名稱還傳遞依賴?如果某人具有相同的名字,這意味着它不是?此外,我不確定當我將公司和公司編號重新分配給1NF時是否會將其分類。

謝謝。


編輯:注意,對不起,混淆 - PhotoID是攝影師的ID。全列名:

Photographer ID (Primary key) <- Told this is the PK in the question

Photographer Name, 

Mobile Phone Number, 

Employing Company, <-Told this is unique in the question 

Employing Company Phone Number, 

Matches Attending, 

回答

1

在你的第二張圖片中,你跳過了重複組的傳統1NF處理(將分組數據複製到每個Matches ID的單獨行)並直接轉到2NF。那裏沒問題。你的3NF也是正確的。

移動否和照片名稱是否也是傳遞性依賴?

編號攝影師的姓名和手機號碼是攝影師ID的屬性(功能依賴性)。

我不確定如果我將公司和公司編號重新分配到1NF時是否重複。

識別重複項不是將錶轉換爲1NF的一部分。

0

據我所學到直到日期。表中必須沒有任何函數依賴關係才能通過3NF測試。

如果表中有任何可以在主鍵位置工作的列,那麼它肯定不在那裏。

現在看看規範化後的表 - 手機號碼肯定是一個唯一的ID。

+0

所以你建議它應該是這樣的http://i.stack.imgur.com/uhi9q.png? - 抱歉不知道如何在評論中顯示它。 –

+0

電話號碼不是標識符,因爲人們共享電話,甚至是手機。 – jimueller

+0

取決於用例說實話。我從未部署過允許用戶重複輸入手機號碼的系統。我只是在談論手機號碼。 –

1

我認爲你的問題是,據我所知,你並沒有一個人的標識符。你最近的地方是名字。這可能會給你帶來問題,但我認爲在這種情況下它通過了3NF的定義。

最大的問題是你可能想要識別兩個不同的人,名叫'約翰·詹姆斯',所以實際的問題是你需要某種其他信息來做到這一點(例如,社會安全號碼,員工ID等)。此時,名稱需要被分解並與一個人的標識符一起存儲(因爲依賴人員編號是id的函數,但名稱是人員編號的函數)。

+0

對不起 - 混亂 - PhotoID是攝影師的ID。我會更新這個問題,以便更清楚。 –

+0

在這種情況下,它聽起來像是3NF,因爲名稱始終是攝影師ID的依賴關係。 –