Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
db / Лабораторный практикум по БД_2013.DOC
Скачиваний:
19
Добавлен:
16.03.2015
Размер:
277.5 Кб
Скачать

Лабораторная работа №12 обеспечение целостности данных

Теоретические сведения.

Каждая база данных должна удовлетворять ограничениям целостности, то есть ограничениям на значения и структуру данных, учитывающим особенности предметной области, которые должны сохранятся при любых изменениях в базе данных. Различают два вида ограничений целостности: немедленно проверяемые и откладываемые. К немедленно проверяемым ограничениям целостности относятся такие ограничения, проверку которых бессмысленно или даже невозможно откладывать. Примером ограничения, проверку которого откладывать бессмысленно, является ограничение домена (возраст сотрудника не может превышать 150 лет). Более сложным ограничением, проверку которого невозможно отложить, является следующее: зарплата сотрудника не может быть увеличена за одну операцию более чем на 100 рублей. Немедленно проверяемые ограничения целостности соответствуют уровню отдельных операторов языкового уровня СУБД. При их нарушениях не производится откат транзакции, а отвергается соответствующий оператор. К немедленно проверяемым ограничениям целостности можно отнести проверку ограничений на уровне поля (при создании таблицы в конструкторе таблицы-Table Designer можно определить правило проверки – Validation Rule, определяющее логическое выражение, которое должно выполнятся до ввода значения в таблицу; можно определить сообщение, выводимое при проверке значения поля – Validation Text; можно определить имя заголовка поля – Caption) и на уровне записи.

Проверка ограничений на уровне записи осуществляется с помощью триггеров, то есть правил для контроля событий добавления, удаления и изменения. Триггер сам не может изменять значение записи, он может только проверить правильность ограничения на уровне записи. Триггер сам по себе не может изменить запись, которая вызвала его, так как изменение вызовет триггер модификации, он изменит значение и снова рекурсивно вызовет самого себя, что приведет к зависанию компьютера. Триггер принимает одно из двух значений: .T., .F. При нажатии кнопки Table Properties в Table Designer появится окно для ввода правил проверки на уровне записи. Проверка правильности ввода записи осуществляется после проверки правильности ввода полей.

Откладываемые ограничения целостности – это ограничения на базу данных, а не на отдельные операции. По умолчанию такие ограничения проверяются при завершении транзакции, а их нарушение вызывает автоматическую замену оператора фиксации транзакции, на оператор отката транзакции. Транзакция – это неделимая с точки зрения воздействия на базу данных последовательность операторов манипулирования данными (чтения, удаления, вставки, модификации), не нарушающая ограничения целостности и такая, что либо результаты всех операций, входящих в транзакцию , отображаются в базе данных, либо воздействие всех этих операций полностью отсутствует. Откат транзакции – отмена всех операторов – ROLLBACK, фиксация транзакции – процедура внесения изменений в базу данных – COMMIT. Откладываемые ограничения целостности включают проверку ссылочной целостности таблиц (любое изменение, добавление, удаление во взаимосвязанных таблицах должно происходить синхронно). При работе в конструкторе баз данных, где осуществляется связь между таблицами при нажатии правой кнопки мыши и выборе команды Referential Intergrity в окне его построителя есть вкладки для определения действий при удалении, изменении и добавлении записей для каждой родительской и дочерней таблиц. Для каждого из названных действий можно выбрать одну из опций:

Ignore – игнорировать действие, ничего не предпринимать,

Restrict – не разрешать производить изменения, если есть дочерние записи,

Cascade – произвести каскадную модификацию, то есть повторить те же самые изменения во всех дочерних записях.

Ограничения ссылочной целостности можно выполнить, используя транзакции.

Начало транзакции-команда BEGIN NRANSACTION, конец транзакции команда – END TRANSACTION, фиксация транзакции команда – COMMIT, откат транзакции команда – ROLLBACK. Visual FoxPro поддерживает транзакции только для таблиц базы данных. Транзакции могут иметь пять уровней вложенности. Для вложенных транзакций выполняются следующие правила: 1) изменения, сделанные во всех вложенных транзакциях, фиксируются только последней командой END TRANSACTION, 2) команда END TRANSACTION завершает только свой уровень транзакции, 3) команда ROLLBACK отменяет изменения только своего уровня транзакции, 4) изменения, выполненные для одних и тех же данных, на более высоком уровне транзакции имеют приоритет над изменениями, выполненными на более низком уровне транзакции.

Задание на лабораторную работу.

  1. В таблицу, хранящую сведения о студентах на уровне поля добавить ограничения: номер зачетной книжки должен быть > 10000, значение по умолчанию года рождения студентов- 1980. Задать ограничение на уровне записи для таблицы, хранящей результаты сессии - сумма оценок по трём предметам не должна превышать 15. Запретить изменения в таблице сведений о студентах с помощью триггера.

  2. Учесть ограничения ссылочной целостности с помощью конструктора баз данных.

  3. Учесть ограничения ссылочной целостности с помощью транзакций на операции добавления, изменения, удаления записей.

Соседние файлы в папке db