Ограничения являются частью определения схемы базы данных.
Ограничение обычно связано с таблицей и создается с помощью оператора SQL CREATE CONSTRAINT
или CREATE ASSERTION
.
Они определяют определенные свойства, которым должны соответствовать данные в базе данных. Они могут применяться к столбцу, всей таблице, нескольким таблицам или всей схеме. Надежная система базы данных гарантирует, что ограничения всегда соблюдаются (кроме, возможно, внутри транзакции, для так называемых отложенных ограничений).
Общие виды ограничений:
Чтобы понять, зачем нам нужны ограничения, вы должны сначала понять значение целостности данных.
Целостность данных означает достоверность данных. Ваши данные действительны? Представляют ли ваши данные то, для чего вы их создали?
Вы можете подумать о том, какие странные вопросы я задаю, но, к сожалению, слишком часто базы данных заполняются мусорными данными, недопустимыми ссылками на строки в других таблицах, которых давно нет. .. и значения, которые больше ничего не значат для бизнес-логики вашего решения.
Весь этот мусор не только снижает вашу производительность, но и является бомбой замедленного действия в логике вашего приложения, которая в конечном итоге будет извлекать данные, которые оно не предназначено для понимания.
Ограничения - это правила, которые вы создаете во время разработки, которые защищают ваши данные от повреждения. Это необходимо для выживания вашего сердца, дитя решения для баз данных. Без ограничений ваше решение определенно распадется со временем и при интенсивном использовании.
Вы должны признать, что проектирование вашей базы данных - это только рождение вашего решения. Здесь после этого он должен жить (надеюсь) долгое время и терпеть все виды (странного) поведения со стороны своих конечных пользователей (то есть клиентских приложений). Но этот этап разработки имеет решающее значение для долгосрочного успеха вашего решения! Уважайте его и уделяйте ему необходимое время и внимание.
Один мудрец однажды сказал: «Данные должны защищать себя!» . И это то, что делают ограничения. Это правила, которые сохраняют данные в вашей базе данных как можно более достоверными.
Есть много способов сделать это, но в основном они сводятся к следующему:
sys.check_constraints
в образце базы данных AdventureWorks. Как я здесь намекнул, для построения лучший и самый защитный подход к ограничению для проектирования вашей базы данных. Сначала вам нужно знать возможности и ограничения различных типов ограничений, указанных выше. Дополнительные материалы для чтения могут включать:
Ограничения внешнего ключа - Microsoft
Ограничение внешнего ключа - w3schools
Удачи! ;)
Ограничения могут использоваться для обеспечения соблюдения определенных свойств данных. Простой пример - ограничить столбец int значениями [0-100000]. Это введение выглядит неплохо.
Ограничения определяют, какие значения допустимы для данных в базе данных. Например, вы можете указать, что значение a не является нулевым (ограничение NOT NULL
), или что оно существует как уникальное ограничение в другой таблице (ограничение FOREIGN KEY
), или что он уникален в этой таблице (ограничение UNIQUE
или, возможно, ограничение PRIMARY KEY
в зависимости от ваших требований). Более общие ограничения могут быть реализованы с использованием ограничений CHECK
.
Документация MSDN об ограничениях SQL Server 2008 , вероятно, является лучшим местом для начала.
Ограничение UNIQUE
(из которых ограничение PRIMARY KEY
является вариантом). Проверяет, что все значения данного поля уникальны для всей таблицы. Это ограничение X
-оси (записи)
CHECK
ограничение (из которых ограничение NOT NULL
является вариантом). Проверяет выполнение определенного условия для выражения над полями одной и той же записи. Это ограничение Y
-оси (поля)
FOREIGN KEY
ограничение. Проверяет, находится ли значение поля среди значений поля в другой таблице. Это ограничение оси Z
(таблицы).