В чем разница между первичным ключом и идентификатором?


в БД SQL Server в чем разница между первичным ключом и столбцом идентификаторов? Столбец может быть первичным ключом, но не тождественных. Однако столбец не может быть идентификатором без первичного ключа.

в дополнение к различиям, что предлагает столбец PK и Identity, которого нет только в столбце PK?

правка: Упс. Как указано ниже и теперь проверено мной, столбец может быть идентификатором, не будучи ПК. Когда я проверил это, мой тип столбца был строку и я не смог установить его личность. Обретать смысл.

6 55

6 ответов:

столбец определенно может быть идентификатором, не будучи PK.

идентификатор-это просто автоматически увеличивающийся столбец.

первичный ключ-это уникальный столбец или столбцы, которые определяют строки.

эти два часто используются вместе, но нет никакого требования, чтобы это было так.

этот ответ больше о том, почему идентичность и primay ключ, чем то, что они есть, так как Джо ответил, что правильно выше.

идентификатор-это значение, которое вы контролируете SQL. Личность является функцией ряда. Это последовательное увеличение или уменьшение значения, по крайней мере, в SQL Server. Он никогда не должен быть изменен и пробелы в значении должны быть проигнорированы. Значения идентификаторов очень полезны при связывании таблицы B с таблицей A, так как значение никогда не дублируется. Личность не самая лучшая выбор для кластеризованного индекса в каждом случае. Если таблица содержит данные аудита, кластеризованный индекс может быть лучше создан на дату возникновения, поскольку он представит ответ на вопрос "что произошло между сегодняшним днем и четырьмя днями назад" с меньшей работой, потому что записи для дат являются последовательными на страницах данных.

первичный ключ делает столбец или столбцы в строке уникальными. Ключ Primay-это функция столбца. Только один ключ primay может быть определен в любой таблице, но несколько могут быть созданы уникальные индексы, имитирующие первичный ключ. Кластеризация первичного ключа не всегда является правильным выбором. Рассмотрим телефонную книгу. Если телефонная книга сгруппирована по ключу primay (номер телефона), запрос на возврат телефонных номеров на "первой улице" будет очень дорогостоящим.

общие правила, которым я следую для идентификации и первичного ключа:

  1. всегда используйте столбец идентификаторов
  2. создайте кластеризованный индекс для столбца или столбцов, которые используются в поиске диапазона
  3. держите кластеризованный индекс узким, так как кластеризованный индекс добавляется в конец каждого другого индекса
  4. создание ключа primay и уникальных индексов для отклонения повторяющихся значений
  5. узкие клавиши лучше
  6. создать индекс для каждого столбца или столбцов, используемых в соединениях

Это мои общие правила.

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

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

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

ИЗМЕНЕНИЯ, СДЕЛАННЫЕ НА ОСНОВЕ ОБРАТНОЙ СВЯЗИ

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

ключи-это индексы с уникальным ограничением. Это отличает их от неключевых индексов.

любой индекс с несколькими столбцами называется "составной индекс".

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

в зависимости от конструкции стола, один может не иметь первичный ключ.

первичный ключ-это просто "первичный ключ". Это основной, который определяет уникальный идентификатор строки. В зависимости от конструкции таблицы, это может быть неправильное название и несколько ключей выражают уникальность.

в SQL Server первичный ключ может быть кластеризован. Это означает, что остальные столбцы прикреплены к этому ключу на конечном уровне индекс. Другими словами, как только SQL Server нашел ключ, он также нашел строку (чтобы быть ясным, это из-за clustered аспект).

столбец идентификаторов-это просто метод создания уникального идентификатора для строки.

эти два часто используются вместе, но это не является обязательным требованием.

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

вы можете использовать IDENTITY не только с целыми числами, но и с любым числовым типом данных, который имеет масштаб 0

первичный ключ может иметь масштаб, но его не требуется.

IDENTITY, в сочетании с первичным ключом или уникальным ограничением, позволяет вам предоставить простой уникальный идентификатор строки