设计一个包含并行审批的数据库结构
时间: 2024-09-25 08:09:56 浏览: 55
设计一个支持并行审批的数据库结构,通常需要考虑以下几个关键元素:
1. **主表(Task Table)**:存储基本的任务信息,包括任务ID、标题、描述、创建者、状态(如新建、等待审批、审批中、已批准、已拒绝)。可以有一个外键字段指向审批参与者或者审批链上的下一个环节。
```sql
CREATE TABLE Tasks (
TaskID INT PRIMARY KEY,
Title VARCHAR(255),
Description TEXT,
Creator USER_ID,
Status ENUM('New', 'Pending', 'InReview', 'Approved', 'Rejected'),
NextApproverId INT (nullable)
);
```
2. **审批者表(Approvers Table)**:存储每个用户的审批权限,例如审批者ID、审批的角色(可能是多级审批中的级别)。
```sql
CREATE TABLE Approvers (
ApproverID INT PRIMARY KEY,
Role ENUM('Primary', 'Secondary', 'Tertiary') // 根据需要定义不同的角色等级
);
```
3. **审批历史表(ApprovalHistory Table)**:用于跟踪每次审批的状态变更,包括审批者、审批日期和审批结果。
```sql
CREATE TABLE ApprovalHistory (
HistoryID INT AUTO_INCREMENT,
TaskID INT,
ApproverID INT,
ApprovalDate DATETIME,
Result ENUM('Accepted', 'Rejected', 'Modified'),
FOREIGN KEY (TaskID) REFERENCES Tasks(TaskID),
FOREIGN KEY (ApproverID) REFERENCES Approvers(ApproverID)
);
```
4. **任务实例表(TaskInstance Table)**:如果并行审批涉及多个实例,可以创建一个表来链接任务ID和具体的实例,记录实例状态和进度。
```sql
CREATE TABLE TaskInstances (
InstanceID INT PRIMARY KEY,
TaskID INT,
Status ENUM('Pending', 'InProgress', 'Completed'),
Progress DECIMAL(5, 2), // 进度百分比
FOREIGN KEY (TaskID) REFERENCES Tasks(TaskID)
);
```
阅读全文