MySQL 审批流数据库设计
-- 创建一个名为`process_flow`的表来存储审批流程的信息
CREATE TABLE `process_flow` (
`id` INT NOT NULL AUTO_INCREMENT,
`process_id` INT NOT NULL,
`step_number` INT NOT NULL,
`actor_id` INT NOT NULL,
`action` ENUM('start', 'submit', 'approve', 'reject') NOT NULL,
`comments` TEXT,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
FOREIGN KEY (`process_id`) REFERENCES `process`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 创建一个名为`process`的表来存储审批流程的基本信息
CREATE TABLE `process` (
`id` INT NOT NULL AUTO_INCREMENT,
`process_template_id` INT NOT NULL,
`status` ENUM('pending', 'completed', 'terminated') NOT NULL DEFAULT 'pending',
PRIMARY KEY (`id`),
FOREIGN KEY (`process_template_id`) REFERENCES `process_template`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 创建一个名为`process_template`的表来存储审批流程的模板信息
CREATE TABLE `process_template` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
`description` TEXT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 示例插入数据
INSERT INTO `process_template` (`name`, `description`) VALUES ('Onboarding Process', 'Template for onboarding new employees');
INSERT INTO `process` (`process_template_id`) VALUES (LAST_INSERT_ID());
-- 假设步骤数和角色已知,实际应用中可能需要更动
INSERT INTO `process_step` (`process_id`, `step_number`, `role_id`) VALUES (LAST_INSERT_ID(), 1, 1);
INSERT INTO `process_step` (`process_id`, `step_number`, `role_id`) VALUES (LAST_INSERT_ID(), 2, 2);
-- 更多操作...
这个例子展示了如何使用MySQL数据库来设计一个审批流程的基础架构。这里创建了三个表:process_flow
、process
和process_template
。process_flow
用来跟踪每个审批步骤的状态变化,process
存储流程的状态和其他信息,process_template
定义了流程的基本信息。代码中包含了表的创建和插入示例数据的步骤,但实际应用中可能需要更多的逻辑来处理复杂的情况。
评论已关闭