Каково четкое определение ограничения базы данных? Почему ограничения важны для базы данных? Какие бывают типы ограничений?
Каково четкое определение ограничения базы данных? Почему ограничения важны для базы данных? Какие бывают типы ограничений?
Ответы:
Ограничения являются частью определения схемы базы данных.
Ограничение обычно связано с таблицей и создается с помощью оператора CREATE CONSTRAINT
или CREATE ASSERTION
SQL.
Они определяют определенные свойства, которым должны соответствовать данные в базе данных. Они могут применяться к столбцу, всей таблице, более чем одной таблице или всей схеме. Надежная система базы данных гарантирует, что ограничения всегда соблюдаются (кроме, возможно, внутри транзакции, для так называемых отложенных ограничений).
Общие виды ограничений:
Чтобы понять, зачем нам нужны ограничения, вы должны сначала понять ценность целостности данных.
Целостность данных означает достоверность данных. Ваши данные действительны? Представляют ли ваши данные то, для чего вы их создали?
Какие странные вопросы я задаю, вы можете подумать, но, к сожалению, слишком часто базы данных заполняются мусорными данными, недопустимыми ссылками на строки в других таблицах, которых давно нет ... и значениями, которые ничего не значат для бизнес-логики вашего решения больше.
Весь этот мусор не только снижает вашу производительность, но и является бомбой замедленного действия в логике вашего приложения, которая в конечном итоге будет извлекать данные, которые оно не предназначено для понимания.
Ограничения - это правила, которые вы создаете во время разработки, которые защищают ваши данные от повреждения. Это необходимо для выживания вашего сердца, дитя решения для баз данных. Без ограничений ваше решение определенно распадется со временем и при интенсивном использовании.
Вы должны признать, что проектирование вашей базы данных - это только рождение вашего решения. Здесь после этого он должен прожить (надеюсь) долгое время и терпеть все виды (странного) поведения со стороны своих конечных пользователей (то есть клиентских приложений). Но этот этап разработки имеет решающее значение для долгосрочного успеха вашего решения! Уважайте его и уделяйте ему необходимое время и внимание.
Один мудрец однажды сказал: «Данные должны защищать себя!» . И это то, что делают ограничения. Это правила, которые сохраняют данные в вашей базе данных как можно более достоверными.
Есть много способов сделать это, но в основном они сводятся к следующему:
sys.check_constraints
представление в образце базы данных AdventureWorks.Как я здесь намекнул, для создания наилучшего и наиболее защитного подхода к ограничению для вашей базы данных требуется несколько тщательных размышлений. Сначала вам нужно знать возможности и ограничения различных типов ограничений, указанных выше. Дальнейшее чтение может включать:
Ограничения FOREIGN KEY - Microsoft
Ограничение внешнего ключа - w3schools
Удачи! ;)
Ограничения - это не что иное, как правила для данных. Какие данные действительны, а какие недействительны, можно определить с помощью ограничений. Таким образом, целостность данных может быть сохранена. Ниже приведены широко используемые ограничения:
NOT NULL
. Здесь мы можем указать, какие данные мы можем ввести для этого конкретного столбца, а какие не ожидается для этого столбца.Ограничения могут использоваться для обеспечения соблюдения определенных свойств данных. Простой пример - ограничить столбец 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
ограничение оси (таблицы).
CHECK
ограничений, так зачем классифицировать их по-другому? то есть " Y
ось" (что бы это ни значило).
FOREIGN KEY
использование CHECK
ограничения?
SELECT
запрос. Вы не можете использовать подзапросы (или любые другие конструкции, которые относятся к значениям вне текущей записи) в CHECK
ограничениях в SQL Server
.
База данных - это компьютеризированное логическое представление концептуальной (или бизнес-модели), состоящее из набора неформальных бизнес-правил. Эти правила представляют собой понятное пользователю значение данных. Поскольку компьютеры понимают только формальные представления, бизнес-правила не могут быть представлены непосредственно в базе данных. Они должны быть отображены в формальное представление, логическую модель, которая состоит из набора ограничений целостности. Эти ограничения - схема базы данных - являются логическим представлением в базе данных бизнес-правил и, следовательно, являются смыслом данных, понятным СУБД. Отсюда следует, что если СУБД не знает и / или не применяет полный набор ограничений, представляющих бизнес-правила, у нее есть неполное понимание того, что означают данные, и, следовательно,
Примечание. СУБД - «понятное» значение - ограничения целостности - не идентично понимаемому пользователем значению - бизнес-правилам - но, несмотря на потерю некоторого смысла, мы получаем возможность механизировать логические выводы из данных.
"Старый класс ошибок" Фабиана Паскаля
В SQL есть четыре основных типа ограничений:
Ограничение домена: если одно из значений атрибута, предоставленных для нового кортежа, не принадлежит указанному домену атрибутов
Ключевое ограничение: если значение ключевого атрибута в новом кортеже уже существует в другом кортеже в отношении
Ссылочная целостность: если значение внешнего ключа в новом кортеже ссылается на значение первичного ключа, которого нет в указанном отношении
Целостность сущности: если значение первичного ключа в новом кортеже равно null
ограничения - это условия, которые могут подтвердить конкретное условие. Ограничениями, связанными с базой данных, являются целостность домена, целостность сущности, ссылочная целостность, ограничения целостности, определяемые пользователем и т. Д.