我正在爲Java Web應用程序工作流應用程序的數據庫設計來跟蹤和檢查各種業務產品(文檔)。但是我的設計和實現有很多不確定性。
這裏是我的表:數據庫設計一對多
WORK_FLOW_CLASS
- 定義工作表類型的產品,即流量:報告,演示,工程計算ROLE_CLASS
- 工作流角色,即定義表:發起人,檢查員,審批人,經理WORK_ITEM_CLASS
- 代表某些紙質表格的工作項目定義表,即:作業表單,計算覈對表,報告審覈表,Clos EOUT清單等,這些形式要求將被按照一定的順序多個角色被認爲完成之前的工作WORK_ACTION_CLASS
- 的工作項行動,即定義:通過檢查完整的計算清單(一WORK_ITEM
)(一ROLE
) ,完整的審查報告(一WORK_ITEM
)由經理(一個ROLE
),完整的審查報告(一WORK_ITEM
)通過審批(一ROLE
)WORK_FLOW_SEQUENCE
- 定義表與一個WORK_FLOW_CLASS
的許多WORK_ITEM_CLASS
ES,即系入門級1計算順序是:(1)A (2)計算清單,(3)清理清單。部門XYZ 1級計算順序爲:(1)分配表格,(2)清理清單[XYZ選擇不在其Calc工作流程中執行清單]。
第一個問題:如若WORK_ACTION_CLASS有一個FK它涉及到WORK_ITEM_CLASS?
或者我應該使用中間表來提供關係?我認爲後者是不必要的,因爲我不需要將WORK_ACTION與多個WORK_ITEMS相關聯,只有一個。
當用戶啓動一個新的工作流實例時,我的計劃是查詢CLASS表以獲取所選WORK_FLOW_CLASS的詳細信息,並將它們實例化到下表中。
WORK_FLOW_INSTANCE
- 工作流的實際實例 - 我想就像一個購物車訂單WFI_WORK_ITEMS
- WORK_ITEMs的工作流程實例行項目 - 我想喜歡的產品的訂單WFI_WORK_ITEM_ACTIONS
- 工作流實例的工作項目操作
這裏就是我需要的^ h elp與第二個問題。
是否應該有兩個單獨的表WFI_WORK_ITEMS
和WFI_WORK_ITEM_ACTIONS
或應該有一個複合表?我需要查詢工作流實例中的WORK_ITEMS以及包含WORK_ACTIONS子步驟的WORK_ITEMS。
這裏是被質疑的兩個表的細節。對不起,我不知道描述我的模式的最佳方式。
WFI_WORK_ITEMS
==============
WFI_WORK_ITEM_ID (PK)
WORKFLOW_INSTANCE_ID (FK)
WORK_ITEM_CLASS_ID (FK)
STEP_NUM
LAST_DATE
STATUS
IS_ACTIVE
WFI_WORK_ITEM_ACTION
====================
WFI_WORK_ITEM_ACTION_ID (PK)
WORKFLOW_INSTANCE_ID (FK)
WFI_WORK_ITEM_ID (FK)
WORK_ITEM_CLASS_ID (FK)
STEP_NUM
WORK_ACTION_CLASS_ID (FK)
ACTION_OWNER
LAST_DATE DATE
STATUS
IS_ACTIVE
我似乎在這兩個表中有很多冗餘信息。但是我已經閱讀過,有時會執行非規範化表格。
任何幫助我的設計是非常感謝。
編輯 我的意思通過冗餘數據是兩個表列出WORKFLOW_INSTANCE_ID
和WORK_ITEM_CLASS_ID
我的想法是,如果我想知道一個工作流的特定實例的WORK_ITEM_ACTIONS,我可以通過查詢表WFI_WORK_ITEM_ACTION
得到它而無需加入「WFI_WORK_ITEM」表。也許這是錯誤的想法。 WORK_ITEM_CLASS_ID
也一樣。通過查詢WFI_WORK_ITEM_ACTION
表,我知道ACTION的WORK_ITEM類型。
這是一個更好的設計?
WFI_WORK_ITEM ============== WFI_WORK_ITEM_ID (PK) WORKFLOW_INSTANCE_ID (FK) WORK_ITEM_CLASS_ID (FK) WORK_ITEM_STEP_NUM WORK_ITEM_LAST_DATE WORK_ITEM_STATUS WORK_ITEM_IS_ACTIVE WFI_WORK_ITEM_ACTION ==================== WFI_WORK_ITEM_ACTION_ID (PK)WORKFLOW_INSTANCE_ID (FK)WFI_WORK_ITEM_ID (FK)WORK_ITEM_CLASS_ID (FK)WORK_ACTION_STEP_NUM WORK_ACTION_CLASS_ID (FK) ACTION_OWNER WORK_ACTION_LAST_DATE WORK_ACTION_STATUS WORK_ACTION_IS_ACTIVE
+1,該主題的優秀概述。 – DCookie
+1,這與@DCookie所述的原因相同。 –
@paxdiablo - 謝謝你的出色答案。你所說的一切都很有道理。關於步驟編號的部分是肯定的,我需要工作項目和工作項目操作的步驟編號。我會解決這個問題,重構爲3NF並重新發布。 – jeff