Базы данных

Роли служащих и кардинальность этих ролей


Между классами Employee и store существует две связи. Служащий может быть связан с магазином (точкой проката, Store) как менеджер (manager) или как рабочий (worker). Эти роли служащего показаны на диаграмме 2.8 в виде надписей, расположенных рядом с линиями, соединяющими класс Employee и его типы связей. Эта спецификация позволяет служащему быть и менеджером, и рабочим. Она также допускает возможность работы служащего в роли рабочего в нескольких магазинах — обычная практика для предприятий с несколькими филиалами.

Согласно диаграмме, служащий может исполнять функции менеджера не более чем в одном магазине, а каждый магазин должен иметь в точности одного менеджера. При такой постановке могут возникнуть проблемы, если предприятию потребуется, чтобы один человек управлял несколькими магазинами. Если менеджер магазина увольняется, то в течение некоторого периода или в магазине не будет менеджера, или какому-либо другому менеджеру будет предложено временно заполнить вакансию. База данных будет не в состоянии представить эту ситуацию. В результате придется добавить вымышленного служащего к классу Employee и связать его с магазином в качестве менеджера. Альтернативный подход состоит в том, чтобы изменить кардинальности типа связи manages с тем, чтобы магазин мог не иметь менеджера, а служащий мог управлять более чем одним магазином.

При точной спецификации кардинальности зачастую возникают подобного рода вопросы об отражении действительной практики предприятия. Именно пользователи должны определить, является ли представление их предприятия корректным. А разработчики обязаны найти и высветить вопросы, которые всегда возникают на стадиях исследования и спецификации информационных систем.

Комментарии закрыты