Сущности
Раздел: Моделирование данныхЛучше всего начать построение модели «сущность—связь» с определения потенциальных сущностей. В документах или беседах сущности обычно представляются существительными (места, люди, концепции, события, оборудование и т. п.). Исследовав предыдущий пример на предмет важных словосочетаний, относящихся к информационной системе, мы получим следующий список:
♦ индивидуальное занятие;
♦ групповое занятие;
♦ инструктор;
♦ постоянный инструктор;
♦ приходящий инструктор;
♦ вечер танцев;
♦ клиент.
Ясно, что словосочетания индивидуальное занятие и групповое занятие имеют между собой нечто общее, как и словосочетания постоянный инструктор и приходящий инструктор. Одним из возможных решений будет определить сущность под названием ЗАНЯТИЕ с подтипами ИНДИВИДУАЛЫН0Е_ЗАНЯТИЕ и ГРУППОВОЕ. ЗАНЯТИЕ, а также сущность ИНСТРУКТОР с подтипами П0СТ0ЯННЫИ_ИНСТРУКТ0Р и ПРИХОДЯ ЩИ Й_И НСТРУКТ0Р. Кроме этих сущностей, в модели будут присутствовать сущности ВЕЧЕР_ТАНЦЕВ и КЛИЕНТ.
в моделировании данных есть столько же от искусства, сколько от науки. Решение, описанное только что, является лишь одним из возможных. Второе решение состоит в том, чтобы исключить сущности ЗАНЯТИЕ и ИНСТРУКТОР из списка, приведенного в предыдущем абзаце, и удалить все подтипы. Третье возможное решение — это исключить сущность ЗАНЯТИЕ (поскольку занятие нигде не упоминается само по себе как словосочетание), но оставить сущность ИНСТРУКТОР и ее подтипы. В данном случае мы выберем третий вариант, так как он представляется наиболее подходящим с точки зрения имеющейся у нас информации. Таким образом, список сущностей будет выглядеть следующим образом: ИНДИВИДУАЛЬНОЕ_ЗАНЯТИЕ, ГРУПП0В0Е_ЗАНЯТИЕ, ИНСТРУКТОР, П0СТ0ЯННЫЙ_ИНСТРУКТ0Р, ПРИХОДЯ ЩИ Й_ИНСТРУКТОР, ВЕЧЕР_ТАНЦЕВ и КЛИЕНТ.
Чтобы сделать правильный выбор среди этих альтернатив, необходимо проанализировать требования и выяснить, каким образом данные требования отразятся на структуре системы. Иногда полезно рассмотреть атрибуты сущностей. Если, например, сущность ЗАНЯТИЕ не имеет никаких атрибутов, кроме идентификатора, то вводить такую сущность нет необходимости.