审批工作流数据库设计是否过度复杂?求简化建议
班级申请审批流程数据库设计咨询
我正在开发一款协助经理进行新员工招聘规划的Web应用,其中包含名为「Class Requests」的审批工作流,对应业务单元为「Districts」。我没有正式的数据库或Web设计经验,设计审批流程时用到了6张表,担心结构过于复杂。
现有数据库设计说明
非审批核心表:classrequest
字段列表:
- districtid
- classsize
- TheWeekEndingDate
- approvalstatusid(关联审批流程)
- newrequestedclasssize(默认null,调整班级规模时设为>0的整数)
- cancellationrequested(默认0,申请取消班级时设为1)
- createdby
- createdon
- modifiedby
- modifiedon
审批流程关联表
创建新班级申请时,需向以下两张表插入数据以启动审批:
1. Approvals表
字段:
- id
- classrequestid
- approvaltypeid
- approvalstatusid
- cancelapproval(位类型,默认0)
2. ApprovalDetails表
字段:
- id
- approvalid
- approverid
- approvalstatusid
插入时核心字段生成规则
approvaltypeid(来自approvaltypes表)
| id | 名称 |
|---|---|
| 1 | 新申请 |
| 2 | 调整班级规模 |
| 3 | 取消班级 |
新申请用id1,调整规模用id2,取消班级用id3。
approvalstatusid(来自approvalstatuses表)
| id | 名称 |
|---|---|
| 1 | 待审批 |
| 2 | 已批准 |
| 3 | 已拒绝 |
| 4 | 审批已取消 |
默认值为1。
approverid(来自approverdistrictmapping表)
该表字段包括id、districtid、approvaltypeid、approverid(关联approvers表的审批人列表)、deleted(默认0,1表示忽略该行)。向approvals表插入审批记录时,会为对应districtid和approvaltypeid的每位审批人在approvaldetails表中插入一行。
审批相关表总计
共6张:approvals、approvaldetails、approvalstatuses、approvaltypes、approverdistrictmapping、approvers
支持的三种审批操作
- 新申请:向
classrequest表插入行 - 调整班级规模申请:将
newrequestedclasssize从null改为>0的整数 - 取消班级申请:将
cancellationrequested从0改为1
额外规则
- 审批流程可取消:例如用户申请将班级规模从10改为5后反悔,可在审批进行中取消流程,保持原规模10。
- 审批生效规则:需
approvaldetails表中所有审批人同意,审批状态才更新为「已批准」;若有任何一人拒绝,则更新为「已拒绝」。
问题
请问此设计是否过于复杂?是否有简化空间?
内容的提问来源于stack exchange,提问作者Tristen Hannah
相关产品推荐
相关产品推荐

