Читайте также: |
|
Целостность базы данных - свойство базы данных, означающее, что БД содержит полную и непротиворечивую информацию, необходимую для корректного функционирования приложений. Для обеспечения целостности накладывают ограничения целостности. К основным стратегиям ограничения целостности относят:
1. Ограничение целостности домена
2. Ограничение целостности атрибута
3. Ограничение целостности отношения
4. Ограничение целостности базы данных в целом
При проектировании базы данных «Учёт абонентов Интернет-провайдера» были использованы стратегии ограничения целостности домена и базы данных в целом.
Ограничение целостности домена определяется множеством значений, которое он образует. Другими словами, процесс создания домена – это реализация стратегии ограничение целостности домена. В процессе создания базы данных были описаны домены PACT_STATE, RATE_STATE, SERVICE_STATE, которые определяют значения полей STATE, STATE_R, STATE_S таблиц PACT, CON_RATE, CON_SERVICE соответственно. Каждый домен определен набором значений, которые могут принимать поля STATE, STATE_R, STATE_S. Запросы создания перечисленных доменов выглядят следующим образом (Листинг 3.1):
CREATE DOMAIN PACT_STATE
AS Char(10)
DEFAULT NULL
CHECK (VALUE = 'Действует' OR VALUE = 'Расторгнут');
CREATE DOMAIN RATE_STATE
AS Char(10)
DEFAULT NULL
CHECK (VALUE = 'Подключён' OR VALUE = 'Отключён');
CREATE DOMAIN SERVICE_STATE
AS Char(10)
DEFAULT NULL
CHECK (VALUE = 'Подключена' OR VALUE = 'Отключена');
Листинг 3.1 – Определение доменов
Ограничение целостности базы данных в целом или как его ещё называют ограничение ссылочной целостности. Данное ограничение относится к использованию внешних ключей. Правило ссылочной целостности требует, чтобы каждое определенное NOT NULL значение атрибута внешнего ключа существовало также в отношении, для которого данный атрибут является первичным ключом.
При обновлении или удаления строк таблицы возникают проблемы, связанные со ссылочной целостностью. Существует три возможных стратегии:
1. RESTRICT − Стратегия, согласно которой налагается запрет на все изменения первичного ключа, если существуют ссылающиеся на него внешние ключи.
2. CASCADE − Воздействие операции с исходной строкой "каскадным" образом распространяется на все строки всех таблиц, где содержатся ссылки на данную строку.
3. SET NULL − В этом случае, чтобы разрешить изменение или удаление исходной таблицы и не нарушить ссылочную целостность, соответствующие значения внешних ключей заменяются значением NULL.
Рассмотрим сущности «Паспотрные данные» - «Абонент», «Абонент» - «Договор», «Договор» - «Подключенная услуга», «Договор» - «Проведенная техническая работа», «Договор» - «Подключенный тариф», «Оператор» - «Договор». Между данными сущностями для родительских сущностей INSERT:NONE, DELETE:CASCADE, UPDATE:CASCADE. Т.е при вставке кортежа в родительскую таблицу ссылочная целостность не нарушается, при попытке удалить или модифицировать данные, возникнет ошибка ссылочной целостности. Для дочерних сущностей стратегия целостности выглядит следующим образом: INSERT: RESTRICT, DELETE: NONE, UPDATE: RESTRICT. Таким образом, удаление кортежа из дочерней сущности не навредить ссылочной целостности, а при вставке и модификации она нарушится. Поэтому необходимо запретить вставку и модификацию значений полей внешних ключей.
Для сущностей «Техническая работа» - «Проведенная техническая работа», «Услуга» - «Подключенная услуга», «Тариф» «Подключенный тариф» были так же выбраны стратегии обеспечения целостности.
Для родительских сущностей INSERT: NONE, DELETE: SET NULL, UPDATE: SET NULL. При вставке кортежа не нарушается ссылочная целостность, при удалении и модификации кортежа все возникающие некорректные значения внешних ключей заменятся на null-значения, что не противоречит логическому и физическому уровню концептуальной схемы. Для дочерних сущностей схема ограничения ссылочной целостности представляется следующим образом: INSERT: SET NULL, DELETE: NONE, UPDATE: SET NULL. Из этого следует то, что удаление кортежей не нарушает ссылочную целостное. Если возникнет ошибочная ситуация при модификации и вставке кортежа, то значение внешних ключей будет установлено в NULL.
Дата добавления: 2015-07-10; просмотров: 132 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Простые запросы | | | Стратегии безопасности базы данных |