Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ивт-20 / БД - заочный факультет / 04 Методические указания - проектирование баз данных.doc
Скачиваний:
49
Добавлен:
26.04.2015
Размер:
518.66 Кб
Скачать

3. Проверка модели в отношении транзакций пользователей.

На этом этапе необходимо проверить возможность выполнения всех транзакций, описанных в практической работе №1.

Используем для проверки выполнения графический способ. Для этого на ER-диаграмме (рис.3.) представим пути выполнения транзакций.

Если присмотреться к диаграмме, то можно увидеть , что некоторые области модели не используются при выполнении транзакций. Это приводит к сомнению в необходимости хранения соответствующей информации в БД. Можно сделать вывод, что эти связи избыточны и могут быть удалены из диаграммы.

Также из-за отсутствия прямой связи между сущностями Клиент и Филиал нельзя отобразить путь выполнения транзакций T(g) и T(h). Критичная для выполнения транзакции связь пропущена и должна быть внесена в окончательный вариант модели.

Рис.3. Пути выполнения транзакций.

Уточним, что каждый клиент регистрируется только в одном филиале. В результате в модель вводим новую связь Филиал регистрирует Клиент, а в отношение Клиент добавляем новый внешний ключ – Номер_Филиала .

В результате выполнения всех этих действий получаем окончательный вариант диаграммы (рис.4).

Рис.4. Окончательная ER-диаграмма.

4. Ссылочная целостность

Связи между сущностями моделируются посредством помещения в дочернее отношение копии первичного ключа родительского отношения. Например, если атрибут Номер_Филиала (внешний ключ) отношения Работники (дочернего) содержит значение «ХХ», то это значение обязательно должно присутствовать в атрибуте Номер_Филиала(первичном ключе) одной из строк отношения Филиалы(родительского).

Поддержка ссылочной целостности организуется посредством задания необходимых ограничений для значений первичных и внешних ключей. Эти ограничения определяют условия, которые должны соблюдаться при обновлении или удалении значений первичного ключа, а также при вставке или обновлении значений внешнего ключа.

Может быть использована одна из следующих стратегий:

  • NO ACTION. Удаление строки из родительского отношения запрещается, если в дочернем отношении существует хотя бы одна ссылающаяся на нее строка.

  • CASCADE. При удалении строки из родительского отношения автоматически удаляются все ссылающиеся на нее строки дочернего отношения. Другими словами, удаление строки родительского отношения автоматически распространяется на любые дочерние отношения.

  • SET NULL. При удалении строки из родительского отношения во всех ссылающихся на нее строках дочернего отношения в атрибут внешнего ключа записывается пустое значение. Следовательно, удаление строк из родительского отношения вызовет занесение пустого значения в соответствующий атрибут строк дочернего отношения.

  • SET DEFAULT. При удалении строки из родительского отношения в атрибут внешнего ключа всех ссылающихся на нее строк дочернего отношения автоматически помещается значение, указанное по умолчанию.

  • NO CHECK. При удалении строки из родительского отношения никаких действий по сохранению ссылочных данных не предпринимается.

Для каждого внешнего ключа отношения следует указать условия, которые должны выполняться при обновлении или удалении соответствующего значения первичного ключа.

Рассмотрим пример указания требуемых ограничений ссылочной целостности для внешних ключей отношения Объект_для_аренды.

Объект_для_аренды(Номер_объекта,Улица,Город,

Почтовый_индекс, Тип, Количество_комнат,

Арендная_плата, Номер_Владельца,

Табельный_номер , Номер_Филиала)

Первичный ключ Номер_объекта

Внешний ключ Номер_Владельца для таблицы

Владелец (Номер_ Владельца) на удаление NO ACTION

на обновление CASCADE

Внешний ключ Табельный_номер для таблицы

Работник (Табельный_номер) на удаление SET NULL

на обновление CASCADE

Внешний ключ Номер_Филиала для таблицы

Филиал (Номер_Филиала) на удаление SET DEFAULT

на обновление CASCADE