Целостность данных
Целостностью данных можно назвать механизм поддержания соответствия базы данных предметной области.
В реляционной модели данных определяют две базовые категории обеспечения целостности:
- целостность ссылок;
- целостность сущностей.
Под целостностью понимают правильность данных в любой момент времени.
Данной цели можно достигнуть только в определенных пределах: СУБД не может выполнять контроль правильности каждого отдельного значения, которое вводится в базу данных (несмотря на то, что можно выполнить проверку каждого значения на правдоподобность). К примеру, невозможно проверить, что введенное значение 7, которое представляет номер дня недели, на самом деле должно быть равным 4. Но значение 8 однозначно будет являться ошибочным и база данных должна отвергнуть такое значение. В таком случае СУБД необходимо сообщить, что номера дней недели должны выбираться из набора чисел (от 1 до 7).
Поддержание целостности БД может быть рассмотрено как обеспечение защиты данных от разрушений или ошибочных изменений (не стоит путать с незаконными разрушениями и изменениями, которые являются проблемой безопасности).
Ограничения целостности
Ограничения целостности являются специальными средствами баз данных, которые предназначены для предупреждения возможности попадания в базу недопустимым данным (к примеру, не дать пользователю совершить ошибки при введении данных).
Ограничения целостности делятся на 3 основные категории:
- Средства обеспечения доменной целостности – предназначены для недопущения ввода в поля базы данных недопустимых значений. К примеру, наименование товара должно состоять из букв, а номер телефона – из цифр. Обеспечивается такая целостность в базах данных зачастую установлением условий на значение, ключами, хранимыми процедурами, триггерами, запретом пустых значений.
- Сущностная целостность, главной задачей которой является недопущение двукратного попадания данных об одной сущности в базу. Такую целостность обеспечивает установление ограничения уникальности и первичный ключ. Она не допускает, чтобы любой атрибут, который принадлежит первичному ключу, мог принимать неопределенное значение.
- Ссылочную целостность обеспечивает система внешних и первичных ключей. К примеру, с помощью данных средств можно дать гарантию, что в базе не будет заказов, которые оформлены на покупателей, отсутствующих в базе данных.
Внешний ключ должен иметь значение, которое:
- равно значению первичного ключа характеризуемой (ассоциируемой) сущности;
- полностью не определено, то есть каждое значение атрибута, который участвует во внешнем ключе, должно являться неопределенным.
Выделяют еще 2 категории, которые относятся к средствам обеспечения целостности – средства процедурного и декларативного характера.
Средства декларативного характера создают в виде составных частей объектов при их определении в БД (к примеру, установление условия на значение при создании таблицы в БД).
Средства процедурного характера (хранимые процедуры и триггеры) реализованы в виде отдельных программных модулей.
В основном декларативные ограничения являются менее функциональными, но более экономными по отношению к ресурсам и наоборот. Обратим внимание, что использованием развитой системы ограничений целостности определяется зрелость БД. Зачастую легче с самого начала обеспечить непопадание в базу данных неверных значений, чем после убирать их из базы данных.
К тому же, разработчики при создании ограничений целостности должны обеспечить перехват ошибок, которые возникают при нарушениях целостности, клиентским приложением.
Также выделяют целостность, определяемую пользователем. Любая база данных содержит дополнительные специфические правила, относящиеся только к ней и определяющиеся разработчиком. При этом чаще всего контролируют:
- уникальность каких-либо атрибутов;
- диапазон значений (например, оценкой может быть лишь 2, 3, 4, 5);
- принадлежность набору значений (к примеру, пол «Ж» или «М»).