Подмножество ключа-кандидата

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

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

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

OR

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


person a Learner    schedule 27.07.2014    source источник
comment
Этот вопрос кажется не по теме, потому что он касается теории реляционных баз данных, а не практического программирования. cs.stackexchange.com, вероятно, будет лучшим местом, чтобы спросить.   -  person Barmar    schedule 27.07.2014
comment
зачем закрывать этот вопрос. Есть вопросы, связанные с этим вопросом, которые задаются на этом форуме, например stackoverflow.com/questions/8337309/superkey-candidate-key-primary-key.   -  person a Learner    schedule 27.07.2014
comment
Это было несколько лет назад, с тех пор правила ужесточились.   -  person Barmar    schedule 27.07.2014
comment
@Barmar Это необходимо и непосредственно применимо к написанию программного обеспечения СУБД, и ваше непрактичное программирование неверно.   -  person philipxy    schedule 27.07.2014
comment
Это больше походило на домашнее задание из класса базы данных, а не на реальный вопрос по программированию.   -  person Barmar    schedule 27.07.2014
comment
Домашняя работа не по теме.   -  person Mike Sherrill 'Cat Recall'    schedule 27.07.2014


Ответы (2)


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

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

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

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

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

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

person philipxy    schedule 27.07.2014

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

person Mike Sherrill 'Cat Recall'    schedule 27.07.2014