Что такое ограничения базы данных? [закрытый]

86
задан La-comadreja 26 July 2015 в 12:22
поделиться

5 ответов

Ограничения являются частью определения схемы базы данных.

Ограничение обычно связано с таблицей и создается с помощью оператора SQL CREATE CONSTRAINT или CREATE ASSERTION .

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

Общие виды ограничений:

  • not null - каждое значение в столбце не должно быть NULL
  • уникальным - значения в указанном столбце (ах) должны быть уникальный для каждой строки в таблице
  • первичный ключ - значение (я) в указанном столбце (ах) должно быть уникальным для каждой строки в таблице и не должно быть NULL ; обычно каждая таблица в базе данных должна иметь первичный ключ - он используется для идентификации отдельных записей
  • внешний ключ - значения в указанном столбце (ах) должны ссылаться на существующую запись в другой таблице (через его первичный ключ или какое-либо другое ограничение уникальности )
  • проверка - указано выражение, которое должно быть истинным, чтобы ограничение было удовлетворено
112
ответ дан 24 November 2019 в 08:01
поделиться

Чтобы понять, зачем нам нужны ограничения, вы должны сначала понять значение целостности данных.

Целостность данных означает достоверность данных. Ваши данные действительны? Представляют ли ваши данные то, для чего вы их создали?

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

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

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

Вы должны признать, что проектирование вашей базы данных - это только рождение вашего решения. Здесь после этого он должен жить (надеюсь) долгое время и терпеть все виды (странного) поведения со стороны своих конечных пользователей (то есть клиентских приложений). Но этот этап разработки имеет решающее значение для долгосрочного успеха вашего решения! Уважайте его и уделяйте ему необходимое время и внимание.

Один мудрец однажды сказал: «Данные должны защищать себя!» . И это то, что делают ограничения. Это правила, которые сохраняют данные в вашей базе данных как можно более достоверными.

Есть много способов сделать это, но в основном они сводятся к следующему:

  • Ограничения внешнего ключа , вероятно, наиболее часто используемое ограничение, и гарантирует, что ссылки на другие таблицы разрешены только в том случае, если действительно существует целевая строка для ссылки . Это также делает невозможным разорвать такую ​​связь , удалив указанную строку , создав мертвую ссылку.
  • Проверка ограничений может гарантировать, что в определенном столбце разрешены только определенные значения. Вы можете создать ограничение, разрешающее только слово «желтый» или «синий» в столбце VARCHAR. Все остальные значения приведут к ошибке. Найдите идеи для использования проверочных ограничений проверьте представление sys.check_constraints в образце базы данных AdventureWorks.
  • Правила в SQL Server - это просто повторно используемые Проверочные ограничения (позволяет поддерживать синтаксис из единого места и упрощение развертывания ваших ограничений в других базах данных)

Как я здесь намекнул, для построения лучший и самый защитный подход к ограничению для проектирования вашей базы данных. Сначала вам нужно знать возможности и ограничения различных типов ограничений, указанных выше. Дополнительные материалы для чтения могут включать:

Ограничения внешнего ключа - Microsoft

Ограничение внешнего ключа - w3schools

Ограничения проверки

Удачи! ;)

36
ответ дан 24 November 2019 в 08:01
поделиться

Ограничения могут использоваться для обеспечения соблюдения определенных свойств данных. Простой пример - ограничить столбец int значениями [0-100000]. Это введение выглядит неплохо.

3
ответ дан 24 November 2019 в 08:01
поделиться

Ограничения определяют, какие значения допустимы для данных в базе данных. Например, вы можете указать, что значение a не является нулевым (ограничение NOT NULL ), или что оно существует как уникальное ограничение в другой таблице (ограничение FOREIGN KEY ), или что он уникален в этой таблице (ограничение UNIQUE или, возможно, ограничение PRIMARY KEY в зависимости от ваших требований). Более общие ограничения могут быть реализованы с использованием ограничений CHECK .

Документация MSDN об ограничениях SQL Server 2008 , вероятно, является лучшим местом для начала.

3
ответ дан 24 November 2019 в 08:01
поделиться
  1. Ограничение UNIQUE (из которых ограничение PRIMARY KEY является вариантом). Проверяет, что все значения данного поля уникальны для всей таблицы. Это ограничение X -оси (записи)

  2. CHECK ограничение (из которых ограничение NOT NULL является вариантом). Проверяет выполнение определенного условия для выражения над полями одной и той же записи. Это ограничение Y -оси (поля)

  3. FOREIGN KEY ограничение. Проверяет, находится ли значение поля среди значений поля в другой таблице. Это ограничение оси Z (таблицы).

2
ответ дан 24 November 2019 в 08:01
поделиться
Другие вопросы по тегам:

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