2014-08-27 57 views
1

我知道候選鍵不能有NULL值。但候選鍵本身可以是許多稱爲素數屬性的屬性的組合。這些主要屬性可以具有NULL作爲值嗎?素數屬性是否有空值?

問候,

+0

可能重複的[MySQL - 主鍵是否需要「非空」約束?](http://stackoverflow.com/questions/10462918/mysql-are-not-null-constraints-needed-for-primary-鍵) – 2014-08-27 15:59:54

回答

2

主屬性出現的一些 候選鍵的屬性的屬性。 (它不需要主鍵,或 利益甚至任意鍵。)

Schemas and keys

總理屬性是一個候選鍵的一部分。顧名思義,候選鍵是主鍵的候選鍵。這意味着,如果需要,候選密鑰可以成爲主鍵。

現在如果您記得,任何主鍵不能爲空。所以,根據定義,素數屬性不能爲空。如果它爲空,它就不再是一個主要屬性。

這裏是一個解釋。

如果你有一個複合候選鍵可以說

CK1(P1, P2) 

P1和P2是首要屬性。您可以將P1或P2設置爲空,因爲除主鍵屬性以外的素數屬性沒有限制。

所以,

CK1(P1, P2=null) 

現在,CK1不能是主鍵,因此沒有更多的候選鍵,因此,P2不再是主屬性。

0

我相信這取決於您使用的數據庫。

例如,您不必在MySQL中明確地執行此操作。這在the manual定義:

主鍵是所有鍵列必須被定義爲 NOT NULL唯一索引。如果它們沒有被顯式聲明爲NOT NULL,那麼MySQL 會聲明(並且默默地)聲明它們。