ER Моделирование - Подкласс отношений и сущностей отношений

У меня есть пара конкретных вопросов, касающихся моделирования ER.

Чтобы обеспечить некоторый конкретный контекст, это для университетского проекта, и я, кажется, не могу найти конкретные ответы на эти вопросы.

Фон

  • Модель ER изображает небольшую базу данных для бухгалтерской фирмы, чтобы они могли управлять своими клиентами, их аудиторскими работами (ежегодная работа), временем и платой за эти работы и несколькими другими незначительными частями. Куски и кусочки глупы (например, личный помощник typingSpeed, но это требования для проекта)
  • Каждый клиент должен проходить 1 аудиторскую проверку каждый год, и этот аудит проводят 1 или более сотрудников, которые работают в бухгалтерской фирме.
  • Клиентом (и заданием по аудиту) управляет менеджер. У каждого клиента есть только один менеджер, который управляет ими, и каждый менеджер может управлять несколькими клиентами
  • Поскольку сотрудники работают над аудитом, они отводят время на аудит. Стоимость аудита рассчитывается как коэффициент их списания, умноженный на общее количество часов, потраченных на аудит
  • Каждый сотрудник работает на 1 и только 1 команду. В команде работает 1 или более сотрудников.
  • Партнер - это подкласс суперкласса персонала, с уникальным номером rca, идентифицирующим их (бухгалтерский жаргон). Каждый партнер возглавляет команду, и у каждой команды есть один и только один партнер
  • У каждого партнера есть личный помощник, и каждый личный помощник работает только на 1 партнера

ER модель

Модель ER Время и плата за аудит

Вопросы

  1. Partner и Personal Assistant являются подклассами, и в соответствии с моей схемой существует обязательное отношение 1..1. "Законно" ли иметь определенные отношения между подклассами?

  2. Я использовал необязательные или отношения для подклассов персонала, что, на мой взгляд, хорошо, поскольку сотрудник не может выполнять одновременно ни одну из ролей. Единственная пропущенная роль в качестве подкласса - это роль "аудитора". Если бы я включил это, было бы "необязательно" или "изменилось бы" на "обязательное" или "", поскольку показаны все возможные варианты, и сотрудник должен быть одной из этих 4 ролей?

  3. Между Annual_audit и Staff у меня есть сущность отношений (я мог бы назвать это чем-то неправильным). Это правильный способ показать отношения? Я тоже пытался использовать троичные отношения, но несколько раз возвращался назад и вперед.

  4. Любая общая обратная связь или указание на ошибки приветствуются

Большое спасибо за любую помощь, которую может оказать каждый.

1 ответ

Решение

Partner и Personal Assistant являются подклассами, и в соответствии с моей схемой существует обязательное отношение 1..1. "Законно" ли иметь определенные отношения между подклассами?

Совершенно верно иметь отношения между подтипами и / или супертипами.

Я использовал необязательные или отношения для подклассов персонала, что, на мой взгляд, хорошо, поскольку сотрудник не может выполнять одновременно ни одну из ролей. Единственная пропущенная роль в качестве подкласса - это роль "аудитора". Если бы я включил это, было бы "необязательно" или "изменилось бы" на "обязательное" или "", поскольку показаны все возможные варианты, и сотрудник должен быть одной из этих 4 ролей?

Это звучит правильно. Я бы лучше использовал термин "дизъюнкт", чем "или".

Между Annual_audit и Staff у меня есть сущность отношений (я мог бы назвать это чем-то неправильным). Это правильный способ показать отношения? Я тоже пытался использовать троичные отношения, но несколько раз возвращался назад и вперед.

В модели ER нет такой вещи как "сущность отношения". Возможно, вы думаете об ассоциативных объектах, которые используются в сетевой модели данных для разложения отношений "многие ко многим". Модель ER напрямую поддерживает отношения "многие ко многим" и не требует для этой цели ассоциативных сущностей, хотя им все же необходимо подчинить отношения другим отношениям.

Annual_audit на вашей диаграмме слабое отношение сущности. Staff это регулярное отношение сущности. Между ними есть Charges time который является отношением многих ко многим. Обозначение достаточно читабельно, если вы знаете понятия. Тем не менее, обозначения Чена будут представлять концепции более четко, в то время как диаграммы, похожие на схемы таблиц, лучше работают для физических моделей.

Одна проблема с вашей диаграммой - стрелки. Они не соответствуют показателям кардинальности. Индикаторы кардинальности выглядят правильно, но наконечники стрел в основном не указывают на значимые направления. Я бы удалил их все, кроме одного, указывающего из подтипов на Staff,

Наконец, я предлагаю вам не смешивать концепции ООП и моделирования данных и терминологию. Моделирование данных предназначено для представления знаний, ООП - для моделирования систем. Используйте "подтип" для подтипов / подмножеств наборов сущностей, "подклассы" для производных классов в контексте программирования.

Другие вопросы по тегам