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

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

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

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

ИЛИ ЖЕ

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

2 ответа

Решение

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

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

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

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

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

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

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

Другие вопросы по тегам