2016-03-01 42 views
-2

選民(voter_id,voter_name,residential_address,current_city,current_state,current_postal_code)。DBMS NORMALIZATION第二規範化表格

郵政編碼對於每個城市和州是唯一的,每個地址只有一個郵政編碼。

在規範化方面,選民是在2nf或3nf?

+0

'voter_ID'是否是唯一的? – Pogrindis

+0

我認爲這是1nf,因爲城市,州和郵政編碼可以被提取出來,而且你沒有引用任何其他表格,所以它甚至不可能是2nf –

+0

我必須同意@ cricket_007的澄清:http:// i.imgur.com/Nz8cge9.jpg – Pogrindis

回答

0

要檢查它的最高範式,按照這個基本步驟:

  1. 首先爲了簡單起見,重命名「選民」的屬性。 voter_id爲 「A」 VOTER_NAME爲 「B」 residential_address爲 「C」 current_city爲 「d」 current_state爲 「E」 current_postal_code爲 「F」

  2. 根據提供給FD的:{DE - > F,C - > F}

3.這裏的候選鍵是:{ABCDE}。 因此,
總理屬性(5):{A,B,C,d,E}, 非總理屬性(1):{F}

對於2NF: 「部分依賴不允許」。意思是,候選關鍵字的一部分不應該確定非主要屬性。

這裏,部分依賴是:{DE - > F,C - > F}

所以,這表不是2NF。

**要成2NF,關係應該是分解這樣的:

R1 = {DEF},

R2 = {CF}

R3 = {ABCDE}

希望這可以幫助。有關如何分解表格以及所有表格的更多詳細信息,您還可以參考:Detailed explanation of Normal forms

0

通過BCNF規範化基於功能依賴性。根據專欄名稱,它是而不是,雖然這似乎是根據他們關於SO的問題來教授大學的學生。

我假設「voter_id」是替代關鍵,但這只是受過教育的猜測。 (這是而不是是設計數據庫的良好基礎。)如果它是代理鍵,那麼「voter_id」是唯一的,所以我們有這個FD。

  • voter_id - > VOTER_NAME,residential_address,current_city,current_state,current_postal_code

你說, 「郵政編碼是每個城市和國家獨特的。」,所以我們也有這樣的FD。

  • current_city,current_state - > current_postal_code

最後,你說 「每個地址只有一個郵政編碼」。

根據我的經驗,我認爲你的意思不大可能是你的居住地址 - > current_postal_code。我認爲你的意思是residential_address,current_city,current_state - > current_postal_code。但是我們已經知道current_city,current_state - > current_postal_code,所以這並沒有告訴我們關於函數依賴的任何有用信息。

如果只有這兩個函數依賴關係,那麼「選民」的唯一候選鍵是「voter_id」。

2NF涉及部分密鑰依賴關係。 只有候選鍵是單個列。因此,部分鍵依賴關係不能存在。所以「選民」是在2NF。

3NF涉及傳遞依賴。至少有一個:voter_id - > current_city,current_state和current_city,current_state - > current_postal_code。所以「選民」不在3NF。