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