Целостность базы данных
Целостность базы данных означает, что БД содержит полную и непротиворечивую информацию и удовлетворяет всем заданным ограничениям.
Прежде всего нужно обеспечить физическую целостность БД, т. е. защитить данные от разрушения в случае отказа оборудования (например, при отключении питания или выходе из строя жёстких дисков).
Очень важно, что все изменения данных выполняются с помощью транзакций, которые позволяют в случае сбоя «откатить назад» все начатые операции.
Периодически (например, раз в неделю) администраторы создают резервные копии всех данных на дисках и ведут журнал изменений. При сбое восстанавливается самая последняя сохранённая версия БД.
Также используют так называемые RAID-массивы жёстких дисков (англ. Redundant Array of Independent Disks — избыточный массив независимых дисков), где информация дублируется и может быть автоматически восстановлена в случае выхода из строя одного или даже нескольких дисков.
Теперь представьте себе, что в базе данных отдела кадров по ошибке у работника указан 1698 год рождения, а в поле Зарплата введено отрицательное число. В этих случаях нарушается логическая целостность, т. е. непротиворечивость данных. Чтобы этого не произошло, вводят ограничения на допустимые значения полей (контроль данных):
• каждое поле имеет свой тип; например, СУБД не даст записать в поле целого типа произвольный текст — будет выведено сообщение об ошибке;
• некоторые поля (в первую очередь первичный ключ) объявляются обязательными для заполнения;
• для полей, значения которых не могут повторяться, строятся уникальные индексы (при повторении значения выдаётся сообщение об ошибке);
• вводятся условия, которые должны выполняться для значений отдельных полей: например, можно потребовать, чтобы значение поля, в котором хранится количество учеников в классе, было положительным;
• для сложных данных используются шаблоны ввода: например, для ввода семизначного номера телефона можно использовать шаблон ### - ## - ##, где # означает любую цифру;
• вводятся условия, которые должны выполняться для нескольких полей каждой записи: например, дата увольнения работника не может быть более ранней, чем дата приёма на работу.
Заметим, что целостность БД не гарантирует достоверность данных, а только означает, что выполнены все установленные ограничения на эти данные и таким образом исключены явные противоречия.
Следующая страница Вопросы и задания