В чем разница между ключом-кандидатом и составным ключом?
Я читаю о ключах-кандидатах и составных ключах. Я узнал, что
- ключ-кандидат может квалифицироваться как первичный ключ и может быть одним столбцом или комбинацией столбцов
- а составной ключ также представляет собой комбинацию столбцов.
Для составного ключа я ссылался на эту ссылку
как создать составной ключ с помощью SQL Server Management Studio?
Таким образом, когда и ключ-кандидат, и составной ключ представляют собой комбинацию столбцов, они могут квалифицироваться как первичный ключ. Тогда в чем же разница? Не могли бы вы объяснить примеры?
Ответы
Ответ 1
Как я знаю, ключ-кандидат - это уникальный ключ, который можно использовать в качестве первичного ключа. но не обязательно используется как один.
Композитный ключ - это ключ из двух или более атрибутов, который однозначно идентифицирует строку.
Ответ 2
Ключ - это набор столбцов, которые могут использоваться для однозначной идентификации каждой строки в таблице.
В каждой таблице есть хотя бы один ключ. Скажем, мы определили каждый возможный ключ для таблицы. Каждый из этих ключей является ключом-кандидатом.
Когда мы рассмотрим каждый из этих ключей, ключ может состоять из столбцов (!), одного столбца или более одного столбца, которые при объединении однозначно идентифицируют каждую строку. Термин составной ключ конкретно относится к ключу, который состоит из более чем одного столбца.
В SQL было решено, что один ключ должен быть выбран и обработан "более равным", чем другие ключи таблицы. Этот ключ называется первичным ключом. Другие ключи также могут быть объявлены в таблице, их обычно называют уникальными Contsraints.
(!) В SQL вам не разрешено объявлять ключ без столбцов, хотя иногда это было бы полезно (подумайте о таблице, в которой должна быть только одна строка, где каждый столбец представляет информацию о конфигурации)
В качестве примера таблицы с несколькими ключами, все из которых являются составными. Представьте себе систему встреч, где клиент и консультант встречаются в комнате в определенное время:
CREATE TABLE Appointments (
ClientID int not null,
CounsellorID int not null,
RoomID int not null,
AppointmentTime datetime not null
)
Ключами-кандидатами для этой таблицы являются {ClientID, AppointmentTime}, {CounsellorID, AppointmentTime} и {RoomID, AppointmentTime}. Любая из этих комбинаций столбцов может использоваться для однозначной идентификации строки в таблице, и все они являются составными ключами.
Какой из них мы будем объявлять как первичный ключ, будет зависеть (вероятно) от нашей собственной интерпретации основного "фокуса" системы. В основном мы занимаемся использованием номеров или клиентами или консультантами? В любом случае мы выберем один и объявим его первичным ключом. Мы также надеемся объявить другие ключи уникальными ограничениями.
Или мы могли бы решить использовать суррогат и объявить столбец AppointmentID
, используя любые средства автоматической нумерации, доступные в базе данных. Тогда это может быть (некомпозиционный) первичный ключ. Но мы все равно должны объявить другие ключи для таблицы.
Ответ 3
Ключ кандидата: Номинал для поля первичного ключа известен как ключ-кандидат.
Составной ключ: Создание нескольких первичных ключей совместно называется составным.
Обновление:
Ключ-кандидат - это уникальный ключ, который может использоваться как первичный ключ.
Компонентный ключ является ключом из двух или более атрибутов, которые однозначно идентифицируют строку.
Ключ - это набор столбцов, которые могут использоваться для однозначной идентификации каждой строки в таблице.
Ответ 4
Ключ-кандидат - это только столбец или комбинация столбцов, которые могут использоваться в качестве первичного ключа, то есть кандидата или потенциального первичного ключа. Совокупный ключ по определению представляет собой два или более столбца, которые могут использоваться для идентификации ряд. Чаще всего, когда речь идет о составных ключах, вопрос заключается в том, следует ли вместо этого использовать первичный ключ вместо суррогатного ключа. В некоторых случаях вы можете услышать, что люди ссылаются на составной ключ, который не является первичным ключом (то есть не уникальным для всех строк), и в этом случае он (надеюсь) просто способ ссылаться на многоколоночное соединение на непервичном ключе (вместо того, чтобы выполнять перекрестное соединение и фильтровать строки в предложении where).
Ответ 5
КАНДИДАТНЫЙ КЛЮЧ: - Ключ-кандидат является уникальным ключом и является "Кандидатом" для первичного ключа.
КОМПОЗИТНЫЙ КЛЮЧ: - "Состав" двух или более столбцов в качестве первичного ключа рассматривается как составной.