美文网首页
条件分支流程图 数据库表如何设计?

条件分支流程图 数据库表如何设计?

作者: 饱饱抓住了灵感 | 来源:发表于2025-04-02 08:38 被阅读0次

设计数据库表保存条件分支流程图时,需结合流程图的节点和逻辑关系。


一、核心表设计

1. 流程图表 (flowcharts)

存储流程图基本信息

CREATE TABLE flowcharts (
    id INT PRIMARY KEY AUTO_INCREMENT,  -- 流程图唯一ID
    name VARCHAR(255) NOT NULL,         -- 流程图名称
    description TEXT,                   -- 描述
    creator_id INT,                     -- 创建者ID(可关联用户表)
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

2. 节点表 (nodes)

存储流程中的具体节点(开始、操作、判断、结束等)

CREATE TABLE nodes (
    id INT PRIMARY KEY AUTO_INCREMENT,
    flowchart_id INT NOT NULL,          -- 所属流程图ID
    type ENUM('start', 'action', 'decision', 'end') NOT NULL,  -- 节点类型
    name VARCHAR(255) NOT NULL,         -- 节点名称
    content TEXT,                       -- 节点内容(如操作描述、判断条件提示)
    position_x INT,                     -- 可视化布局X坐标
    position_y INT,                     -- 可视化布局Y坐标
    FOREIGN KEY (flowchart_id) REFERENCES flowcharts(id)
);

3. 转移关系表 (transitions)

存储节点间的跳转逻辑(含条件)

CREATE TABLE transitions (
    id INT PRIMARY KEY AUTO_INCREMENT,
    from_node_id INT NOT NULL,          -- 源节点ID
    to_node_id INT NOT NULL,            -- 目标节点ID
    condition_expression TEXT,          -- 条件表达式(如 "age > 18")
    is_default BOOLEAN DEFAULT FALSE,   -- 是否为默认分支(无条件时触发)
    sequence INT,                       -- 同源节点下的执行顺序
    FOREIGN KEY (from_node_id) REFERENCES nodes(id),
    FOREIGN KEY (to_node_id) REFERENCES nodes(id)
);

二、设计要点说明

  1. 节点类型区分
    • decision 类型节点支持多分支(多个transitions),action/start/end 为单出口。
    • 示例:判断节点有两条转移(age>18 → 流程A,age<=18 → 流程B)。
  2. 条件表达式存储
    • 直接存储表达式字符串(如 "status == 'approved'"),业务层解析执行。
    • 复杂场景可扩展为存储JSON格式条件组(如 {"operator": "AND", "conditions": [...]})。
  3. 可视化布局
    • position_x/y 字段支持流程图绘制时的坐标还原。
  4. 默认分支处理
    • 当无明确条件匹配时,通过 is_default=TRUE 标识默认跳转路径。

三、示例数据

流程图:请假审批

-- 插入流程图
INSERT INTO flowcharts (name) VALUES ('Leave Approval');

-- 插入节点(ID假设自增)
-- 开始节点
INSERT INTO nodes (flowchart_id, type, name, content) 
VALUES (1, 'start', 'Start', '流程启动');

-- 判断节点(ID=2)
INSERT INTO nodes (flowchart_id, type, name, content) 
VALUES (1, 'decision', 'Check Days', '请假天数是否超过3天?');

-- 结束节点(ID=3, ID=4)
INSERT INTO nodes (flowchart_id, type, name, content) 
VALUES (1, 'end', 'Approved', '审批通过'), 
       (1, 'end', 'Rejected', '审批拒绝');

-- 插入转移关系
-- 开始→判断节点
INSERT INTO transitions (from_node_id, to_node_id) 
VALUES (1, 2);

-- 判断节点→结束节点(条件分支)
INSERT INTO transitions (from_node_id, to_node_id, condition_expression) 
VALUES (2, 3, 'days > 3'), 
       (2, 4, 'days <= 3');

四、扩展性建议

  1. 动态属性
    若节点需存储额外参数(如超时时间),可通过 JSON 类型扩展:

    ALTER TABLE nodes ADD COLUMN attributes JSON;
    -- 示例:{"timeout": 72, "unit": "hours"}
    
  2. 版本控制
    如需保留历史版本,可新增 versions 表记录每次修改。

  3. 权限管理
    添加 acl 表关联角色与流程图访问权限。


此设计平衡了通用性与性能,可根据实际业务需求调整字段类型或增加约束。

相关文章

  • 2018-12-07

    2.4系统数据库设计 抽象数据库表流程图抽象数据库表流程图.png抽象数据库表流程图1.png ER图ER图.pn...

  • 2018-12-03 2.4

    《2.4 系统数据库设计》 2.4(1) 一.数据库表设计和流程图 1. 数据库设计第一步 标识实体 在需求分析...

  • 2018-12-03

    2.4系统数据库设计 1.描述抽象数据库表的过程,绘制流程图(提示:四个步骤) CREATE TABLE [dbo...

  • 2.4

    《2.4系统数据库设计》具体要求: 描述抽象数据库表的过程,绘制流程图(提示:四个步骤)捕获.PNG 绘制智慧商超...

  • 2018-12-03

    《2.4系统数据库设计》 1、描述抽象数据库表的过程,绘制流程图(4个步骤)。 2、绘制智慧商超系统的ER图。 3...

  • 2018-12-03(第四组)

    《2.4 系统数据库设计》 制作人:李健 1.描述抽象数据库表的过程,绘制流程图(提示:四个步骤) 2.绘制智慧...

  • 2018-12-03

    系统数据库设计 一、描述抽象数据库表的过程,绘制流程图 第一步:识别实体 第二步:绘制ER图 第三步:转换成数据表...

  • 2018-12-07

    《2.4 系统数据库设计》 1.描述抽象数据库表的过程,绘制流程图 1.标识实体2.绘制E-R图3.E-R模型转换...

  • 商城表结构设计

    (一)购物商城数据库设计-前期准备 (二)购物商城数据库设计-商品表设计 (三)购物商城数据库设计-商品表DDL(...

  • 2018-12-04

    2.4系统数据库设计 1.描述抽象数据库表的过程,绘制流程图 2.绘制智慧商超系统的ER图 3.给出智慧商超涉及到...

网友评论

      本文标题:条件分支流程图 数据库表如何设计?

      本文链接:https://www.haomeiwen.com/subject/idubvjtx.html