Почему требуется первичный ключ на SQL сервере, если уникальный ключ, не допускающий значения NULL, может служить этой цели - PullRequest
1 голос
/ 07 августа 2020

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

1 Ответ

2 голосов
/ 07 августа 2020

Первичный ключ не требуется как таковой. Но концептуально он выполняет другую функцию, чем уникальный индекс.

Первичный ключ идентифицирует строку. Уникальный индекс просто гарантирует отсутствие дубликатов. SQL Engine может оптимизировать запросы на основе этой информации. Также по умолчанию многие RDMS создают кластеризованный индекс на основе первичного ключа.

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

Это своего рода разрыв между логическим моделированием базы данных и физическим проектированием / реализацией базы данных - логически сущность (таблица) должна иметь первичный ключ, который однозначно идентифицирует каждый экземпляр (строку). На самом деле вы можете делать со своей системой баз данных все, что хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...