Идея обозначения одного ключа на таблицу в качестве «первичного» по сути является излишней, устаревшей и во многих отношениях очень бесполезной.
Это излишне, поскольку логически говоря все ключи могут выполнять и выполняют одну и ту же функцию,Оставляя в стороне ограничения любой конкретной СУБД, логически говоря, «первичный» ключ обладает точно такими же возможностями и функциональностью, что и любой другой ключ той же таблицы.Поэтому обозначение одного ключа как «первичного» имеет такое же важное значение, как того хочет разработчик базы данных или пользователь.Различие: произвольное (это слово используется в EFCodd) и чисто психологическое (CJDate).
Концепция устарела, поскольку в современной практике она является обычной для таблициметь более одного ключа и для разных пользователей и потребителей данных иметь разные «предпочтительные» или «наиболее значимые» идентификаторы для одного и того же фрагмента данных.Например: конечный пользователь может распознать и использовать один ключ таблицы (часто тот, который называется «бизнес» или «естественный» ключ);программист среднего уровня, возможно, будет более заинтересован в использовании другого ключа в той же таблице (например, «суррогатного» ключа);С другой стороны, администратор БД может рассматривать «кластерный» ключ как наиболее важный, или, возможно, он одинаково обеспокоен всеми ключами, имеющими индексы.Таким образом, предпочтительный или наиболее важный ключ зависит от точки зрения и предполагаемого использования - это вовсе не жесткая структурная особенность.
Концепция «первичного ключа» бесполезна по крайней мере по двум причинам.Во-первых, производители программного обеспечения для инструментов разработки баз данных, СУБД и инструментов моделирования, к сожалению, прикрепили все виды программных функций к ключам, обозначенным как «первичный ключ».Это на самом деле работает против оригинальной концепции.Нам больше не нужно просто выбирать один ключ на таблицу, что имеет какое-то логическое значение для дизайнера или пользователя.Мы поощряемся или даже вынуждены выбирать «первичные» ключи для поддержки той или иной функции в программном обеспечении X, Y или Z независимо от других соображений.Это очень прискорбно, потому что оно представляет собой ограничение и отсутствие гибкости в программном обеспечении.Мы должны иметь возможность выбирать подходящий ключ для каждой цели и не ограничиваться одним ключом на таблицу для для каждой цели.
Последняя причина, по которой первичные ключи бесполезны, заключается в том, что ониненужное отвлечение от более важных вопросов проектирования баз данных.Концепция первичного ключа часто преувеличивается в образовании, в учебниках по проектированию баз данных и в повседневной практике управления данными.Зачастую это наносит ущерб или фактически исключает более фундаментальную проблему, то есть то, что все ключей и все другие ограничения целостности могут быть столь же важны для успешного проектирования и реализации базы данных.
Я часто утверждал, что термин «первичный ключ» следует исключать и исключать из словаря управления данными, а также из программного обеспечения для управления данными.