Lec_3_BD

advertisement
Нормальные формы ER-диаграмм.
Одним из этапов проектирования БД является нормализация инфологической модели.
Нормализация – уменьшение избыточности данных. Сводится к добавлению новых сущностей в
инфологическую модель, т.е. мы рассматриваем каждую сущность, выявляем в ней повторяющиеся
наборы атрибутов и, если таковые имеются, то выделяем эти наборы в новую сущность.
В нормализованной сущности должен быть только один вид связи: «один-ко-многим».
Существует 5 нормальных форм, но на практике будем использовать только 3 из них.
Каждая форма включает свойства предыдущей.
В первой нормальной форме ER-диаграммы устраняются повторяющиеся атрибуты. Производится
выявление неявных сущностей замаскированных под атрибуты.
Во второй нормальной форме устраняются атрибуты, зависящие только ключа. Эта часть ключа
служит основой для выделения новых сущностей.
В третьей нормальной форме устраняются атрибуты, зависящие от атрибутов, не входящих в ключ.
При правильном определении сущности инфологическая модель сразу получается 3 формы.
Построение нормализованных диаграмм сразу основано на методе последовательного уточнения
первоначальной диаграммы.
Получение реляционной схемы из ER-схемы
Шаг 1. Каждая простая сущность превращается в таблицу. Имя сущности становится именем
таблицы.
Шаг 2. Каждый атрибут становится возможным столбцом с тем же именем Для каждого столбца
может выбираться дополнительный формат и свойства.
Шаг 3. Компоненты уникального идентификатора сущности превращаются в первичный ключ
таблицы.
Шаг 4. Связи «многие-к-одному» (и «один-к-одному») становятся внешними ключами. Для этого
делается копия ключевого атрибута с конца связи «один» в сущность на сторону «многим» и эти
столбцы будут составлять внешний ключ.
Пример разработки простой ER-модели
При разработке ER-модели мы должны получить информацию о предметной области:
1. Список сущностей предметной области.
2. Список атрибутов сущностей.
3. Описание взаимосвязей между сущностями.
Процесс выделения сущностей, атрибутов и связей – итерационный (пошаговый).
Сначала разрабатывается первый приближенный вариант, который в дальнейшем уточняется при
помощи дополнительных исследований предметной области.
Задача.
Разработать информационную систему по заказу некоторой оптовой торговой фирмы.
Проектируемая система должна выполнять следующие действия:
1. Хранить информацию о покупателях.
2. Печатать накладные на отпущенные товары.
3. Следить за наличием товаров на складе.
Выделим в этих предложениях существительные – кандидаты на сущность:
Существительные:
 Покупатель – сущность;
 Накладная – сущность;
 Товар – сущность;
 (?)Склад – если склад один – то атрибут, если складов несколько – то сущность;
 (?)Наличие товара – атрибут.
Связь между сущностями:
 Покупатели могут покупать много товаров
 Товары могут продаваться многим покупателям
Получили первый приблизительный вариант диаграммы:
Выясняем что фирма имеет несколько складов и каждый товар может хранится на нескольких
складах и быть проданным с любого склада.
Связи сущностей «Накладная», «Склад», «Покупатель», «Товар»:
 Покупатели покупают товары, получая при этом накладные, в которые внесены данные о
количестве и цене купленного товара.
 Каждый покупатель может получить несколько накладных.
 Каждая накладная обязана выписываться на одного покупателя.
 Каждая накладная обязана содержать несколько товаров. Каждый товар, в свою очередь,
может быть продан нескольким покупателям через несколько накладных.
 Каждая накладная должна быть выписана с определенного склада, и с любого склада может
быть выписано много накладных.
Получили второй уточненный вариант диаграммы:
Атрибуты сущностей:
Каждый покупатель является юридическим лицом и имеет наименование, адрес, банковские
реквизиты.
Каждый товар имеет наименование, цену, а также характеризуется единицами измерения.
Каждая накладная имеет уникальный номер, дату выписки, список товаров с количествами и ценами,
а также общую сумму накладной. Накладная выписывается с определенного склада и на
определенного покупателя.
Каждый склад имеет свое наименование.
Чтобы определить атрибуты выпишем существительные - потенциальные атрибуты:
 Юридическое лицо – не атрибут т.к. фирма работает только с юридическими лицами;
 Наименование покупателя – атрибут покупателя;
 Адрес – атрибут покупателя;
 Банковские реквизиты – атрибут покупателя;
 Наименование товара – атрибут товара;
 (?)Цена товара – атрибут товара и атрибут накладной (в зависимости отличается ли цена
товара от товара в накладной);
 Единица измерения – атрибут товара;
 Номер накладной – атрибут накладной;
 Дата накладной – атрибут накладной;
 (?)Список товаров в накладной
 (?)Количество товара в накладной - это характеристика не просто Товара, а Товара в
накладной – характеристика не просто «Товара», а «Товара в накладной»;
 (?)Цена товара в накладной
 Сумма накладной (стоимость всех товаров) – зависимая характеристика накладной, но не
атрибут;
 Наименование склада – атрибут склада.
Дальнейшие исследования показали, что каждый товар имеет текущую цену, цена одного товара в
разных накладных, выписанных в различное время, может быть разной.
Имеем две цены:


цена товара в накладной;
текущая цена товара.
Так как связь «Накладная-Товар» это связи «много-ко-многим», то её необходимо разделить на
связи «один-ко-многим», для этого введем дополнительную сущность «Список товаров в
накладной».
Связи сущности «Список товаров в накладной» с сущностями «Накладная» и «Товар»
характеризуется следующим:
 Каждая накладная обязана иметь несколько записей из списка товаров в накладной,
 Каждая запись из списка товаров в накладной обязана включаться ровно в одну накладную,
 Каждый товар может включаться в несколько записей из списка товаров в накладной,
 Каждая запись из списка товаров в накладной обязана быть связана ровно с одним товаром.
Атрибуты сущности «Список товаров в накладной»:
 Количество товара в накладной;
 Цена товара в накладной.
Так же нужно разбить связь «Товар-Склад». Дополнительной сущностью будет «Товар на складе».
Связи сущности «Товар на складе» с сущностями «Склад» и «Товар»:
 Товар будет числится на любом складе;
 На каждом складе будет количество товара.
Атрибут сущности «Товар на складе»:
 Количество товара на складе.
Получили концептуальную ER-диаграмму:
Перевод инфологической модели в даталогическую с учетом выбранной СУБД.
При переводе необходимо учитывать:



Доступные наименования таблиц и полей;
Доступные типы данных в полях;
Дополнительные свойства каждой конкретной СУБД.
Для создания в даталогической модели связи «один-ко-многим» необходимо б таблицу на стороне
«много» скопировать ключевое поле из таблицы на стороне «один».
Физические (даталогическая) ER-модель.
(на основе программы VisualFoxPro)
Download