а) Связь типа «Один-к-одному» (1:1) означает, что один экземпляр первой сущности (левой) связан с одним экземпляром второй сущности (правой). Наличие такой связи чаще всего свидетельствует о неправильном разделении одной сущности на две независимые.
б) Связь типа «Один-ко-многим» (1:N) означает, что один экземпляр первой сущности (левой) связан с несколькими экземплярами второй сущности (правой). Это наиболее часто используемый тип связи. При этом левая сущность (со стороны «один») называется родительской, правая (со стороны
«многие») дочерней.
в) Связь типа «Многие-ко-многим» (N:M) означает, что каждый экземпляр первой сущности (левой) связан с несколькими экземплярами второй сущности (правой), а каждый экземпляр второй сущности связан с несколькими экземплярами первой сущности. Это временный тип связи, допустимый на ранних этапах разработки модели. В дальнейшем этот тип связи должен быть заменён двумя связями типа «Один-ко-многим» путём создания промежуточной сущности.
Рисунок 4 Графическое представление типов бинарной связи в нотациях Чена (слева) и Баккера (справа): а) один-к-одному,
б) один-ко-многим, в) многие-ко-многим
Каждая связь может иметь одну из двух модальностей связи:
модальность «может» означает, что экземпляр одной сущности может быть связан с одним или несколькими экземплярами другой сущности, а может быть и не связан ни с одним экземпляром;
модальность «должен» означает, что экземпляр одной сущности
обязан быть связан не менее чем с одним экземпляром другой
сущности.
Связь может иметь разную модальность с разных концов (см. пример бинарной связи на рисунке 4 (б)).
Описанный графический синтаксис позволяет однозначно читать ERдиаграммы, пользуясь следующей схемой построения фраз:
<Каждый экземпляр СУЩНОСТИ 1> <МОДАЛЬНОСТЬ СВЯЗИ> <НАИМЕНОВАНИЕ СВЯЗИ> <ТИП СВЯЗИ> <экземпляр СУЩНОСТИ 2>
Каждая связь может быть прочитана как слева направо, так и справа налево. Например, связь на рисунке 4 (б) читается следующим образом:
Слева направо: «Каждый преподаватель может вести несколько дисциплин».
Справа налево: «Каждая дисциплина ведётся только одним преподавателем».
Практическая часть Пример разработки концептуальной модели ПрО
В качестве предметной области (ПрО) рассмотрим деятельность страховой компании, которая представлена рядом филиалов. Основные сотрудники филиалов компании страховые агенты. Они заключают договоры с населением и организациями на различные виды страхования. За каждый заключённый договор агенту полагается денежное вознаграждение, сумма которого составляет определённый процент от страховой суммы договора.
Руководству страховой компании хотелось бы автоматизировать учёт всех заключённых агентами договоров. Для этих целей предполагается разработать базу данных (БД), чтобы, используя её, можно было получать достоверные и оперативные ответы на следующие вопросы:
Какие договоры заключил страховой агент X?
Какой страховой агент заключил договор N?
Сколько договоров заключил страховой агент X за определённый период?
На какую страховую сумму заключены договоры агентом X за определённый период?
Какие договоры заключены агентом X по виду страхования Z?
Какой вид страхования обеспечивает договор N?
Какие договоры предусматривают вид страхования Z?
имногие другие.
Отметим, что основной перечень вопросов (запросов) к БД разрабатывается в ходе анализа ПрО. Эти запросы называются запланированными и должны быть реализованы приложением, работающим с
БД.
Анализ ПрО позволяет выделить следующие объекты (сущности), данные
окоторых требуется хранить в БД:
филиалы;
страховые агенты;
виды страхования;
договоры.
С учётом этого рассматриваемую ПрО можно описать с помощью иерархической схемы (рисунок 5).
Страховая
компания
|
|
|
|
|
|
|
|
|
|
|
|
Филиал 1 |
|
. . . |
|
Филиал i1 |
|
. . . |
|
Филиал N |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. . . |
. . . |
. . . |
|
|
|
Агент 1 |
. . . |
Агент i2
|
. . . |
. . . |
. . . |
. . . |
Агент K |
|
|
|
|
. . . |
|
|
. . . |
|
|
. . . |
|
. . . |
|
|
. . . |
|
|
. . . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
Вид страхования 1 |
|
. . . |
|
|
Вид страхования i3 |
|
. . . |
|
|
Вид страхования L |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. . . |
. . . |
. . . |
|
|
|
. . . |
. . . |
. . . |
|
|
1 |
|
4 |
|
M |
|
|
|
|
|
i |
|
|
|
||
|
|
Договор |
. . . |
Договор |
. . . |
Договор |
|
|
|
|
|
|
|
|
|||
|
Рисунок 5 Иерархическая схема ПрО «Страховая компания» |
|
||||||
Также первоначальную структуру рассматриваемой ПрО можно представить в следующем табличном виде (рисунок 6), семантически идентичном приведённой выше иерархической схеме.
Из приведённой выше схемы (или таблицы) следует, что в рассматриваемой предметной области можно выделить следующие четыре типа сущностей:
ФИЛИАЛ;
АГЕНТ;
ВИД СТРАХОВАНИЯ;
ДОГОВОР.
Каждый из типов сущностей описывается рядом атрибутов, представляющих те или иные свойства (характеристики) конкретных экземпляров сущности.
|
|
|
Страховой агентK |
|
Договор страхования 1_1 |
|
N |
|
Вид страхования 1 |
. . . |
|
|
|
Вид страхования L |
. . . |
||
|
… Филиал |
|
|
|
Договор страхования 1_M |
компания |
. |
. . . |
. . . |
||
|
|
|
|
|
Договор страхования L_1 |
|
|
|
|
|
|
|
|
|
|
|
Договор страхования L_N |
|
|
|
|
|
. . . |
|
|
|
|
. . . |
. . . |
Страховая |
|
|
. . |
|
. . . |
Филиал1 … |
|
Вид страхования L |
. . . |
||
|
Страховой 1агент |
||||
|
|
|
|
|
. . . |
|
|
|
|
. . . |
. . . |
|
|
|
|
|
. . . |
|
|
|
|
|
Договор страхования 1_1 |
|
|
|
|
Вид страхования 1 |
. . . |
|
|
|
|
|
Договор страхования 1_M |
|
|
|
|
. . . |
. . . |
|
|
|
|
|
Договор страхования L_1 |
|
|
|
|
|
|
|
|
|
|
|
Договор страхования L_N |
Рисунок 6 Табличное представление иерархической схемы
Тип сущности ФИЛИАЛ может иметь следующие атрибуты:
Код_филиала, Название, Адрес, Телефон, Заведующий.
Тип сущности АГЕНТ может иметь следующие атрибуты: Код_агента,
Фамилия, Имя, Отчество, Телефон, Адрес, Код филиала.
Тип сущности ВИД СТРАХОВАНИЯ может иметь следующие атрибуты:
Код_вида, Наименование, Процент.
Тип сущности ДОГОВОР может иметь следующие атрибуты:
Номер_договора, Дата_заключения, Страховая_сумма, Тарифная_ставка, Код_агента, Код_вида.
Между описанными типами сущности можно определить следующие типы бинарных связей:
Связь «работает» типа 1:N между типами сущностей ФИЛИАЛ и АГЕНТ: в одном филиале может работать множество агентов.
Связь «заключает» типа 1:N между типами сущностей АГЕНТ и ДОГОВОР: один агент может заключать множество договоров.
Связь «обеспечивается» типа 1:N между типами сущностей ВИД СТРАХОВАНИЯ и ДОГОВОР: по одному виду страхования может быть обеспечено множество договоров.
С учётом введённых типов сущностей и типов связей между сущностями для ПрО «Страховая компания» можно построить ER-диаграмму (нотация Чена), представленную на рисунке 7.
Наименование
Код_вида |
Процент |
Вид_страхования
обеспечивается
Договор
Номер_договора
Дата_заключения
Страховая_сумма
Отчество |
Телефон |
Имя |
Адрес |
Фамилия |
Код_филиала |
Код_агента
заключает |
Агент |
Код_вида |
работает |
|
Код_агента
Тарифная_ставка
Филиал
Код_филиала
Название
Адрес
Телефон
Заведующий
Рисунок 7 ER-диаграмма для ПрО «Страховая компания»
Задание. Представить ER-диаграмму (нотация Чена) для ПрО «Страховая компания» (рисунок 4.8) в нотации Баркера. Использовать при этом для каждой связи два наименования по одному для каждого конца связи, а также учесть модальность каждой связи (может/должен).