TL; DR Многое может подразумеваться PRIMARY KEY
(уникальность, ссылочная возможность, ненулевое значение, кластеризация и т. Д.), Но ничего, что не может быть указано явно с использованием UNIQUE
.
Я полагаю, что если вы тот тип кодировщика, которому нравится удобство SELECT * FROM...
без необходимости перечислять все эти надоедливые столбцы, тогда PRIMARY KEY
- это то, что вам нужно.
relvar может иметь несколько ключей, но мы выбираем только один для подчеркивания
и назовите это первичным ключом. Выбор произвольный, поэтому
Понятие первичного не очень важно с логической точки зрения
зрения. Общая концепция ключа, однако, очень важна!
термин «ключ-кандидат» означает то же самое, что и ключ (то есть
кандидата не имеет реального значения - это было предложено Тедом Коддом
потому что он рассматривал каждый ключ в качестве кандидата на выдвижение в качестве
первичный ключ) ... SQL позволяет подмножеству столбцов таблицы быть
объявлен в качестве ключа для этой таблицы. Это также позволяет одному из них быть
назначен в качестве первичного ключа. Указание ключа для основных марок
для определенного удобства в связи с другими
ограничения, которые могут понадобиться
Что такое ключ? Хью Дарвен
обычно ... выделять один ключ как первичный ключ (и любой другой
ключи для рассматриваемого relvar затем называются альтернативными ключами).
Но следует ли выбирать какой-то ключ в качестве основного, и если да, то какой,
по сути психологические проблемы, выходящие за рамки
реляционная модель как таковая. В соответствии с хорошей практикой, большинство базовых
relvars, вероятно, должен иметь первичный ключ, но, повторяя это правило,
если это правило, на самом деле это не вопрос отношений как таковой ... Сильный
рекомендация [для пользователей SQL]: во всяком случае, для базовых таблиц используйте
ОСНОВНЫЕ КЛЮЧЕВЫЕ и / или УНИКАЛЬНЫЕ спецификации, чтобы гарантировать, что каждый такой
Таблица имеет хотя бы один ключ.
SQL и реляционная теория: как написать точный код SQL
С. Дж. Дата
В стандартном SQL PRIMARY KEY
- подразумевает уникальность, но вы можете указать это явно (используя
UNIQUE
).
- подразумевает
NOT NULL
, но вы можете указать это явно при создании столбцов (но вы все равно должны избегать нулевых значений!)
- позволяет вам опустить его столбцы в
FOREIGN KEY
, но вы можете указать их явно.
- может быть объявлено только для одного ключа на таблицу, но неясно, почему (Кодд, который первоначально предложил концепцию, не вводил такое ограничение).
В некоторых продуктах PRIMARY KEY
подразумевает кластеризованный индекс таблицы, но вы можете указать это явно (вы можете не захотеть, чтобы первичный ключ был кластеризованным индексом!)
Для некоторых людей PRIMARY KEY
имеет чисто психологическое значение:
- они думают, что это означает, что на ключ будет ссылаться внешний ключ (это было предложено Codd, но фактически не принято ни стандартным SQL, ни поставщиками SQL).
- они считают, что это означает единственный ключ таблицы (но отказ от применения других ключей-кандидатов приводит к потере целостности данных).
- они думают, что это подразумевает «суррогатный» или «искусственный» ключ, который не имеет значения для бизнеса (но на самом деле навязывает нежелательное значение для предприятия, будучи открытым для пользователей).