Подмножество ключа-кандидата
Как мы знаем, ключ-кандидат - это столбец или комбинация столбцов, которые однозначно идентифицируют строки в отношении.
Предположим, у меня есть отношение, в котором ключи-кандидаты являются комбинациями столбцов. Я хочу спросить,
Возможно ли, что подмножество ключа-кандидата также однозначно идентифицирует строку?
ИЛИ ЖЕ
Является ли ключ-кандидат ключом, для которого нет подмножества, однозначно идентифицирующего строку?
2 ответа
Ключ-кандидат - это столбец или комбинация столбцов. Или, вернее, набор из одного или нескольких столбцов. Или, вернее, набор столбцов.
Ключ-кандидат - это набор столбцов, который однозначно идентифицирует строки и содержит не меньшее ("правильное") подмножество столбцов, которое однозначно идентифицирует строки.
Суперключ - это набор столбцов, который однозначно определяет строки. Таким образом, ключ-кандидат - это суперключ, который не содержит меньшего суперключа.
В SQL вы не можете объявить пустой ключ-кандидат. Кроме того, UNIQUE NOT NULL и PRIMARY KEY (что в терминах ограничений означает просто UNIQUE NOT NULL) объявляют суперключи, а не ключи как таковые. Если такой набор столбцов объявления не содержит меньший набор столбцов, объявленный как суперключ, тогда объявленный им суперключ является ключом-кандидатом.
В вашем вопросе изначально говорилось, что у вас есть отношение, в котором ключи-кандидаты являются "комбинацией клавиш". Может быть, вы имели в виду что-то вроде небольшого подмножества (столбцов) суперключа или суперключа или ключа кандидата.
Поэтому нет, ключ-кандидат не может содержать ключ-кандидат меньшего размера. С другой стороны, в SQL вы можете иметь объявление UNIQUE/PK в меньшем подмножестве столбцов другого объявления UNIQUE/PK. Но тогда последний не будет ключом-кандидатом.
По определению, никакое правильное подмножество ключа-кандидата не может идентифицировать строку.