Пример преобразования ER-диаграмм в отношения базы данных
Продемонстрируем применение метода декомпозиции (без потерь при естественном соединении) для создания логической модели и базы данных для поддержки деятельности небольшой консультационной фирмы. Фирма производит консалтинг и обучение своих постоянных клиентов; данные о клиентах, сохраняемые в базе данных, будут использоваться консультантами фирмы для проведения семинаров, практических занятий и консультаций.
Первый шаг проектирования базы данных заключается в выявлении всех сущностей предметной области, их атрибутов и связей между атрибутами сущностей. Анализ сведений о предметной области данного примера позволяет определить следующие атрибуты универсального отношения и сделать заключение о наличии функциональных зависимостей (ФЗ) между ними:
- Каждый клиент имеет свой регистрационный номер (далее - номер). Все номера у клиентов уникальны и различны. Номер однозначно определяет Фамилию, но не наоборот. .
- Каждый клиент располагается по определенному адресу, по которому могут находиться несколько клиентов. .
- Предположим, что только один телефон связан с данным адресом. .
- Каждому клиенту может быть приписан телефон. .
- Для каждого клиента определяется рейтинг (активность, частота обращений и т.д.) за период по конкретной теме. Рейтинг клиента однозначно определяется по его номеру.
- Консультации носят тематический характер. Каждая тема имеет свой идентификатор.
- Период представляет собой отрезок времени, в течение которого проводилась тематическая консультация. Для определенности назовем этот период семестром. .
Полученное универсальное отношение назовем КОНСУЛЬТАНТ.
Рис. 7.2. Универсальное отношение КОНСУЛЬТАНТ
Перечислим ФЗ предметной области базы данных:
Рассмотрим детерминанты и возможные ключи отношения КОНСУЛЬТАНТ.
Возможные ключи | Детерминанты |
{Номер, Тема, Семестр} | {Номер, Тема, Семестр} |
{Номер} | |
{Телефон} | |
{Адрес} |
Согласно критерию Кодда, поскольку не каждый детерминант в отношении есть возможный ключ, то отношение не находится в НФБК.
Выполним декомпозицию отношения КОНСУЛЬТАНТ R0 (Номер, Тема, Семестр, Фамилия, Адрес, Телефон, Рейтинг). Кандидатами на выполнение проекции являются следующие ФЗ:
Внимание! На практике существует неединственность представления отношений базы данных, обусловленная выбором ФЗ при разбиении отношений. Выбор ФЗ для выполнения проекции отношения - очень важный шаг в проектировании логической модели реляционной базы данных. Выбор альтернативных ФЗ для выполнения проекции может привести к различным базам данных!
Выберем ФЗ , тогда получим два отношения R1 (Номер, Тема, Семестр, Фамилия, Адрес, Рейтинг) и R2 (Адрес, Телефон). Первая итерация декомпозиции отношений представлена на рис. 7.3.
Рис. 7.3. Первая итерация декомпозиции отношений
Проверим, находится ли отношение R2 в НФБК.
Отношение R2 находится в НФБК.
Проверим, находится ли отношение R1 в НФБК.
Возможные ключи | Детерминанты |
{Номер, Тема, Семестр} | {Номер, Тема, Семестр} |
{Номер} | |
{Адрес} |
Отношение R1 не находится в НФБД, необходимо продолжить его декомпозицию. Выберем ФЗ и выполним разбиение R1 на R3(Номер, Тема, Семестр, Рейтинг) и R4 (Номер, Фамилия, Адрес). Вторая итерация декомпозиции отношений представлена на рис. 7.4.
Рис. 7.4. Вторая итерация декомпозиции отношений
Проверим, находится ли отношение R3 в НФБК.
Возможные ключи | Детерминанты |
{Номер, Тема, Семестр} | {Номер, Тема, Семестр} |
Отношение R3 находится в НФБК.
Проверим, находится ли отношение R4 в НФБК.
Возможные ключи | Детерминанты |
{Номер} | {Номер} |
Отношение R4 находится в НФБК. Декомпозиция закончена.
Заметим, что если бы изначально в нашем примере в качестве ФЗ для выполнения проекции была выбрана ФЗ , то в результате мы имели бы совсем другой (!) набор отношений.
Литература: [1], [11], [15], [20], [31], [43], [44], [45].