Проблема проектирования таблицы базы данных - PullRequest
1 голос
/ 20 февраля 2010

Scenario: Существует иерархия PROCESS. Нравится

PR-2, PR-3 are children of Pr-1,

PR-4, PR-5 are children of PR-2

Теперь leaf processes (in our case PR-3, PR-4 and PR-5 можно описать с помощью ряда ACTIVITY

Теперь ACTIVITY - это просто потомок PROCESS, но имеет некоторые дополнительные атрибуты, поэтому

Должен ли я сделать два diff. таблицы в базе данных (одна для ACTIVITY и одна для PROCESS)?

или

Должен ли я добавить некоторые поля (для дополнительных атрибутов ACTIVITIY) в таблицу PROCESS и сохранить ACTIVITY в таблице PROCESS.

========================================= EDITED =========== ===========================

На самом деле, здесь PROCESS И ACTIVITY - это те, которые участвуют в BPM (Businees Process Management)

Те, кто знает BPM, могут выяснить, что такое ACTIVITY И PROCESS.

Те, кто не знают BPM, я объясняю вам, что я имею в виду под PROCESS и ACTIVITY.

Любое предприятие имеет различные PROCESS (например, CustomerOrderPlaced, CustomerOrderCancelled и т. Д.), И ACTIVIT это как части процесса, которые должны быть выполнены для его завершения.

Итак, ACTIVITY является потомком PROCESS с некоторыми дополнительными атрибутами.

Или, с точки зрения Java, ACTIVITY расширяет PROCESS

Ответы [ 2 ]

1 голос
/ 20 февраля 2010

Как только вы говорите "ACTIVITY подобны частям процесса", "ACTIVITY extends PROCESS" больше не является допустимым утверждением. Это не отношения. Это отношения.

В терминах ER существует отношение один-ко-многим между Process и Activity. Или, возможно, отношение «многие ко многим», если одно действие принадлежит нескольким процессам.

Например, CustomerPlacesOrder - это процесс. Деятельность:

  • Клиент заполняет корзину;
  • Клиент выписывается;
  • Клиент вводит информацию о доставке и выставлении счетов, при необходимости регистрируется;
  • Работник получает заказ;
  • Если товар есть в наличии, работник выбирает подходящий упаковочный контейнер и заполняет его;
  • Рабочий отправляет его на ежедневные поставки.

Или как бы сложно это ни было. Наследование это не так.

0 голосов
/ 20 февраля 2010

У вас должно быть несколько таблиц. Таблицы могут быть как ниже:

ProcessTable

ID (первичный ключ)
ProcessName
ProcessCode ...

ActivityTable

ID (первичный ключ)
ActivityName
ActivityCode
ActivityDesc
ProcessID (внешний ключ для ProcessTable) ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...