You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

审批工作流数据库设计是否过度复杂?求简化建议

班级申请审批流程数据库设计咨询

我正在开发一款协助经理进行新员工招聘规划的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

支持的三种审批操作

  1. 新申请:向classrequest表插入行
  2. 调整班级规模申请:将newrequestedclasssize从null改为>0的整数
  3. 取消班级申请:将cancellationrequested从0改为1

额外规则

  • 审批流程可取消:例如用户申请将班级规模从10改为5后反悔,可在审批进行中取消流程,保持原规模10。
  • 审批生效规则:需approvaldetails表中所有审批人同意,审批状态才更新为「已批准」;若有任何一人拒绝,则更新为「已拒绝」。

问题

请问此设计是否过于复杂?是否有简化空间?

内容的提问来源于stack exchange,提问作者Tristen Hannah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 22:22:37