【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语句输入进去就可以了:

相关推荐
SQVIoMPLe5 小时前
[拆解LangChain执行引擎]以Actor模型的视角来看Pregel
服务器·数据库·langchain
你都会上树?5 小时前
Ubuntu22 安装PostgreSQL
数据库·postgresql
想唱rap5 小时前
线程之条件变量和生产消费模型
java·服务器·开发语言·数据库·mysql·ubuntu
RInk7oBjo5 小时前
MySQL的编译安装
数据库·mysql·adb
java资料站5 小时前
MySQL 增量同步脚本
android·数据库·mysql
ningmengjing_5 小时前
从零推导出 Redis
数据库·redis
殷紫川5 小时前
InnoDB 索引性能天花板:聚簇 & 二级索引存储本质拆解,覆盖索引零回表优化全攻略
mysql
IvorySQL5 小时前
PostgreSQL & IvorySQL 技术交流 Meetup・郑州站| 4.18 线下开讲,只聊硬核技术
数据库·postgresql·开源
殷紫川5 小时前
MySQL IN 里塞 10000 个值?90% 开发者都踩过的坑,底层原理 + 全场景解决方案一次讲透
mysql
iOS妖狐小北6 小时前
mysql中主键索引和联合索引的原理解析
数据库·mysql