Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Проектирование моделей данных. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
21
2. Номер кабинета.
3. Назначение кабинета.
4. ФИО сотрудника, который принимает пациента.
5. Должность сотрудника.
6. Дата приема пациента сотрудником.
Пусть заданы следующие ограничения, накладываемые на предметную область:
1. Среди пациентов нет полных тезок, то есть пациентов с
одинаковыми фамилией, именем и отчеством.
2. В одном кабинете могут принимать несколько врачей, но врач
принимает только в одном кабинете.
3. Среди сотрудников нет полных тезок.
4. Сотрудник может занимать только одну должность.
5. Сотрудник не может одновременно принимать несколько
пациентов.
Метод нормальных форм предполагает, что вся информация о предметной области первоначально хранится в одном отношении (рисунок 27).
Рисунок 27 – Одно отношение для «Медицинского центра»
В качестве первичного ключа отношения выберем
PK={ФИО Пациента, ФИО Сотрудника, Дата}
Данные в отношении «Запись на прием» хранятся с избыточностью. Повторяются номера кабинетов для приема, должности для сотрудников.
При работе с отношениями, содержащими избыточные данные, возникают проблемы, которые называются аномалиями модификации. Поскольку аномалии проявляются при выполнении операций, изменяющих состояние БД, то различают следующие виды аномалий:
• аномалия вставки;
22
• аномалия удаления;
• аномалия обновления.
В рассматриваемом примере аномалии модификации проявляются следующим образом:
1. Аномалия вставки.
В отношение нельзя вставить информацию о пациенте, который только прикрепился к медицинскому центру и ещё не записался на прием, или о сотруднике, который на данный момент не принимает ни одного пациента.
Иначе придется присвоить большинству атрибутов NULL- значения, в том числе и атрибутам, входящим в первичный ключ. А это противоречит правилу целостности сущностей.
2. Аномалия удаления.
При увольнении сотрудника, если в кабинете не принимали другие врачи, данные о кабинете теряются.
3. Аномалия обновления.
Если изменится должность сотрудника, то такое изменение необходимо будет выполнить во всех кортежах, где записана эта информация.
Причины аномалий – избыточность данных, порожденная тем, что в отношении хранится разнородная информация. Устранить аномалии можно, выполнив нормализацию отношения.
4.3.2. Нормализация отношений
Нормализация – это формальный метод анализа отношений на основе первичных или потенциальных ключей и существующих зависимостей между атрибутами.
Процесс нормализации заключается в последовательном переводе отношений из первой нормальной формы (1НФ) в нормальные формы более высокого порядка по определенным правилам. Каждой нормальной форме соответствует определенный набор ограничений, и отношение находится в некоторой НФ, если удовлетворяет свойственному ей набору ограничений [2].
Выделяют следующую последовательность НФ:
1НФ, 2НФ, 3НФ, БКНФ (НФ Бойса – Кодда), 4НФ, 5НФ, проекционно-соединительная НФ, ДКНФ (доменно-ключевая НФ).
Каждая НФ сохраняет свойства предшествующих НФ.
Переход к более высокой НФ выполняется путем декомпозиции исходного отношения на два или более отношения, которые удовлетворяют требованиям этой НФ.
23
До перехода к этапу разработки схемы базы данных полученные отношения должны быть проверены на соответствие нормальным формам не ниже БКНФ (нормальная форма Бойса - Кодда).
Основные определения.
1НФ. Отношение находится в 1НФ, если все значения отношения являются атомарными (неделимыми), то есть ни один из его атрибутов нельзя разделить на более простые атрибуты, которые соответствуют каким-то другим свойствам описываемой сущности.
Определение 1НФ предполагает, что ячейки таблицы должны содержать одиночные значения и все записи в отдельном столбце таблицы (атрибуте) должны иметь один и тот же тип, в качестве значений атрибута таблицы не допускаются группы данных.
Определение более высоких НФ основано на понятии функциональной зависимости (ФЗ).
Определение ФЗ.
Пусть R отношение, а X, Y – произвольные атрибуты или множества атрибутов отношения R. Х функционально определяет Y, что записывается X→Y (или Y функционально зависит от Х), если одному значению Х соответствует ровно одно значение Y. Обратное не обязательно.
Х называется детерминантом ФЗ, Y – зависимой частью.
Приведем примеры функциональной зависимости для данной предметной области:
ФИО Сотрудника → Должность;
{ФИО Пациента, ФИО Сотрудника, Дата} → Стоимость.
ФЗ называется полной, если Y не зависит от любого собственного подмножества Х (собственное подмножество представляет собой множество атрибутов, не совпадающее с множеством всех атрибутов).
Если детерминант представляет собой один атрибут, то ФЗ автоматически является полной.
Приведем пример полной функциональной зависимости:
{ФИО Пациента, ФИО Сотрудника, Дата} → Стоимость.
Зависимость является полной, так как атрибут Стоимость не зависит отдельно ни от одной части Детерминанта: ФИО Пациента, ФИО Сотрудника, Дата.
Определение транзитивной ФЗ.
ФЗ X→Y называется транзитивной, если есть такой атрибут Z, что существуют следующие ФЗ: X→Z, Z→Y, и отсутствует ФЗ Z→X. Тогда говорят, что Y транзитивно зависит от Х или Х транзитивно определяет Y.
24
ФИО Сотрудника Номер Кабинета
Назначение
Х
Z
Y
Обычно транзитивные зависимости изображаются следующим образом (рисунок 28).
Рисунок 28 – Схема транзитивной зависимости
Пример транзитивной зависимости представлен на рисунке 29.
Рисунок 29 – Пример транзитивной зависимости
Причем в отношении нет зависимости Назначение → ФИО Сотрудника.
Неключевым атрибутом называется любой атрибут отношения, не входящий в состав любого потенциального ключа.
Атрибуты называются взаимно независимыми, если ни один из них не является функционально зависимым от другого.
2НФ. Отношение находится в 2НФ, если оно находится в 1НФ и каждый неключевой атрибут функционально полно зависит от любого потенциального ключа (в частности, первичного).
Рассмотрим алгоритм приведения к 2НФ на примере предметной области «Медицинский центр».
Шаг 1. Выпишем все имеющиеся в отношении ФЗ.
• ФИО Сотрудника → Должность;
• {ФИО Пациента, ФИО Сотрудника, Дата} → Стоимость;
• ФИО Сотрудника → Номер Кабинета → Назначение.
Шаг 2. Если в отношении существует зависимость неключевых атрибутов от части составного ключа, то проводим декомпозицию отношения на несколько отношений следующим образом: те атрибуты, которые зависят от части составного ключа, выносим в отдельное отношение вместе с этой частью ключа. В новом отношении первичным ключом (ПК) становится детерминант ФЗ. В исходном отношении остаются все ключевые атрибуты.
Согласно алгоритму будут получены следующие отношения:
• Сотрудники (ФИО Сотрудника, Должность, Номер кабинета,
Назначение);
25
• Прием (ФИО Пациента, ФИО Сотрудника, Дата, Стоимость).
3НФ. Отношение находится в 3НФ, если оно находится в 2НФ и если в нём нет транзитивных зависимостей неключевых атрибутов от любого потенциального ключа (в частности, первичного).
Отношение Прием находится в 3НФ, так как в нем нет транзитивных зависимостей. Но в отношении Сотрудники есть транзитивная зависимость, изображенная на рисунке 30.
Алгоритм приведения к 3НФ.
Если в отношении обнаружена транзитивная зависимость, то проводится декомпозиция отношения следующим образом: те неключевые атрибуты, которые зависят от других неключевых атрибутов, выносятся в отдельное отношение. ПК в новом отношении становится детерминант ФЗ. Детерминант ФЗ также остается в исходном отношении.
Согласно алгоритму декомпозируем отношение Сотрудники на два следующих отношения:
• Сотрудники (ФИО Сотрудника, Должность, Номер кабинета);
• Кабинет (Номер кабинета, Назначение).
БКНФ. Отношение находится в БКНФ, если оно находится в 3НФ и если детерминанты всех функциональных зависимостей являются потенциальными ключами. БКНФ часто называют усиленной 3НФ.
При приведении отношений к 3НФ неявно предполагалось, что все отношения содержат один потенциальный ключ, который принимался в качестве ПК. Дополним отношение Прием атрибутом Страховой номер. Тогда отношение будет содержать 2 потенциальных ключа:
PK1 = {ФИО Пациента, ФИО Сотрудника, Дата};
PK2 = {Страховой номер, ФИО Сотрудника, Дата}.
В отношении можно выявить следующие ФЗ:
Страховой номер → ФИО Пациента;
ФИО Пациента → Страховой номер;
{ФИО Пациента, ФИО Сотрудника, Дата} → Стоимость;
{Страховой номер, ФИО Сотрудника, Дата} → Стоимость.
Атрибуты Страховой номер и ФИО Пациента являются частью составных потенциальных ключей, и, следовательно, отношение Прием не находится в БКНФ.
Алгоритм приведения к БКНФ.
Атрибуты, которые зависят от детерминантов, не являющихся потенциальными ключами, выносятся вместе с детерминантами в отдельное отношение. В новом отношении ключом становится
26
детерминант ФЗ. Детерминант ФЗ также остается в исходном отношении.
В зависимости от того, какой из потенциальных ключей назначается первичным ключом, можем получить два различных варианта:
1-й вариант. В качестве первичного ключа принимаем PK1 = = {ФИО Пациента, ФИО Сотрудника, Дата}. Тогда декомпозиция
отношений будет следующая:
Пациенты (ФИО Пациента, Страховой номер);
Прием (ФИО Пациента, ФИО Сотрудника, Дата, Стоимость).
2-й вариант. В качестве первичного ключа принимаем PK2 = = {Страховой номер, ФИО Сотрудника, Дата}. Тогда декомпозиция
отношений будет следующая:
Пациенты (Страховой номер, ФИО Пациента);
Прием (Страховой номер, ФИО Сотрудника, Дата, Стоимость).
Обе декомпозиции являются равноправными с точки зрения реляционной модели данных.
Схема полученной БД представлена на рисунке 30.
Рисунок 30 – Схема БД, спроектированной методом НФ
4.3.3. Выполнение проверки предварительных отношений
на соответствие нормальным формам
В рамках проектирования ER-методом после формирования предварительных отношений проводится этап проверки на соответствие нормальным формам. Обычно на данном этапе графически изображают функциональные зависимости атрибутов для каждого отношения в отдельности. Причем ключевые атрибуты изображаются прямоугольниками, а неключевые – овалами или прямоугольниками с закругленными углами. Для каждого отношения указывается нормальная форма, в которой оно находится. Причем для каждой НФ приводится пояснение. Если атрибут зависит от группы
27
атрибутов, то используется следующее обозначение функциональных зависимостей (рисунок 31).
Рисунок 31 – Обозначение составного первичного ключа
Выполним проверку отношений на соответствие нормальным формам до БКНФ для предварительных отношений области «Медицинский центр»:
1. Пациент (№полиса, Фамилия, Имя, Отчество, Дата рождения,
Пол, Адрес, Телефон, e-mail) (рисунок 32).
Отношение «Пациент» находится в 1НФ, так как все значения отношения являются атомарными. Отношение находится в 2НФ, так как оно находится в 1НФ и первичный ключ является простым. Отношение находится в 3НФ, так как оно находится в 2НФ и в нём нет транзитивных зависимостей. Отношение находится в БКНФ, так как оно находится в 3НФ и содержит один потенциальный ключ, являющийся детерминантом всех ФЗ.
Рисунок 32 – Отношение «Пациент»
28
2. Сотрудник (№паспорта, Фамилия, Имя, Отчество, Дата
рождения, Пол, Адрес, Образование, №ТрудовойКнижки, IDДолжность, Телефон, e-mail) (рисунок 33).
Отношение «Сотрудник» находится в 1НФ, так как все значения отношения являются атомарными. Отношение находится в 2НФ, так как оно находится в 1НФ и оба потенциальных ключа являются простыми. Отношение находится в 3НФ, так как оно находится в 2НФ и в нём нет транзитивных зависимостей. Отношение находится в БКНФ, так как оно находится в 3НФ и детерминанты всех функциональных зависимостей являются потенциальными ключами.
Рисунок 33 – Отношение «Сотрудник»
3. Должность (IDДолжность, Название, Тип, Описание)
(рисунок 34).
Отношение «Должность» находится в 1НФ, так как все значения отношения являются атомарными. Отношение находится в 2НФ, так как оно находится в 1НФ и первичный ключ является простым. Отношение находится в 3НФ, так как оно находится в 2НФ и в нём нет транзитивных зависимостей. Отношение находится в БКНФ, так как
29
оно находится в 3НФ и содержит один потенциальный ключ, являющийся детерминантом всех ФЗ.
Рисунок 34 – Отношение «Должность»
4. Кабинет (№кабинета, Название, Тип) (рисунок 35).
Отношение «Кабинет» находится в 1НФ, так как все значения отношения являются атомарными. Отношение находится в 2НФ, так как оно находится в 1НФ и первичный ключ является простым. Отношение находится в 3НФ, так как оно находится в 2НФ и в нём нет транзитивных зависимостей. Отношение находится в БКНФ, так как оно находится в 3НФ и содержит один потенциальный ключ, являющийся детерминантом всех ФЗ.
Рисунок 35 – Отношение «Кабинет»
5. Услуги (IDУслуги, Название, Описание, IDТип, Цена)
(рисунок 36).
Отношение «Услуги» находится в 1НФ, так как все значения отношения являются атомарными. Отношение находится в 2НФ, так как оно находится в 1НФ и первичный ключ является простым. Отношение находится в 3НФ, так как оно находится в 2НФ и в нём нет транзитивных зависимостей. Отношение находится в БКНФ, так как оно находится в 3НФ и содержит один потенциальный ключ, являющийся детерминантом всех ФЗ.
30
Рисунок 36 – Отношение «Услуги»
6. ТипУслуги (IDТип, Название, Описание) (рисунок 37).
Отношение «ТипУслуги» находится в 1НФ, так как все значения отношения являются атомарными. Отношение находится в 2НФ, так как оно находится в 1НФ и первичный ключ является простым. Отношение находится в 3НФ, так как оно находится в 2НФ и в нём нет транзитивных зависимостей. Отношение находится в БКНФ, так как оно находится в 3НФ и содержит один потенциальный ключ, являющийся детерминантом всех ФЗ.
Рисунок 37– Отношение «ТипУслуги»
7. Диагноз (IDДиагноз, Название, Симптомы) (рисунок 38).
Отношение «Диагноз» находится в 1НФ, так как все значения отношения являются атомарными. Отношение находится в 2НФ, так как оно находится в 1НФ и первичный ключ является простым. Отношение находится в 3НФ, так как оно находится в 2НФ и в нём нет транзитивных зависимостей. Отношение находится в БКНФ, так как оно находится в 3НФ и содержит один потенциальный ключ, являющийся детерминантом всех ФЗ.
Рисунок 38 – Отношение «Диагноз»
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]