В чем разница между ключом-кандидатом и составным ключом? - PullRequest
19 голосов
/ 10 апреля 2011

Я читаю о возможных ключах и составных ключах. Я узнал, что

  • ключ-кандидат может квалифицироваться как первичный ключ, и это может быть один столбец или комбинация столбцов
  • и составной ключ также является комбинацией столбцов.

Для составного ключа я отослал эту ссылку

как создать составной ключ в SQL Server Management Studio?

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

Ответы [ 5 ]

15 голосов
/ 10 апреля 2011

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

Каждая таблица имеет хотя бы один ключ.Допустим, мы определили каждый возможный ключ для таблицы.Каждый из этих ключей является ключом-кандидатом.

При рассмотрении каждого из этих ключей ключ может состоять из столбцов (!), Одного столбца или нескольких столбцов, которые при совместном рассмотрении однозначно определяют каждый из них.строка.Термин составной ключ конкретно относится к ключу, который состоит из более чем одного столбца.

В SQL было решено, что один ключ должен быть выбран и обработан «более равным», чем другие ключи таблицы.Этот ключ называется первичным ключом.Другие ключи также могут быть объявлены в таблице, они обычно называются уникальными ограничениями.

(!) В 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,Время встречи}.Любая из этих комбинаций столбцов может использоваться для уникальной идентификации строки в таблице, и все они являются составными ключами.

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

Или мы могли бы решить использовать суррогат и объявить столбец AppointmentID, используя все доступные в базе данных средства автоматической нумерации.Тогда это может быть (не составной) первичный ключ.Но мы все равно должны объявить другие ключи для таблицы.

14 голосов
/ 10 апреля 2011

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

Составной ключ - это ключ из двух или более атрибутов, который однозначно идентифицирует строку.

6 голосов
/ 10 апреля 2011

Ключ-кандидат: Номинант на поле первичного ключа известен как ключ-кандидат.

Составной ключ: Создание нескольких первичных ключей совместно называется составнымключ.

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

4 голосов
/ 27 июля 2017

КАНДИДАТИВНЫЙ КЛЮЧ : - Ключ-кандидат является уникальным ключом и является "Кандидатом" в качестве первичного ключа. КОМПОЗИЦИОННЫЙ КЛЮЧ : - "Композиция" из двух или более столбцов в качестве первичного ключа рассматривается как составной ключ.

2 голосов
/ 10 апреля 2011

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

...