【MySQL数据库】--借助AI快速画数据库ER图

我在开发一个地质勘探标注工具,需要设计数据库表,你可以直接把你的需求告诉AI:

https://www.qianwen.com/chat/744382cfc96f48c1819d6a3b3373d9cd?source=tongyigw

目录

1.明确需求

2.生成SQL语句

3.工具生成ER图


1.明确需求

我现在在开发一个地质勘探标注工具,请帮我根据下面的设计画一个mysql数据库的ER图,各表字段生成一个表格

  1. 标注功能技术实现方案​​

​​AI标注​​:AI生成的标注结果可提供"保存"按钮,将JSON格式的结果存入独立的标注数据表中,该表需关联主图ID。

​​人工标注​​:支持对主图进行人工标注,同时可处理子图。子图信息可作为主图JSON的一部分进行统一保存,或单独存入子图表中。

​​图片管理​​:上传的图片将存储至数据库,可采用存储图片编码或存储文件路径的方式。建议在图片信息表中增加上传者ID和标注者ID字段,为后续的用户权限管理做准备。

就是要知道需求是什么,需要哪些表

  1. 图片表(picture)

|-------------|--------------|---------------------------|
| 字段名 | 数据类型 | 约束/说明 |
| picture_id | INT | 主键,自增 |
| filename | VARCHAR(255) | 原始文件名(可选) |
| uploader_id | INT | 外键,关联用户表(上传者) |
| upload_time | DATETIME | 上传时间,默认 CURRENT_TIMESTAMP |
| status | TINYINT | 图片状态(如:0-待标注,1-已标注等) |

  1. AI 标注表(ai_annotation)

|------------------|--------------|--------------------------|
| 字段名 | 数据类型 | 约束/说明 |
| ai_annotation_id | INT | 主键,自增 |
| picture_id | INT | 外键,关联 picture.picture_id |
| model_version | VARCHAR(50) | 使用的AI模型(用于追踪) |
| annotation_data | JSON | AI生成的标注结果,结构同人工标注(含子图框) |
| created_at | DATETIME | 生成时间 |

  1. 人工标注表(manual_annotation)

|----------------------|--------------|----------------------------------------|
| 字段名 | 数据类型 | 约束/说明 |
| manual_annotation_id | INT | 主键,自增,唯一标识每个子图标注 |
| picture_id | INT | 外键,关联主图(picture.picture_id) |
| annotator_id | INT | 外键,标注人用户 ID |
| label | Json | 地质类别标签(如 "fault", "fold", "stratum" 等) |
| subimage_name | VARCHAR(255) | 裁剪后子图的存储名字(abc123.jpg) |
| updated_at | DATETIME | 最后更新时间 |

  1. 完整标注表(complete_annotation)

|------------------------|--------------|----------------------------------------|
| 字段名 | 数据类型 | 约束/说明 |
| complete_annotation_id | INT | 主键,自增 |
| picture_id | INT | 外键,关联 picture.picture_id,唯一(一张图一个完整标注) |
| final_data | JSON | 最终合并后的标注数据(格式统一,含所有子图) |
| created_by | INT | 最终确认人(用户ID) |
| created_at | DATETIME | 确认时间 |

  1. 用户表(user)

|---------------|--------------------------------------------------|-----------------|
| 字段名 | 数据类型 | 约束 / 说明 |
| user_id | INT | 主键,自增,唯一标识用户 |
| username | VARCHAR(100) | 唯一,登录用户名(不可重复) |
| password_hash | VARCHAR(255) | 密码 |
| role | ENUM('admin', 'annotator', 'uploader', 'viewer') | 用户角色,控制权限 |

2.生成SQL语句

根据表,生成sql:

1.图片表(picture)

字段名 数据类型 约束/说明

picture_id INT 主键,自增

filename VARCHAR(255) 原始文件名(可选)

uploader_id INT 外键,关联用户表(上传者)

upload_time DATETIME 上传时间,默认 CURRENT_TIMESTAMP

status TINYINT 图片状态(如:0-待标注,1-已标注等)

2.AI 标注表(ai_annotation)

字段名 数据类型 约束/说明

ai_annotation_id INT 主键,自增

picture_id INT 外键,关联 picture.picture_id

model_version VARCHAR(50) 使用的AI模型(用于追踪)

