2012-06-07 20 views
4

可以肯定地說,當1NF表沒有複合候選鍵(主鍵由多個列組成)時,該表自動處於2NF。第一範式與第二範式之間的區別是什麼?

當它的主鍵只有一列時,表格可以表示2NF嗎?

+0

可能的重複[默認情況下數據庫是2NF,如果該表只有1個主鍵?](http://stackoverflow.com/questions/10235566/is-it-true-that-a-數據庫是2nf-by-default-if-the-table-only-has-1-primary-key) –

+0

「其主鍵只有一列」並不意味着與「無合成候選鍵」相同。 *所有*候選鍵都同樣重要。看到不同? – sqlvogel

回答

-1

在2NF中創建單個表的關鍵是「刪除應用於表中多行的數據的子集,並將它們放在不同的表中。」

如果一個表有多個重複信息的行,那麼應該將該信息移動到另一個表,並通過使用外鍵建立關係。

http://databases.about.com/od/specificproducts/a/2nf.htm

0

是,該表可以違反2NF時,它只有一個在其主鍵列。 2NF的基本思想是讓表中的所有字段直接依賴/與主鍵相關。 @A B給出的例子解釋了同樣的一點。

+1

我強烈地感覺到,有人必須更新2NF wiki頁面,其中指出「當1NF表沒有複合候選鍵(候選鍵包括多於一個屬性)時,該表自動在2NF」 – DataArchitect

+0

如何區分2NF和3NF有好的例子? – DataArchitect

1

只要沒有非平凡的FD,A→B,由R滿足,其中A是R的一些候選關鍵字的真子集,則relvar R在2NF中。

您首先必須考慮所有候選鍵。如果所有候選鍵都是單屬性鍵,那麼這些鍵中唯一可能的子集就是{}(empty set)。空集上的依賴不可能無意中產生,因爲它們通常是明顯的和不必要的。但是,即使只有一個簡單的密鑰,這種依賴關係也是完全可能的。