2014-08-27 3 views
1

Я понимаю, что ключ-кандидат не может иметь значения NULL. Но ключ-кандидат сам по себе может быть комбинацией многих атрибутов, которые называются основными атрибутами. Могут ли эти основные атрибуты иметь значение NULL в качестве значения?Может ли первичные атрибуты иметь нулевые значения?

С уважением,

+0

Возможный дубликат [MySQL - есть ограничения «NOT NULL», необходимые для первичных ключей?] (Http://stackoverflow.com/questions/10462918/mysql-are-not-null-constraints-needed-for-primary- ключи) –

ответ

2

Prime атрибут Атрибут, который появляется в качестве атрибута для некоторого кандидата ключа. (Это не должно быть первичным ключом, или даже какой-либо ключ интереса.)

Schemas and keys

Prime атрибуты являются частью ключа кандидата. Ключ-кандидат, как следует из названия, является кандидатом на первичный ключ. Это означает, что ключ кандидата может быть стать первичным ключом, если требуется.

Теперь, если вы помните, любой первичный ключ не может быть нулевым. Таким образом, по определению, первичный атрибут не может быть нулевым. Если он равен нулю, он перестает быть основным атрибутом.

Вот объяснение.

Если у вас есть составной ключ кандидат позволяет сказать

CK1(P1, P2) 

P1 и P2 являются главными атрибутами. Вы можете установить P1 или P2 как null, потому что нет ограничений на первичные атрибуты, отличные от атрибутов первичного ключа.

Так,

CK1(P1, P2=null) 

Теперь СК1 не может быть первичным ключом, следовательно, является не более ключевым кандидатом и, следовательно, Р2 больше не является главным атрибутом.

0

Я считаю, что это зависит от используемой базы данных.

Например, вам не нужно делать это явно в MySQL. Это определяется в the manual:

ПЕРВИЧНЫЙ КЛЮЧ уникальный индекс, где все ключевые столбцы должны быть определены , как NOT NULL. Если они явно не объявлены как NOT NULL, MySQL объявляет их так неявно (и молча).