Рассмотрите использование ограничения UNIQUE когда:
■ Таблица содержит столбцы, которые не являются первичным ключом, но индивидуально или в совокупности, должны содержать уникальные значения.
■ Бизнес логика диктует, что данные, хранимые в столбце, должны быть уникальными.
■ Данные, хранимые в столбце, имеют естественные ограничения уникальности на значения, которые он может содержать, например, налоговый номер (ИНН) или паспортные данные.
Вы можете создать ограничения UNIQUE при использовании раздела UNIQUE уровня столбца или уровня таблицы в операторах CREATE TABLE или ALTER TABLE. Следующий код демонстрирует использование оператора Transact-SQL для создания таблицы HumanResources.Employees базы данных AdventureWorks. В примере определяется ограничение UNIQUE на столбец NationalIDNumber, и гарантируется, что столбец не содержит null значений и то, что индекс, созданный, чтобы поддержать ограничение UNIQUE, некластерный.
CREATE TABLE [HumanResources].[Employee](
[EmployeeID] [int] IDENTITY(1,1) NOT NULL,
[NationalIDNumber] [nvarchar](15) NOT NULL UNIQUE NONCLUSTERED,
[ContactID] [int] NOT NULL,
…
)
Внешний ключ - столбец или совокупность столбцов, которая используется, чтобы установить и реализовать связь между данными в двух таблицах. Ограничение внешнего ключа FOREIGN KEY реализует ссылочную целостность. Ограничение FOREIGN KEY определяет ссылку на столбец - первичный ключ (PRIMARY KEY) или столбец с ограничением уникальности UNIQUE в той же самой или другой таблице. Значения в столбце внешнего ключа должны быть в столбце первичного ключа PRIMARY KEY. Так как к значениям первичного ключа существуют ссылки, то эти значения не могут быть изменены или удалены.
Прежде, чем приступить к реализации ограничения FOREIGN KEY, следует рассмотреть следующие факты:
■ Ограничение FOREIGN KEY обеспечивает ссылочную целостность по одному или нескольким столбцам. Число столбцов и их типы данных, которые определены в разделе FOREIGN KEY, должны соответствовать числу столбцов и их типам данных в разделе REFERENCES.
■ В отличие от ограничений PRIMARY KEY и UNIQUE ограничения FOREIGN KEY не создают индексы автоматически.
■ Чтобы другой пользователь мог создать ограничение FOREIGN KEY, ссылаясь на таблицу, которая принадлежит Вам, Вы должны предоставить этому пользователю право REFERENCES на Вашу таблицу. Это гарантирует, что ни один пользователь не может ограничить операции на Вашей таблице, создавая FOREIGN KEY со ссылкой на нее.
■ Ограничение FOREIGN KEY, которое использует только раздел REFERENCES без раздела FOREIGN KEY, относится к одному столбцу таблицы.