Какую уникальную функциональность предоставляют первичные ключи?
В то время как я назвал вопрос языком, крепко посаженным в щеку, мой вопрос серьезен. Прежде чем начнется какое-либо пламя, я не говорю о создании базы данных без ограничений или ссылочной целостности. Однако, насколько я могу судить, SQL Server может покончить с ключевым словом primary key
.
- Уникальные индексы покрывают, ну, уникальность
- Недействительность столбца, основанная на столбцах, охватывает требование нечетности для PKs
- PK не нужно кластеризовать, чтобы он не
- Внешние ключи могут и часто выполняются с уникальными индексами, а не с ПК
- Даже MSDN заявляет, что создается уникальный индекс для обеспечения уникальности ПК
Я согласен с тем, что логически Первичный ключ создает немного намерения относительно модели данных, но так ли это? [сарказм] О, и мы получим эту маленькую иконку с символами SSMS при проектировании стола! [/Сарказм]
ИЗМЕНИТЬ
Из комментариев видно, что я не задавал этот вопрос так четко, как я думал. Я согласен с тем, что первичные ключи важны с логической точки зрения.
Я не спрашиваю:
- должен ли я выбрать int или varchar для моего ПК
- нужно ли кластеризовать ПК, или как определить, что должно быть кластеризованным.
- как однозначно идентифицировать строки
Мое намерение состояло в том, чтобы спросить: "Какие функции предоставляет PK, который не может быть разумно реализован с использованием других функций?" Я не предлагаю сходить с ума здесь - например, с помощью триггера для обеспечения уникальности вместо уникальных ограничений/индексов. Разумное является ключевым словом здесь - и использование уникального индекса/ограничения кажется очень похожим на определение PK.