- •Южно-сахалинский институт экономики, права и информатики
- •Рекомендуемая литература 55 аннотация
- •Предисловие
- •Раздел 1. Нормализация отношений. Практическая работа №1. Функциональные зависимости.
- •Нормальные формы .
- •Раздел 2. Концептуальное проектирование. Описание предметной области, используемой в качестве учебного примера. Анализ требований пользователя.
- •1.Требования к данным
- •2. Требования к транзакциям.
- •Практическая работа №1. Построение концептуальной модели.
- •1.Определение типов сущностей
- •2. Документирование выделенных типов сущностей.
- •3.Определение типов связей.
- •4. Определение мощности и уровня участия типов связей.
- •5. Документирование типов связей.
- •6. Построение предварительной er-диаграммы.
- •6. Варианты для самостоятельной работы.
- •Практическая работа №2. Определение атрибутов, доменов и ключей в методологии концептуального проектирования.
- •1. Определение атрибутов и связывание их с типами сущностей и связей.
- •2. Документирование выделенных атрибутов
- •3. Определение и документирование Доменов атрибутов .
- •4. Определение атрибутов, являющихся потенциальными и первичными ключами.
- •4. Варианты для самостоятельной работы.
- •Обсуждение локальной концептуальной модели данных с пользователями.
- •Практическая работа №3. Преобразование локальной концептуальной модели данных в логическую модель .
- •Определение набора отношений исходя из структуры локальной логической модели данных.
- •Практическая работа №4. Построение окончательной диаграммы .
- •1. Проверка модели с помощью правил нормализации.
- •2. Определение бизнес-правил.
- •3. Проверка модели в отношении транзакций пользователей.
- •4. Ссылочная целостность
- •5. Варианты для самостоятельной работы.
- •Практическая работа №4. Разработка физического проекта бд.
- •Алгоритм преобразования er-модели в реляционную модель данных.
- •Рекомендуемая литература
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
