При разработке таблиц я выработал привычку иметь один столбец, который является уникальным и который я делаю первичным ключом. Это достигается тремя способами в зависимости от требований:
- Столбец целочисленного идентификатора, который автоматически увеличивается.
- Уникальный идентификатор (GUID)
- столбец с короткими символами (x) или целым числом (или другим относительно небольшим числовым типом), который может служить столбцом идентификатора строки
Номер 3 будет использоваться для довольно небольшого поиска, в основном для чтения таблиц, которые могут иметь уникальный строковый код статической длины, или числового значения, такого как год или другое число.
По большей части все остальные таблицы будут иметь автоинкрементное целое число или первичный ключ с уникальным идентификатором.
Вопрос: -)
Недавно я начал работать с базами данных, у которых нет согласованного идентификатора строки, и первичные ключи в настоящее время кластеризованы по различным столбцам. Некоторые примеры:
- DateTime / символ
- Дата и время / VARCHAR
- символ / NVARCHAR / NVARCHAR
Есть ли веские доводы для этого? Я бы всегда определял столбец идентификаторов или уникальных идентификаторов для этих случаев.
Кроме того, существует множество таблиц без первичных ключей. Каковы веские причины для этого?
Я пытаюсь понять, почему таблицы были спроектированы такими, какими они были, и мне кажется, что это большой беспорядок, но, возможно, для этого были веские причины.
Третий вопрос, помогающий мне расшифровать ответы: в тех случаях, когда для составного первичного ключа используются несколько столбцов, есть ли конкретное преимущество этого метода по сравнению с суррогатным / искусственным ключом? Я думаю в основном о производительности, обслуживании, администрировании и т. Д.