2016-05-23 2 views
0

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

+2

Столбец pk никогда не может быть нулевым, может быть уникальный столбец. – jarlh

+1

http://stackoverflow.com/questions/9565996/difference-between-primary-key-and-unique-key –

ответ

1

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

+7

Вырезать и вставить мой комментарий, и получил вознаграждение ... – jarlh

2

Некоторые различия я мог думать:

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

Некоторые взяты из Википедии - Unique key - Differences from primary key constraints:

ограничение первичного ключа

  1. Первичный ключ не может позволить нулевой (первичный ключ не может быть определена на колоннах, которые позволяют обнуляет).
  2. В каждой таблице не может быть более одного первичного ключа.
  3. На некоторых СУБД первичный ключ по умолчанию генерирует кластерный индекс.

Уникальное ограничение

  1. Уникальное ограничение может быть определено на колоннах, которые позволяют аннулирует.
  2. Каждая таблица может иметь несколько уникальных ключей.
  3. На некоторых СУБД уникальный ключ генерирует некластеризованный индекс по умолчанию.
+1

Надеюсь, вы не возражаете против фиксаций , Для меня это правильный ответ :)! Благодаря! – ivanleoncz

0

Трудно сказать, что, возможно, искал интервьюер. Есть много вариантов.

В стандартном SQL, ограничение объявлено primary key и ограничение объявлено not null unique вести себя так же на логическом уровне. Например, оба из них могут быть объектом ссылок на внешние ключи. Возможно, интервьюер хотел узнать о том, как это подходит null. Нечеткое ограничение unique допускает null; ограничение первичного ключа неявно объявляет каждый столбец not null в T-SQL.

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

SQL Server в частности

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

Возможно, интервьюер хотел посмотреть, не скажете ли вы о кластеризации.Ограничение первичного ключа по умолчанию составляет clustered в SQL Server, но индекс по умолчанию равен nonclustered.

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

0

Разница между UNIQUE ограничением и первичным ключом является то, что за стол вы можете иметь только один первичный ключ, но вы можете определить более одного UNIQUE ограничений. Основными ограничениями ключа являются: не может быть опущен. УНИКАЛЬНЫЕ ограничения могут быть nullable. Когда вы создаете ограничение UNIQUE, база данных автоматически создает индекс UNIQUE. Для баз данных MS SQL Server PRIMARY KEY генерирует уникальный CLUSTERED INDEX. УНИКАЛЬНОЕ ограничение приведет к созданию уникального НЕУКЛАДНОГО ИНДЕКСА.

Смежные вопросы