2014-07-27 2 views
0

Как известно, ключ-кандидат представляет собой столбец или комбинацию столбцов, которые однозначно идентифицируют строки в отношении.Подмножество ключа-кандидата

Предположим, что у меня есть отношение, в котором ключи-кандидаты представляют собой комбинации столбцов. Я хочу спросить,

Возможно ли, что подмножество ключа-кандидата также однозначно идентифицирует строку?

ИЛИ

является кандидатом ключ ключ, для которого не существует никакое подмножество, которое однозначно идентифицирует строку?

+0

Этот вопрос не соответствует теме, поскольку речь идет о теории реляционных баз данных, а не о практическом программировании. cs.stackexchange.com, вероятно, будет лучше спросить. – Barmar

+0

Зачем закрывать этот вопрос. Есть вопросы, связанные с этим вопросом, которые задаются на этом форуме, например stackoverflow.com/questions/8337309/superkey-candidate-key-primary-key. –

+0

Это было несколько лет назад, с тех пор правила ужесточились. – Barmar

ответ

3

Ключ-кандидат - это столбец или комбинация столбцов. Или, вернее, набор из одного или нескольких столбцов. Или, вернее, набор столбцов.

Ключ-кандидат представляет собой набор столбцов, который однозначно идентифицирует строки и не содержит меньшего («правильного») подмножества столбцов, который однозначно идентифицирует строки.

Суперклас - это набор столбцов, который однозначно идентифицирует строки. Таким образом, ключ-кандидат - это супер-ключ, который не содержит более мелкого супер-ключа.

В SQL вы не можете объявить пустой ключ кандидата. Кроме того, UNIQUE NOT NULL и PRIMARY KEY (который с точки зрения ограничений просто означает UNIQUE NOT NULL) объявляют супер-клавиши, а не ключи как таковые. Если такой набор столбцов объявления не содержит меньший набор столбцов, объявленный как суперкнига, тогда суперклас, который он объявляет, является ключом кандидата.

Ваш вопрос первоначально сказал, что у вас есть отношение, в котором ключи-кандидаты являются «комбинацией ключей». Возможно, вы имели в виду что-то вроде: некоторые меньшие подмножества (столбцы) суперкласса - это ключ суперклина или кандидата.

Так что нет, ключ-кандидат не может содержать меньший ключ-кандидат. С другой стороны, в SQL вы можете иметь объявление UNIQUE/PK для меньшего подмножества столбцов другой декларации UNIQUE/PK. Но тогда последний не будет кандидатом.

2

По определению, ни одно подходящее подмножество ключа-кандидата не может идентифицировать строку.

Смежные вопросы