annotation_data JSON AI生成的标注结果,结构同人工标注(含子图框)

created_at DATETIME 生成时间

3.人工标注表(manual_annotation)

字段名 数据类型 约束/说明

manual_annotation_id INT 主键,自增,唯一标识每个子图标注

picture_id INT 外键,关联主图(picture.picture_id)

annotator_id INT 外键,标注人用户 ID

label Json 地质类别标签(如 "fault", "fold", "stratum" 等)

subimage_name VARCHAR(255) 裁剪后子图的存储名字(abc123.jpg)

updated_at DATETIME 最后更新时间

4.完整标注表(complete_annotation)

字段名 数据类型 约束/说明

complete_annotation_id INT 主键,自增

picture_id INT 外键,关联 picture.picture_id,唯一(一张图一个完整标注)

final_data JSON 最终合并后的标注数据(格式统一,含所有子图)

created_by INT 最终确认人(用户ID)

created_at DATETIME 确认时间

sql 复制代码
-- 5. 用户表(user)
CREATE TABLE user (
    user_id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(100) NOT NULL UNIQUE,
    password_hash VARCHAR(255) NOT NULL,
    role ENUM('admin', 'annotator', 'uploader', 'viewer') NOT NULL
);

-- 1. 图片表(picture)
CREATE TABLE picture (
    picture_id INT AUTO_INCREMENT PRIMARY KEY,
    filename VARCHAR(255),
    uploader_id INT NOT NULL,
    upload_time DATETIME DEFAULT CURRENT_TIMESTAMP,
    status TINYINT NOT NULL DEFAULT 0 COMMENT '0-待标注, 1-已标注等',
    FOREIGN KEY (uploader_id) REFERENCES user(user_id)
);

-- 2. AI 标注表(ai_annotation)
CREATE TABLE ai_annotation (
    ai_annotation_id INT AUTO_INCREMENT PRIMARY KEY,
    picture_id INT NOT NULL,
    model_version VARCHAR(50) NOT NULL,
    annotation_data JSON NOT NULL,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (picture_id) REFERENCES picture(picture_id)
);

-- 3. 人工标注表(manual_annotation)
CREATE TABLE manual_annotation (
    manual_annotation_id INT AUTO_INCREMENT PRIMARY KEY,
    picture_id INT NOT NULL,
    annotator_id INT NOT NULL,
    label JSON NOT NULL COMMENT '地质类别标签,如 {"type": "fault", "confidence": 0.95}',
    subimage_name VARCHAR(255) NOT NULL,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (picture_id) REFERENCES picture(picture_id),
    FOREIGN KEY (annotator_id) REFERENCES user(user_id)
);

-- 4. 完整标注表(complete_annotation)
CREATE TABLE complete_annotation (
    complete_annotation_id INT AUTO_INCREMENT PRIMARY KEY,
    picture_id INT NOT NULL UNIQUE,
    final_data JSON NOT NULL,
    created_by INT NOT NULL,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (picture_id) REFERENCES picture(picture_id),
    FOREIGN KEY (created_by) REFERENCES user(user_id)
);

3.工具生成ER图

我们可以使用到一个工具:SQL转ER图在线工具: https://sql.cengxuyuan.cn/?mode=manual

直接把SQL语句输入进去就可以了:

相关推荐
EnCi Zheng2 小时前
1. AI数据库工具对比 [特殊字符]
数据库·人工智能
升鲜宝供应链及收银系统源代码服务2 小时前
升鲜宝生鲜配送供应链管理系统生产加工子模块的详细表设计说明
java·大数据·前端·数据库·bootstrap·供应链系统·生鲜配送
一只会奔跑的小橙子2 小时前
性能压测问题排查思路
jvm·数据库
Gauss松鼠会2 小时前
openGauss数据库源码解析系列文章--openGauss简介(上)
数据库·性能优化·database·opengauss
V1ncent Chen2 小时前
从零学SQL 05 基础查询
数据库·sql·mysql·数据分析
老迟聊架构2 小时前
完全基于对象存储的数据库引擎:SlateDB
数据库·后端·架构
阿蒙Amon2 小时前
C#常用类库-详解CsvHelper
开发语言·数据库·c#
006_2 小时前
Java8的lambda用法总结
前端·数据库