разница между первичным ключом и уникальным ключом - PullRequest
227 голосов
/ 05 марта 2012

Я использую базу данных MySQL. У меня путаница между первичным ключом и уникальным ключом.

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

Ответы [ 15 ]

202 голосов
/ 12 ноября 2012

Первичный ключ:

  • В таблице может быть только один первичный ключ
  • В некоторых СУБД он не может быть NULL - например, MySQL добавляетNOT NULL
  • Первичный ключ - это уникальный идентификатор ключа записи

Уникальный ключ:

  • Может быть большеодин уникальный ключ в одной таблице
  • Уникальный ключ может иметь NULL значения
  • Это может быть ключ-кандидат
  • Уникальный ключ может быть NULL;несколько строк могут иметь значения NULL и поэтому не могут считаться "уникальными"
73 голосов
/ 26 июня 2012

Уникальный ключ (Великобритания) : Это столбец или группа столбцов, которые могут идентифицировать уникальность в строке.

Первичный ключ (PK) : Это также столбец или группа столбцов, которые могут идентифицировать уникальность в строке.

Итак, Первичныйключ - это просто другое имя уникального ключа, но реализация по умолчанию в SQL Server отличается для первичного и уникального ключа.

По умолчанию:

  1. PK создает кластеризованный индекс, а Великобритания создает некластеризованный индекс.
  2. PK не является нулевым, но Великобритания допускает нулевые значения (Примечание: по умолчанию)
  3. В таблице может быть только один и только один PK, но может быть несколько

Это действительно зависит от вашей цели при принятии решения о создании Великобритании или PK.Это следует из аналогии типа «Если есть команда из трех человек, значит, все они равные, но будет один из них, который будет парой равных: PK и Великобритания имеют схожие отношения».Я хотел бы предложить прочитать эту статью: пример, приведенный автором, может показаться неуместным, но попытаться получить общее представление.

http://tsqltips.blogspot.com/2012/06/difference-between-unique-key-and.html

40 голосов
/ 10 января 2014

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

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

Для таблицы DB существует так много ключей, которые могут иметь первичный ключ.Таким образом, все ключи, первичный ключ, уникальный ключ и т. Д. Вместе называются ключом-кандидатом.Однако администратор базы данных, выбравший ключ из ключа-кандидата для поиска записей, называется Первичным ключом.

Разница между Первичным ключом и Уникальным ключом

1.Поведение: Первичный ключ используется для идентификации строки (записи) в таблице, тогда как Уникальный ключ предназначен для предотвращения дублирования значений в столбце (за исключением пустой записи).

2.Индексирование: По умолчанию SQL-движок создает кластеризованный индекс по первичному ключу, если он не существует, и некластеризованный индекс по уникальному ключу.

3.Обнуляемость: Первичный ключ не включает значения Null, тогда как Уникальный ключ может.

4.Существование: Таблица может иметь не более одного первичного ключа, но может иметь несколько уникальных ключей.

5.Модифицируемость: Вы не можете изменять или удалять первичные значения, но значения уникального ключа могут.

Для получения дополнительной информации и примеров:

http://dotnetauthorities.blogspot.in/2013/11/Microsoft-SQL-Server-Training-Online-Learning-Classes-Integrity-Constraints-PrimaryKey-Unique-Key_27.html

26 голосов
/ 05 марта 2012

Первичный ключ должен быть уникальным.

Уникальный ключ не должен быть первичным ключом - см. ключ-кандидат .

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

16 голосов
/ 05 марта 2012

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

Также по той же причине первичный ключ не может иметь значение NULL (по крайней мере, в Oracle, не уверен в других базах данных)

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

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

Уникальные ключи с другой стороны могут меняться столько, сколько вы хотите.

15 голосов
/ 16 ноября 2015

Разница между первичным ключом и уникальным ключом

+-----------------------------------------+-----------------------------------------------+
|                Primary Key              |                    Unique Key                 |
+-----------------------------------------+-----------------------------------------------+
| Primary Key can't accept null values.   | Unique key can accept only one null value.    |
+-----------------------------------------+-----------------------------------------------+
| By default, Primary key is clustered    | By default, Unique key is a unique            |
| index and data in the database table is | non-clustered index.                          |
| physically organized in the sequence of |                                               |
| clustered index.                        |                                               |
+-----------------------------------------+-----------------------------------------------+
| We can have only one Primary key in a   | We can have more than one unique key in a     |
| table.                                  | table.                                        |
+-----------------------------------------+-----------------------------------------------+
| Primary key can be made foreign key     | In SQL Server, Unique key can be made foreign |
| into another table.                     | key into another table.                       |
+-----------------------------------------+-----------------------------------------------+

Подробную информацию можно найти по адресу:
http://www.dotnet -tricks.com / Учебник / SQLServer / V2bS260912-разница-между-Primary-Key-и-Unique-Key.html

7 голосов
/ 05 марта 2012

Первичный ключ - это уникальный ключ.

Каждая таблица должна иметь максимум ОДИН первичный ключ, но может иметь несколько уникальных ключей. Первичный ключ используется для уникальной идентификации строки таблицы. Первичный ключ не может быть NULL, поскольку NULL не является значением.

6 голосов
/ 19 ноября 2017
  • Считайте, что имя таблицы занято.
  • Первичный ключ
  • Первичный ключ не может принимать нулевые значения.Первичный ключ обеспечивает уникальность столбца.В таблице может быть только один первичный ключ.
  • Уникальный ключ
  • Уникальный ключ может принимать нулевые значения.уникальный ключ также обеспечивает уникальность столбца. Вы можете подумать, если уникальный ключ содержит нулевые значения, то почему он может быть уникальным?да, хотя он может принимать нулевые значения, он обеспечивает уникальность столбца.просто посмотрите на картинку. Здесь Emp_ID является первичным, а Citizen ID уникальным.Надеюсь, вы понимаете.Мы можем использовать несколько уникальных ключей в таблице.enter image description here
3 голосов
/ 27 декабря 2018

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

Назначение первичного ключа :Чтобы однозначно идентифицировать строку в базе данных => Строка представляет отдельный экземпляр типа сущности, смоделированный таблицей.Первичный ключ обеспечивает целостность объекта, AKA Entity Integrity.Первичный ключ будет кластеризованным индексом, то есть он определяет порядок, в котором данные физически хранятся в таблице.

Назначение уникального ключа : Хорошо, с помощью первичного ключа у нас есть способоднозначно определить строку.Но у меня есть такая потребность в бизнесе, чтобы другой столбец / набор столбцов имели уникальные значения.Технически, учитывая, что этот столбец (столбцы) уникален, он может быть кандидатом для обеспечения целостности объекта.Но, насколько нам известно, этот столбец может содержать данные, поступающие из сторонней организации, в которых у меня могут возникнуть сомнения относительно уникальности.Я не могу доверять этому, чтобы обеспечить целостность объекта.Я просто делаю это уникальным ключом для выполнения моих бизнес-требований.

Вот, пожалуйста!

1 голос
/ 17 апреля 2016

Если ваш дизайн базы данных таков, что им не нужен внешний ключ, вы можете использовать уникальный ключ (, но помните, что уникальный ключ допускает одно нулевое значение ).

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

Чтобы увидеть разницу между посещением уникального и первичного ключа здесь

...