Ключ-кандидат — это столбец или комбинация столбцов. Или, правильнее, набор из одного или нескольких столбцов. Или правильнее набор столбцов.
Ключ-кандидат — это набор столбцов, который однозначно идентифицирует строки и не содержит меньшего («правильного») подмножества столбцов, однозначно идентифицирующих строки.
Суперключ — это набор столбцов, который однозначно идентифицирует строки. Таким образом, ключ-кандидат — это суперключ, который не содержит суперключа меньшего размера.
В SQL вы не можете объявить пустой ключ-кандидат. Кроме того, UNIQUE NOT NULL и PRIMARY KEY (что с точки зрения ограничений просто означает UNIQUE NOT NULL) объявляют суперключи, а не ключи как таковые. Если набор столбцов такого объявления не содержит меньший набор столбцов, объявленный как суперключ, тогда суперключ, который он объявляет, является ключом-кандидатом.
В вашем вопросе изначально говорилось, что у вас есть отношение, в котором ключи-кандидаты представляют собой «комбинацию ключей». Возможно, вы имели в виду что-то вроде того, что некоторое меньшее подмножество (столбцов) суперключа является суперключом или ключом-кандидатом.
Так что нет, ключ-кандидат не может содержать меньший ключ-кандидат. С другой стороны, в SQL вы можете иметь объявление UNIQUE/PK для меньшего подмножества столбцов другого объявления UNIQUE/PK. Но тогда последний не будет ключом-кандидатом.
person
philipxy
schedule
27.07.2014