Каково различие между первичным ключом и ограничением на уникальность данных?

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

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

39
задан icktoofay 22 February 2012 в 06:09
поделиться

12 ответов

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

Уникальное ограничение просто означает, что конкретное поле должно быть уникальным.

25
ответ дан 27 November 2019 в 02:10
поделиться

Первичные ключи, по сути, представляют собой комбинацию ( уникальный + не ноль). также при обращении к внешнему ключу rdbms требует первичного ключа.

Уникальный ключ просто накладывает уникальность столбца. Значение поля может быть NULL в случае уникального ключа. Также его нельзя использовать для ссылки на внешний ключ, что вполне очевидно, поскольку u может иметь в нем нулевые значения

0
ответ дан 27 November 2019 в 02:10
поделиться

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

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

Я знаю, что один, возможно, больше форматов таблиц MySql также поддерживает кластерное индексирование , что означает то же самое, что и в SQL Server ... он определяет физический порядок строк на диске.

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

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

0
ответ дан 27 November 2019 в 02:10
поделиться

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

0
ответ дан 27 November 2019 в 02:10
поделиться

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

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

0
ответ дан 27 November 2019 в 02:10
поделиться

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

Ограничение уникальности - это именно то, на что оно похоже.

1
ответ дан 27 November 2019 в 02:10
поделиться
  1. Назначение первичного ключа - однозначно идентифицировать строку в таблице. Ограничение уникальности гарантирует, что значение поля уникально среди строк в таблице.
  2. У вас может быть только один первичный ключ для каждой таблицы. У вас может быть несколько уникальных ограничений для таблицы.
2
ответ дан 27 November 2019 в 02:10
поделиться

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

2
ответ дан 27 November 2019 в 02:10
поделиться

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

Допустим, у вас есть таблица Employees, PK EmployeeID. Вы можете, например, добавить уникальное ограничение для SSN.

4
ответ дан 27 November 2019 в 02:10
поделиться

Первичные ключи не могут быть пустыми. Уникальные ключи могут.

55
ответ дан 27 November 2019 в 02:10
поделиться

В большом количестве ответов здесь обсуждались свойства PK и уникальные ограничения. Но более важно понимать разницу в концепциях.

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

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

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

0
ответ дан 27 November 2019 в 02:10
поделиться
  1. Первичный ключ не может быть нулевым, но уникальный может иметь только одно нулевое значение.
  2. Первичный ключ создает индекс кластера автоматически, но уникальный ключ - нет.
  3. Таблица может иметь только один первичный ключ, но уникальный ключ более одного.
12
ответ дан 27 November 2019 в 02:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: