
AI绘制E-R图、流程图等,支持Deepseek、ChatGPT(附带提示词和演示Demo)
·
前言
在现代软件开发中,实体关系图(E-R图)和流程图是不可或缺的工具。它们帮助开发者理解系统结构和流程。然而,手动绘制这些图表既耗时又容易出错。本文将探讨如何利用AI工具DeepSeek,通过生成标准化的Mermaid语法代码,再结合可视化工具(如Draw.io或Mermaid Live Editor)实现E-R图的自动生成。
原理概述
DeepSeek本身无法直接生成图像,但它能够将用户的自然语言描述转化为计算机可执行的图表代码。这些代码使用标准化的Mermaid语法,可以被专业的可视化工具渲染成图表。可以将这种协作模式比作"AI翻译官"。用户描述需求,DeepSeek生成代码,工具渲染图像。
技术优势对比
- Mermaid原生支持:Mermaid可以直接生成基础的E-R图,但其布局算法较为简单,可能不满足复杂需求。
- Draw.io二次加工:Draw.io提供了更强大的排版调整功能,能够解决连线交叉等问题,使图表更加美观和易于理解。
操作流程(以E-R图导入Draw.io为例)
1. 提示词设计
在生成E-R图之前,需要设计提示词,这里题主尝试过很多版提示词,下面这个效果最好:
【角色】
你是一名专业的数据库架构师,擅长通过可视化图表描述实体关系。你的任务是根据用户需求生成标准化的 ER 图代码,确保逻辑清晰、语法无误,并能直接导入Draw.io。
【要求】
输入:用户提供实体、属性、关系等关键信息(若无,可主动询问补充)。
输出:
- 使用Mermaid或PlantUML语法(需指定)。
- 自动调整数据类型以符合所选语法的限制(例如,将decimal调整为float,将enum调整为string等)。
- 添加注释说明复杂逻辑和约束条件。
- 提供完全正确的Mermaid代码,确保代码能够直接导入Draw.io。
【输入】
下面是我的表结构,请你根据表结构及描述生成E-R图
-- 1. 用户表(主表)
CREATE TABLE `user` (
`user_id` int NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`username` varchar(50) NOT NULL COMMENT '用户名',
`email` varchar(100) NOT NULL COMMENT '邮箱',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`user_id`),
UNIQUE KEY `idx_email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户基本信息';
-- 2. 订单表(1对多:1个用户可有多笔订单)
CREATE TABLE `order` (
`order_id` int NOT NULL AUTO_INCREMENT COMMENT '订单ID',
`user_id` int NOT NULL COMMENT '关联用户ID',
`amount` decimal(10,2) NOT NULL COMMENT '订单金额',
`status` enum('pending','paid','shipped') DEFAULT 'pending' COMMENT '订单状态',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`order_id`),
KEY `idx_user_id` (`user_id`),
CONSTRAINT `fk_order_user` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户订单表';
-- 3. 商品表(独立表)
CREATE TABLE `product` (
`product_id` int NOT NULL AUTO_INCREMENT COMMENT '商品ID',
`name` varchar(100) NOT NULL COMMENT '商品名称',
`price` decimal(10,2) NOT NULL COMMENT '商品价格',
`stock` int NOT NULL DEFAULT 0 COMMENT '库存',
PRIMARY KEY (`product_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品表';
-- 4. 订单明细表(多对多:1个订单可含多个商品,1个商品可属于多个订单)
CREATE TABLE `order_item` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '明细ID',
`order_id` int NOT NULL COMMENT '关联订单ID',
`product_id` int NOT NULL COMMENT '关联商品ID',
`quantity` int NOT NULL COMMENT '购买数量',
`price` decimal(10,2) NOT NULL COMMENT '成交单价',
PRIMARY KEY (`id`),
KEY `idx_order_id` (`order_id`),
KEY `idx_product_id` (`product_id`),
CONSTRAINT `fk_item_order` FOREIGN KEY (`order_id`) REFERENCES `order` (`order_id`),
CONSTRAINT `fk_item_product` FOREIGN KEY (`product_id`) REFERENCES `product` (`product_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单商品明细表';
-- 5. 用户地址表(1对1:1个用户只有1个默认地址)
CREATE TABLE `user_address` (
`address_id` int NOT NULL AUTO_INCREMENT COMMENT '地址ID',
`user_id` int NOT NULL COMMENT '关联用户ID',
`province` varchar(20) NOT NULL COMMENT '省份',
`city` varchar(20) NOT NULL COMMENT '城市',
`detail` varchar(200) NOT NULL COMMENT '详细地址',
`is_default` tinyint(1) DEFAULT 0 COMMENT '是否默认地址',
PRIMARY KEY (`address_id`),
UNIQUE KEY `idx_user_default` (`user_id`, `is_default`),
CONSTRAINT `fk_address_user` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户地址表';
说明:附带的表结构DDL是演示demo,后续可以换成自己的DDL,无需阐述对应关系,Deepseek能够自行识别
2. 生成Mermaid代码
发送给Deepseek后会根据DDL生成mermind
3. 导入draw.io并微调
选择加号添加,高级,mermind,粘贴第二步得到的mermind代码
4. 微调
由于mermind无法精确的完成定位的问题,生成的E-R图可能会出现连接线重合,属性框宽度不一致的问题,可以在draw.io中选中属性框批量处理
更多推荐
所有评论(0)