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

Я читаю о ключах-кандидатах и ​​составных ключах. Я узнал, что

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

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

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

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


person Shailesh Jaiswal    schedule 10.04.2011    source источник
comment
Ключ кандидата не имеет стандартного значения в SQL.   -  person philipxy    schedule 03.10.2020


Ответы (6)


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

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

person Headshota    schedule 10.04.2011
comment
Составной ключ - это ключ ... он не обязательно должен быть первичным ключом. - person user2864740; 11.09.2015

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

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

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

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

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

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

person Damien_The_Unbeliever    schedule 10.04.2011
comment
Не все таблицы имеют ключ, например. create table tbl (i int); insert tbl values (1), (1), (2), ... - person Andomar; 10.04.2011
comment
@Andomar - такая таблица на самом деле не принадлежит реляционной базе данных (на мгновение с точки зрения пуристов). - person Damien_The_Unbeliever; 10.04.2011

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

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

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

person Ali Ben Messaoud    schedule 10.04.2011
comment
Вы не создаете более одного первичного ключа - вы создаете единственный первичный ключ, состоящий из более чем одного столбца. - person marc_s; 10.04.2011
comment
Ваш ответ вводит в заблуждение. Пожалуйста, исправьте это. Спасибо - person tom redfern; 14.04.2016

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

person KamalDeep    schedule 27.07.2017

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

person jmoreno    schedule 10.04.2011

КЛЮЧ-КАНДИДАТ. Ключ-кандидат - это один или несколько столбцов (вместе взятых), которые помогают нам однозначно идентифицировать строки в таблице.

  • У нас может быть более 1 ключа-кандидата

‹----- Теперь среди всех этих ключей-кандидатов один из них становится первичным (что зависит от разработчика, какой из них подходит для них) ------›

КОМПОЗИТНЫЙ КЛЮЧ: составной ключ состоит из 2 или более столбцов (он не может быть одним столбцом), что помогает нам идентифицировать строки в таблице.

  • Итак, да, составные ключи - кандидатный ключ
  • В случае, если составной ключ сделан как первичный ключ, мы называем его составным первичным ключом (первичный ключ, состоящий из более чем 1 столбца вместе).

-Надеюсь, это поможет

person Ashutosh Tiwari    schedule 03.10.2020
comment
В этом много неправильного. И непонятно. Используйте достаточно слов, предложений и ссылок на части примеров, чтобы четко и полно сказать, что вы имеете в виду. Кроме того, то, что означают эти слова в SQL, отличается от реляционной модели, а CK даже не имеет стандартного значения в SQL. Так что вопрос не ясен. Также это часто задаваемые вопросы, и его следует закрыть без ответа. Также, когда вы ответите, убедитесь, что ваш пост является улучшением всех ответов. - person philipxy; 03.10.2020
comment
Да, я все помнил, и вопрос об авторе, и остальные комментарии, и это здорово. Я дал свой вариант ответа, который, как мне кажется, кто-то может лучше понять. - person Ashutosh Tiwari; 03.10.2020