В логической модели таблица должна иметь хотя бы один ключ.Нет оснований произвольно указывать, что один из ключей является «первичным»;все ключи равны.Хотя понятие «первичный ключ» можно проследить до ранней работы Теда Кодда, ошибка, обнаруженная на ранних этапах, уже давно исправлена в теории отношений.
К сожалению, PRIMARY KEY
нашел свой путь в SQL, и с тех пор нам приходилось с этим мириться.Таблицы SQL могут иметь повторяющиеся строки, и, если вы считаете, что набор результатов запроса SELECT
также является таблицей, то в таблицах SQL также могут быть строки с дублированием.Реляционные теоретики очень не любят SQL.Тем не менее, только потому, что SQL позволяет вам делать всякие дурацкие нереляционные вещи, это не значит, что вы должны их делать.Рекомендуется, чтобы каждая таблица SQL имела хотя бы один ключ.
В SQL использование PRIMARY KEY
само по себе имеет последствия, например NOT NULL
, UNIQUE
, ссылка таблицы по умолчанию для внешних ключей.,В SQL Server использование PRIMARY KEY
само по себе имеет последствия, например, кластеризованный индекс таблицы.Однако во всех этих случаях неявное поведение можно сделать явным, используя специальный синтаксис.
Вы можете использовать UNIQUE
(ограничение, а не индекс) и NOT NULL
в комбинации для принудительного применения ключей в SQL.Следовательно, нет, первичный ключ (или даже PRIMARY KEY
) не требуется в SQL Server.