Организационные проблемы
Тема: Организационные проблемы:
· целостность данных
· восстановление данных
· управление параллельным доступом
· управление доступом
Целостность данных.
Контроль типов.
Информация, хранящаяся в БД, должна быть достаточно правильной, точной и согласованной. Поэтому необходимы средства, которые защищали бы БД от потенциально неверных действий, связанных с корректировкой данных и записью новой информации. Самый распространенный способ защиты – контроль типов, проверка принадлежности переменной выделенному для него диапазону величин (пример, RANGE 0, 15; из POPUP выбор).
Контроль изменений.
Рекомендуемые материалы
Сложные СУБД оснащаются средствами, позволяющими объявлять ограничения, ограничения, как накладываемые на характер изменения переменных (количество на складах, заказанное количество, остаток должны быть КнС – 3К).
Дублирование ключей.
Программист имеет возможность объявить, должны ли дублироваться значения ключей.
Если дублирование запрещено, то программа не должна записывать уже имеющиеся в БД значение ключа и тем самым предотвратит потенциально ошибочную корректировку данных.
Связи, объединяющие различные поля.
Например, дата сдачи лабораторной работы не может быть раньше получения. Другой пример, если файл F1 содержит поля, которые в других файлах (FI) является ключевыми, то при занесении записи в F1 следует проверять, содержится ли данное значение ключа в файлах FI.
Такое требование позволяет исключить ситуации, когда в, например, нарядах на продажу значатся отсутствующие на складах товары.
Предварительный контроль данных.
Информация может быть искажена еще до того, как она вводится в БД. Рассмотрим два классических метода, контроль осуществляется вне базы:
а) Контрольное суммирование – это 1) сумма значений некоторого поля – итог; 2) часто полезно сравнить количество записей до и после выполнения некоторой операции, например, перепечатки.
Этот показатель называют контрольной суммой.
б) Контроль числовых данных.
Пусть число, записываемое в поле №_клиета всегда содержит 5 цифр, обозначим их d5d4d3d2d1. Для выявления ошибок, возникающих при копировании этих цифр, можно воспользоваться суммой . Развивая идею, дополним пятизначное число шестой цифрой d0, вычисляемой по формуле d0=11-((
)mod11).
Разряд, содержащий дополнительную цифру d0, называется контрольным. Если понадобится оценить правильность копирования числа d5d4d3d2d1d0, достаточно проверить, выполняется ли условие ( di)mod11=0. Если оно не соблюдается, то это означает, что есть ошибка, например, число 249639 скопировано как 247639.
Метод в таком виде не позволяет выявлять случайные перестановки цифр. Например, 249639 превращается в 294369. Поэтому усложним формулу d0=11-(( widi)mod11) где коэффициенты wi, где wi = i+1, и называются весовыми коэффициентами. Так как wi отличаются, то при перестановке цифр, сумма widi изменится. Притом, если (
widi)mod11< >0, wi=1, то либо произошла замена (249639→247639), либо перестановка (249639→294639).
Восстановление данных.
Типы отказов.
· Системные отказы – аварии оборудования, этот же термин используется в случае ошибки, нарушающей нормальную работу управляющих программ (ПП к ним не относятся).
· Отказы транзакций. ПП на ЯМД прерываются в следствие срабатывания средств контроля данных или сбоев в программе (например, логической переменной присваивается символьное значение).
Отказы транзакций.
Транзакция БД – это фрагмент выполняемой программы, заключенной между процедурами Начало_транзакции и Конец_транзакции. Программист рассматривает такой фрагмент как обособленную секцию, на доступ которой к БД не могут повлиять другие транзакции.
Поскольку БД может корректировать выборочно, то в случае прерывания транзакции, часть записей уже исправлены, а часть остаются неверными. Это влечет ошибки при дальнейшей обработке данных. Используют несколько способов восстановления данных.
· Дубликаты записей.
![]() |
Записи, хранящиеся в БД объединяются в блоки. Для изменения записи:
a. Блок помещается в буфер оперативной памяти.
b. Перед корректировкой блок копируется в файл дубликатов. Дубликат – копия блока до корректировки.
c. Корректируется запись в буфере.
d. Блок из буфера переписывается в главную БД, на прежнее место (по тому же адресу).
Итак, до конца транзакции. Если произошел сбой, то можно восстановить прежнее содержимое БД, скопировав блоки из дубликата на прежнее место. Этот метод называют повторным прогоном. Если происходит физическое повреждение дисков. Этот метод не эффективен, так как испорченный блок может не иметь дубликата
Обратите внимание на лекцию "6. Профилактические мероприятия по предупреждению пожаров".
· Образы скопированных записей.
![]() |
a. Выбирается запись для корректировки.
b. После изменения заносится в файлы образов.
c. Процедура Конец_транзакции переписывает образы в БД.
Поиск записи выполняется в начале в файле образов, затем в главной БД. Процедура Отказ_транзакции отмечает выполнение пункта 3 и БД остается в исходном виде. Этот метод медленнее предыдущего, так как ищет записи в двух файлах: образы и БД.