借助AI快速绘制 E-R 图

Eg:
先让任意的AI根据题目要求生成E-R模型,并将E-R模型转换为关系模型
然后让AI使用标准的mysql语句给出数据库结构,并给出中文注释
就可以得到

-- 创建数据库
CREATE DATABASE IF NOT EXISTS `order_management` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 使用数据库
USE `order_management`;

-- 创建客户表
CREATE TABLE `customers` (
  `customer_id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '客户ID',
  `customer_name` VARCHAR(255) NOT NULL COMMENT '客户姓名',
  `contact_info` VARCHAR(255) NULL DEFAULT NULL COMMENT '联系方式',
  `id_number` VARCHAR(50) NULL DEFAULT NULL COMMENT '证件号码',
  `address` VARCHAR(255) NULL DEFAULT NULL COMMENT '客户地址',
  PRIMARY KEY (`customer_id`) USING BTREE
) ENGINE = InnoDB COMMENT = '客户表';

-- 创建订单表
CREATE TABLE `orders` (
  `order_id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '订单ID',
  `order_date` DATE NOT NULL COMMENT '订单日期',
  `total_amount` DECIMAL(10, 2) NOT NULL DEFAULT 0.00 COMMENT '订单总金额',
  `customer_id` INT(11) NOT NULL COMMENT '客户ID',
  PRIMARY KEY (`order_id`) USING BTREE,
  CONSTRAINT `fk_customer_order` FOREIGN KEY (`customer_id`)
    REFERENCES `customers` (`customer_id`) ON DELETE CASCADE
) ENGINE = InnoDB COMMENT = '订单表';

-- 创建部件表
CREATE TABLE `parts` (
  `part_id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '部件ID',
  `part_name` VARCHAR(255) NOT NULL COMMENT '部件名称',
  `description` TEXT NULL DEFAULT NULL COMMENT '部件描述',
  `unit_price` DECIMAL(10, 2) NOT NULL DEFAULT 0.00 COMMENT '部件单价',
  `quantity` INT(11) NOT NULL DEFAULT 0 COMMENT '部件库存数量',
  `total_price` DECIMAL(10, 2) GENERATED ALWAYS AS (`unit_price` * `quantity`) STORED COMMENT '部件合计价格',
  PRIMARY KEY (`part_id`) USING BTREE
) ENGINE = InnoDB COMMENT = '部件表';

-- 创建订单与部件关联表
CREATE TABLE `order_parts` (
  `order_id` INT(11) NOT NULL COMMENT '订单ID',
  `part_id` INT(11) NOT NULL COMMENT '部件ID',
  `quantity` INT(11) NOT NULL DEFAULT 1 COMMENT '部件数量',
  PRIMARY KEY (`order_id`, `part_id`) USING BTREE,
  CONSTRAINT `fk_order_part_order` FOREIGN KEY (`order_id`)
    REFERENCES `orders` (`order_id`) ON DELETE CASCADE,
  CONSTRAINT `fk_order_part_part` FOREIGN KEY (`part_id`)
    REFERENCES `parts` (`part_id`) ON DELETE CASCADE
) ENGINE = InnoDB COMMENT = '订单与部件关联表';

然后去SQL转ER图工具在线网站:https://generator.cengxuyuan.cn/sql2er
SQL转ER图工具在线网站

我们需要对图表样式进行设置


然后输入自己的SQL语句,点击生成E-R图

如果显示“检查一下SQL格式是否符合要求”

可以让AI再重新生成sql语句:

请定义好实体和属性以及关系定义,并再完善sql语句

或者

为了确保正确生成ER图,SQL建表语句需要遵循以下格式规范:

表名和字段名: 使用反引号(`)包围,例如:`user_info`、`user_id`
字段定义:
明确指定字段类型和长度,如:VARCHAR(50)、INT(11)
使用NOT NULL或NULL声明是否允许为空
可以使用DEFAULT设置默认值
建议为每个字段添加COMMENT注释
主键定义: 使用PRIMARY KEY在字段列表最后声明,例如:
PRIMARY KEY (`id`) USING BTREE
外键关系: 使用CONSTRAINT和FOREIGN KEY定义表之间的关系,例如:
CONSTRAINT `fk_user_role` FOREIGN KEY (`user_id`) 
  REFERENCES `user` (`id`) ON DELETE CASCADE
表注释: 在表定义的最后使用COMMENT添加表说明,例如:
ENGINE = InnoDB COMMENT = '用户表';
完整的建表语句示例:

CREATE TABLE `user_info` (
  `user_id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
  `username` VARCHAR(50) NOT NULL COMMENT '用户名',
  `email` VARCHAR(100) NULL DEFAULT NULL COMMENT '邮箱',
  `status` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '状态',
  `create_time` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`user_id`) USING BTREE
) ENGINE = InnoDB COMMENT = '用户信息表';
注意事项:

生成的图片不符合预期时,可以尝试调整图片样式,如果没有相关配置选项,请反馈。
在开启外键关联显示下,如果SQL中有外键,请确保外键关联的表也存在。比如学生关联班级,请确保学生表和班级表同时出现。如果学生表中有外键关联班级表,班级表不存在则无法生成。
根据以上要求,再重新给出完整的代码

如果有插入数据的sql语句则不要复制
再去SQL转ER图在线工具里粘贴代码,生成E-R图

posted @ 2025-04-12 17:11  郑琰  阅读(1926)  评论(0)    收藏  举报
#

# #