Проблема целостности заключается в обеспечении правильности данных БД в любой момент времени. Она может быть нарушена в следующих случаях:
>при вводе и обновлении, когда подаются неверные сведения;
>когда данными пользуются одновременно несколько пользователей;
>при сбоях АПС.
Решение проблем целостности необходимо рассматривать с программной и организационной точек зрения. Для решения первой проблемы необходимо выполнить ряд организационных мероприятий, которые будут следить за вводом информации в БД, пользователь должен знать правила ввода и ограничения. Для снятия второй и третьей проблем существуют стандартные средства СУБД или специальные программные модули.
В правильно спроектированной СУБД выполняются два основных ограничения целостности:
>структурные ограничения (задаются функциональными связями и проверяются путем проверки равенства значений БД);
>ограничения реальных значений. Требуют, чтобы значения поля принадлежали некоторому диапазону, либо это зависимость между значениями некоторых полей (типы данных и маски ввода). Ограничения могут задаваться администратором БД в любой момент, но СУБД может не принять ограничение, если в системе присутствуют записи, не удовлетворяющие заданному требованию.
Ограничения различаются по уровню сложности:
-ограничения на значение поля, например: запрет ввода нулевого значения, запрет пустого поля, запрет на диапазон, запрет на список;
-ограничения на совокупность атрибутов строки, например должность – разрядные ставки, края – города;
-ограничения одновременно на множество строк.
Все эти ограничения статистические, но при переходе БД из одного состояния в другое необходимо удовлетворять ограничениям целостности до начала всех изменений и после окончания всех, а не каждого. Такие ограничения называются отложенными, и относительно них вводится понятие транзакций.
Транзакция – законченное с точки зрения пользователя действие над БД.
Транзакция должна обладать четырьмя свойствами:
1. Атомарность (неделимость), т. е. выполнение как одинарной операции доступа к БД, при этом либо должна выполняться полностью или не выполняться совсем.
2. Согласованность – гарантирует взаимную целостность данных после окончания обработки транзакций.
3. Изолированность, т. е. каждая транзакция может изменять данные, которые временно находится в несогласованном состоянии. При этом доступ других транзакций к этим данным запрещен, пока транзакция не завершится.
4. Долговечность – если транзакция выполнена успешно, то изменения не будут потеряны.