Ограничения целостности – ограничения, которые не позволяют БД переходить в некорректное состояние. О.ц. распространяются на домены и атрибуты, сущности, связи и БД в целом.
Ограничение на домены и атрибуты (самый распространённый вариант). Виды:
- Указанием логического типа данных (самое грубое);
- Уточнение типа данных (более строгое);
- Задаётся маска ввода – ограничение на внутреннюю структуру.
Например: CCNNNCC, где C – символ, N – цифра.
Ограничения вытекают из 2-х вещей:
- из структуры данных;
- из предметной области (бизнес-правила).
- Ограничение на значения атрибутов, вытекающих из бизнес-правила. Например: возраст не старше 65 лет;
- Явно перечисляются домены;
- Ограничение (агрегатное) на атрибут. Пример:
- Атрибут может или не может принимать значение NULL (неизвестное, несуществующее значение). NULL можно использовать для показа отсутствия связи. Значения, о которых договариваются – договорные значения. Пример:
Ограничения на сущность:
- Каждый экземпляр сущности должен быть уникальным;
- Количество экземпляров сущности;
- Значение одного атрибута сущности зависит от значений других атрибутов сущности (вытекает из бизнес-правила). Пример: Дата выдачи ≥ дата поступления.
Заказ |
№ заказа (PK) |
Дата поступления |
Содержание заказа |
Заказчик (FK) |
Дата выдачи |
Примечание |
Ограничения целостности связи:
- Мощность, полнота;
- Задание кардинальных чисел;
- Ссылочная целостность – когда все экземпляры зависящей сущности имеют соответствие в главной сущности. Не допускается появление «осиротевших» экземпляров сущности.
Для того чтобы обеспечить ссылочную целостность существует каскадное обновление.
- Целостность на уровне БД. Разделение полномочий, безопасности и т.д. – вещи, связанные с администрированием БД.
- Триггеры целостности. Триггер состоит из 3-х частей: событие -> условие (ограничение) -> действие. Триггер является процедурой, которая вызывается при изменении значения атрибутов, удалении из сущности и т.д. В качестве условия выступает ограничение целостности. Если условие выполняется, то выполняется конкретное действие.
|