Пример разработки простой ER-модели
При разработке ER-моделей необходимо получить следующую информацию о предметной области:
1. Список сущностей предметной области.
2. Список атрибутов сущностей.
3. Описание взаимосвязей между сущностями.
ER-диаграммы удобны тем, что процесс выделения сущностей, атрибутов и связей является итерационным. Разработав первый приближенный вариант диаграмм, можно уточнить их, опрашивая экспертов предметной области. При этом документацией, в которой фиксируются результаты бесед, являются сами ER-диаграммы.
Задача:разработать ER-модель для АИС некоторой оптовой торговой фирмы.
Основные этапы решения задачи
1. Изучение предметной области и процессов, происходящих в ней - как правило, осуществляется путем опроса сотрудников фирмы, чтения документации, изучения формы заказов, накладных и т.п.
Например, в ходе беседы с менеджером по продажам, выяснилось, что он (менеджер) считает, что проектируемая АИС должна выполнять следующие действия:
· Хранить информацию о покупателях.
· Печатать накладные на отпущенные товары.
· Следить за наличием товаров на складе.
2. Определение сущностей. Для этого необходимо выделить все существительные в предложениях, описывающих процессы, происходящие в изучаемой предметной области. Это и будут потенциальные кандидаты на сущности и их атрибуты. Проанализируем их (непонятные термины будем выделять знаком вопроса):
· Покупатель - кандидат на сущность.
· Накладная - кандидат на сущность.
· Товар - кандидат на сущность.
· (?) Склад - а вообще, сколько складов имеет фирма? Если несколько, то это будет кандидатом на новую сущность.
· (?) Наличие товара - это, скорее всего, атрибут, но атрибут какой сущности?
3. Определение связей между сущностями. Для рассматриваемого примера сразу возникает очевидная связь между сущностями: «Покупатели могут покупать много Товаров» и «Товары могут продаваться многим Покупателям». Первый вариант диаграммы выглядит так:
Задав дополнительные вопросы менеджеру, были выявлены новые данные о том, что:
· фирма имеет несколько складов, а каждый товар может: храниться на нескольких складах; быть проданным с любого склада;
· покупатели покупают товары, получая при этом накладные, в которые внесены данные о количестве и цене купленного товара;
· каждый покупатель может получить несколько накладных;
· каждая накладная выписывается на одного покупателя;
· каждая накладная содержит хотя бы один товар (не бывает пустых накладных);
· каждый товар, в свою очередь, может быть продан нескольким покупателям через несколько накладных;
· каждая накладная должна быть выписана с определенного склада, и с любого склада может быть выписано много накладных.
Учитывая новые сведения, диаграмма примет следующий вид:
4. Определение атрибутов сущностей. Беседуя с сотрудниками фирмы, были выяснены следующие обстоятельства:
· каждый покупатель является юридическим лицом и имеет наименование, адрес, банковские реквизиты;
· каждый товар имеет наименование, цену, а также характеризуется единицами измерения;
· каждая накладная имеет уникальный номер, дату выписки, список товаров с количествами и ценами, а также общую сумму накладной; накладная выписывается с определенного склада и на определенного покупателя;
· каждый склад имеет свое наименование.
Снова выпишем все существительные, которые будут потенциальными атрибутами, и проанализируем их:
· Юридическое лицо – т.к. фирма работает только с юридическими лицами (не работает с физическими лицами), то такой атрибут выделять нет смысла.
· Наименование покупателя - характеристика покупателя.
· Адрес - характеристика покупателя.
· Банковские реквизиты - характеристика покупателя.
· Наименование товара - характеристика товара.
· (?) Цена товара - похоже, что это характеристика товара. Отличается ли эта характеристика от цены в накладной?
· Единица измерения - характеристика товара.
· Номер накладной - уникальная характеристика накладной.
· Дата накладной - характеристика накладной.
· (?) Список товаров в накладной - список не может быть атрибутом. Вероятно, нужно выделить этот список в отдельную сущность.
· (?) Количество товара в накладной - это характеристика, но характеристика чего? Это характеристика не просто "товара", а "товара в накладной".
· (?) Цена товара в накладной - характеристика товара в накладной. Но цена товара уже встречалась выше - это одно и то же?
· Сумма накладной - характеристика накладной. Эта характеристика не является независимой. Сумма накладной равна сумме стоимостей всех товаров, входящих в накладную.
· Наименование склада - характеристика склада.
В ходе дополнительной беседы с менеджером удалось прояснить различные понятия цен. Оказалось, что каждый товар имеет некоторую текущую цену. Эта цена, по которой товар продается в данный момент. Естественно, что эта цена может меняться со временем. Цена одного и того же товара в разных накладных, выписанных в разное время, может быть различной. Таким образом, имеется две цены - цена товара в накладной и текущая цена товара.
С возникающим понятием «Список товаров в накладной» все довольно ясно. Сущности Накладная и Товар связаны друг с другом отношением типа много-ко-многим. Такая связь должна быть разделена на две связи типа один-ко-многим. Для этого требуется дополнительная сущность. Этой сущностью и будет сущность Список товаров в накладной. Связь ее с сущностями Накладная и Товар характеризуется следующими фразами: «Каждая накладная обязана иметь несколько записей из списка товаров в накладной», «Каждая запись из списка товаров в накладной обязана включаться ровно в одну накладную», «Каждый товар может включаться в несколько записей из списка товаров в накладной», «Каждая запись из списка товаров в накладной обязана быть связана ровно с одним товаром».
Атрибуты Количество товара в накладной и Цена товара в накладной являются атрибутами сущности Список товаров в накладной.
Точно также поступим со связью, соединяющей сущности Склад и Товар. Введем дополнительную сущность Товар на складе. Атрибутом этой сущности будет Количество товара на складе. Таким образом, товар будет числиться на любом складе и количество его на каждом складе будет свое.
В результате ER-диаграмма примет вид:
Модели данных
Модель предметной области поддерживается в памяти компьютера с помощью СУБД. В силу этого результат моделирования зависит не только от предметной области, но и от используемой СУБД, т.к. каждая СУБД предоставляет свой инструментарий для отображения предметной области. Этот инструментарий принято называть моделью данных.
Модель данных определяется тремя компонентами:
· допустимой организацией данных;
· ограничениями целостности (семантической);
· множеством операций, допустимых над объектами модели данных.
Допустимая организация данных определяется разнообразием и количеством типов объектов модели данных, ограничениями на структуру данных.
Ограничения целостности поддерживаются средствами, предусмотренными в модели данных для выражения ограничений на значения данных и ассоциации, которые (ограничения) характеризуют достоверные состояния БД.
Ряд ограничений целостности поддерживается моделью данных по умолчанию и распространяется на все типовые ситуации, возникновение которых возможно при внесении изменений в БД. Например, если между записями типа ГРУППА и СТУДЕНТ установлена иерархическая связь, то СУБД воспрепятствует удалению сведений о студенческой группе, если с ней связана хотя бы одна запись о студенте.
Другие ограничения целостности могут задаваться явно и также распространяться на множество однотипных ситуаций или на значения отдельных полей. Например, предположим, что при определении записи для какого-либо поля задано свойство уникальности значений, тогда СУБД воспрепятствует появлению в БД двух записей с одинаковым значением этого поля.
Множество операций определяет виды обработок, которым могут подвергаться объекты модели данных. Прежде всего, это – операции выборки данных и операции, изменяющие состояние БД.
Поддерживаемые СУБД модели данных традиционно разбиваются на: сетевые, иерархические, реляционные (имеются также другие модели данных). Эта классификация условна, т.к. каждая СУБД поддерживает свою оригинальную модель данных. И даже если модель данных относится к одной из выделенных разновидностей, она может содержать достаточно много отличительных особенностей. Наиболее распространенными моделями являются реляционные модели данных(РМД).
Дата добавления: 2016-06-24; просмотров: 3555;