Пример разработки простой ER-модели.
⇐ ПредыдущаяСтр 5 из 5 Разработка ER-модели основывается на описании предметной области. В итоге мы должны выделить и графически изобразить: • список сущностей предметной области; • список атрибутов сущностей; • описание связей между сущностями. ER-диаграммы удобны тем, что процесс выделения сущностей, атрибутов и связей является итерационным. Разработав первый приближенный вариант диаграмм, мы уточняем их (опрашивая экспертов предметной области) и строим второй, третий и т. д. варианты. Предположим, что перед нами стоит задача разработать информационную систему, автоматизирующую учет продажи товаров в некоторой оптовой торговой фирме. В первую очередь, мы должны изучить предметную область и процессы, происходящие в ней. Для этого необходимо опросить сотрудников фирмы, ознакомиться с документацией, изучить формы заказов, накладных и т. п. Рассмотрим в качестве примера следующее описание предметной области. Проектируемая система должна выполнять следующие действия: • хранить информацию о покупателях («Код», «Наименование», «Адрес», …); • хранить информацию о товарах («Код», «Товар» (наименование), «Цена», …); • формировать накладные на отпускаемые товары («Номер», «Дата», «Покупатель», …). Выделим все существительные в этих предложениях — это будут потенциальные кандидаты на сущности и атрибуты, и проанализируем их. Если у существительного имеется несколько свойств (характеристик), то это сущность, если одно — атрибут. «Покупатель» — сущность, так как у него имеется код, наименование, ИНН и т. д. Аналогично можно сделать вывод, что «Накладная» и «Товар» сущности, а например, «Товар» (наименование) — атрибут (у него только одно свойство).
Сразу возникает очевидная связь между сущностями «Покупатель» и «Товар» — «покупатели могут покупать много товаров» и «товары могут продаваться многим покупателям». Тогда может быть построен первый вариант ER-диаграммы рис. 2.3. Куда поместить сущность «Накладная» с чем она связана? Для ответа на этот вопрос надо проанализировать предметную область: как связана эта сущность с сущностями «Покупатель» и «Товар»? В описании предметной области могут быть такие фразы: «Покупатели покупают товары, получая при этом накладные, в которые внесены данные о количестве и цене купленного товара. Каждый покупатель может получить несколько накладных. Каждая накладная выписываться только на одного покупателя. Каждая накладная обязана содержать несколько товаров (не бывает пустых накладных). Каждый товар, в свою очередь, может быть продан разным покупателям с оформлением нескольких накладных».
Из описания предметной области и изучения первичного документа можно выяснить, что каждая накладная имеет уникальный номер, дату выписки, список товаров в накладной с количествами и ценами, а также общую сумму накладной. В этом описании существительные (возможно, с прилагательными) выделены полужирным шрифтом. Проанализируем их: • номер накладной (уникальный) — атрибут, так как это одно значение; • дата выписки — атрибут, так как это одно значение; • сумма накладной — атрибут, так как это одно значение. Но хранить это значение не имеет смысла: оно может быть вычислено; • список товаров в накладной (с количествами и ценами) — это не атрибут, так как это много значений разных характеристик («№ строки», «Наименование товара», «Количество» и т. д). Таким образом, получаем, что «Список товаров в накладной» — сущность.
Сущности «Накладная» и «Товар» связаны друг с другом отношением типа много-ко-многим. Такая связь реляционной моделью не поддерживается и она должна быть расщеплена на две связи типа один-ко-многим. Для этого требуется дополнительная сущность. Этой сущностью и будет сущность «Список товаров в накладной». Связь ее с сущностями «Накладная» и «Товар» характеризуется следующими фразами: • каждая накладная обязана иметь несколько записей из списка товаров в накладной; • каждая запись из списка товаров в накладной обязана включаться ровно в одну накладную; • каждый товар может включаться в несколько записей из списка товаров в накладной; • каждая запись из списка товаров в накладной обязана быть Атрибуты «Количество товара в накладной» и «Цена товара в накладной» («Цена Н») являются атрибутами сущности «Список товаров в накладной». Рассмотрим вопрос об атрибутах сущностей. Из описания предметной области можно выяснить, что: • каждый покупатель является юридическим лицом и имеет наименование, адрес и т. д.; • каждый товар имеет наименование и цену. Снова выпишем все существительные, которые будут потенциальными атрибутами и проанализируем их. Из описания предметной области удалось выяснить, что каждый товар имеет некоторую текущую цену, по которой товар продается в данный момент. Эта цена может меняться со временем и, таким образом, цена одного и того же товара в разных накладных, выписанных в разное время, может быть различной. Таким образом, имеется две цены — цена товара в накладной и текущая цена товара. Анализ и дальнейшие обозначения приведены в таблице 2.1. Таблица 2.1 Атрибуты и их обозначения в диаграмме IDEF1X
Рис. 2.5. Диаграмма IDF1X Разработанный выше пример ER-диаграммы является примером логической диаграммы. Это означает, что диаграмма не учитывает особенности конкретной СУБД. По данной концептуальной диаграмме можно построить физическую диаграмму, которая уже будут учитываться такие особенности СУБД, как допустимые типы и наименования полей и таблиц, ограничения целостности и т. п. Физический вариант диаграммы, приведенной на рис. 2.6, может выглядеть, например, следующим образом: Рис. 2.6. Физическая диаграмма На данной диаграмме каждая сущность представляет собой таблицу базы данных, каждый атрибут становится столбцом соответствующей таблицы.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|