目 录CONTENT

文章目录

用AI生成后端数据库关系ER图:Mermaid语法

Administrator
2025-12-09 / 0 评论 / 0 点赞 / 0 阅读 / 0 字

用AI生成后端数据库关系ER图:Mermaid语法

我使用mermaid做ER图

博主最近在做大的功能迭代,开发前期的准备工作就是写mermaid的数据库关系。用于可视化和文档化,方便开发写代码和协作开发。以前我都是人工写mermaid语法,然后渲染ER图,现在有了AI的加持,我基本上只需要描述清楚字段、关系、表名,然后AI就可以帮我100%的生成正确的ER图代码。AI对提升系分设计的效率和质量都增益十足

Mermaid和ER是什么?

Mermaid实体关系模型(或 ER 模型)描述特定知识字段中相关的感兴趣的事物。基本 ER 模型由实体类型(对感兴趣的事物进行分类)组成,并指定实体(这些实体类型的实例)之间可以存在的关系。实体关系图 | Mermaid 中文网

ER图: ER 图可用于各种目的,从没有任何实现细节的抽象逻辑模型到关系数据库表的物理模型。在 ER 图上包含属性定义有助于理解实体的目的和含义。

实体关系的主要语法

实体关系图 | Mermaid 中文网,语法细节很多,阅读官方中文文档,10分钟就能学会。

ER图的核心价值

  1. 数据库变更时,修改Mermaid代码比重新画图快得多,代码化的图表可以和代码一起做版本控制
  2. 开发前梳理清楚表结构和关系,避免后期频繁改表
  3. 系分评审,讨论时有直观的视觉参考,更容易发现设计问题

注意:对于特别大型的数据库(几百张表),单个ER图会过于复杂,这时可能需要分模块画图,或者只画核心表的关系

演示使用AI绘制mermaid

分为2步:首先人工定义文字版本的数据库表关系和字段,然后用AI帮助我们绘制ER图

人为根据业务定义数据库表: 以用户体系表作为示例

1. 用户基础表(sys_user)
字段名	字段类型	字段含义	备注
user_id	bigint(20)	用户唯一标识(主键)	自增
username	varchar(50)	用户名(登录账号)	唯一、非空
password	varchar(200)	密码(加密存储,如 BCrypt)	非空
nickname	varchar(50)	用户昵称	可空
real_name	varchar(50)	真实姓名	可空
gender	tinyint(1)	性别(1 - 男,2 - 女,0 - 未知)	默认 0
phone	varchar(20)	手机号码	唯一、可空
email	varchar(100)	电子邮箱	唯一、可空
avatar	varchar(255)	头像 URL	可空
status	tinyint(1)	账号状态(0 - 禁用,1 - 正常)	默认 1
del_flag	tinyint(1)	删除标记(0 - 未删除,1 - 已删除)	默认 0、逻辑删除
dept_id	bigint(20)	所属部门 ID(关联 sys_dept 表)	可空
create_time	datetime	创建时间	非空
update_time	datetime	更新时间	可空
create_by	bigint(20)	创建人 ID(关联 sys_user 表自身)	可空
update_by	bigint(20)	更新人 ID(关联 sys_user 表自身)	可空
2. 部门表(sys_dept)
字段名	字段类型	字段含义	备注
dept_id	bigint(20)	部门唯一标识(主键)	自增
dept_name	varchar(50)	部门名称	非空、唯一
parent_id	bigint(20)	上级部门 ID(关联 sys_dept 表自身,顶级部门为 0)	非空
sort	int(11)	排序序号	默认 0
status	tinyint(1)	部门状态(0 - 禁用,1 - 正常)	默认 1
del_flag	tinyint(1)	删除标记(0 - 未删除,1 - 已删除)	默认 0
create_time	datetime	创建时间	非空
update_time	datetime	更新时间	可空
3. 角色表(sys_role)
字段名	字段类型	字段含义	备注
role_id	bigint(20)	角色唯一标识(主键)	自增
role_name	varchar(50)	角色名称(如:超级管理员、普通用户)	非空、唯一
role_code	varchar(50)	角色编码(如:admin、user)	非空、唯一
description	varchar(255)	角色描述	可空
status	tinyint(1)	角色状态(0 - 禁用,1 - 正常)	默认 1
del_flag	tinyint(1)	删除标记(0 - 未删除,1 - 已删除)	默认 0
create_time	datetime	创建时间	非空
update_time	datetime	更新时间	可空
4. 权限表(sys_permission)
字段名	字段类型	字段含义	备注
perm_id	bigint(20)	权限唯一标识(主键)	自增
perm_name	varchar(50)	权限名称(如:用户查询、角色新增)	非空
perm_code	varchar(100)	权限编码(如:sys:user:list、sys:role:add)	非空、唯一
perm_type	tinyint(1)	权限类型(1 - 菜单,2 - 按钮,3 - 接口)	非空
parent_id	bigint(20)	上级权限 ID(关联 sys_permission 表自身,顶级权限为 0)	非空
path	varchar(255)	菜单路径(仅菜单类型权限有效)	可空
component	varchar(255)	前端组件路径(仅菜单类型权限有效)	可空
icon	varchar(50)	菜单图标(仅菜单类型权限有效)	可空
sort	int(11)	排序序号	默认 0
status	tinyint(1)	权限状态(0 - 禁用,1 - 正常)	默认 1
del_flag	tinyint(1)	删除标记(0 - 未删除,1 - 已删除)	默认 0
create_time	datetime	创建时间	非空
update_time	datetime	更新时间	可空
5. 用户 - 角色关联表(sys_user_role)
字段名	字段类型	字段含义	备注
id	bigint(20)	关联记录 ID(主键)	自增
user_id	bigint(20)	用户 ID(关联 sys_user 表)	非空
role_id	bigint(20)	角色 ID(关联 sys_role 表)	非空
create_time	datetime	创建时间	非空
6. 角色 - 权限关联表(sys_role_permission)
字段名	字段类型	字段含义	备注
id	bigint(20)	关联记录 ID(主键)	自增
role_id	bigint(20)	角色 ID(关联 sys_role 表)	非空
perm_id	bigint(20)	权限 ID(关联 sys_permission 表)	非空
create_time	datetime	创建时间	非空
7. 用户登录日志表(sys_user_login_log)
字段名	字段类型	字段含义	备注
log_id	bigint(20)	日志 ID(主键)	自增
user_id	bigint(20)	用户 ID(关联 sys_user 表)	可空(匿名登录为 null)
username	varchar(50)	登录用户名	非空
ip_addr	varchar(50)	登录 IP 地址	非空
login_location	varchar(100)	登录地点(IP 解析)	可空
browser	varchar(50)	浏览器类型	可空
os	varchar(50)	操作系统	可空
login_time	datetime	登录时间	非空
login_status	tinyint(1)	登录状态(0 - 失败,1 - 成功)	非空
error_msg	varchar(255)	错误信息(登录失败时填写)	可空

让AI帮我们自动生成ER图

AI就会自动帮我们生成mermaid代码,之后我们只需要结合实际业务微调即可。

erDiagram
    sys_user ||--o{ sys_user_role : "拥有"
    sys_user }o--|| sys_dept : "所属"
    sys_user ||--o{ sys_user_login_log : "产生"
    sys_role ||--o{ sys_user_role : "分配给"
    sys_role ||--o{ sys_role_permission : "拥有"
    sys_permission ||--o{ sys_role_permission : "分配给"
    sys_dept ||--o{ sys_dept : "上级部门"
    sys_permission ||--o{ sys_permission : "上级权限"

    sys_user {
        bigint user_id PK "用户ID"
        varchar username UK "用户名"
        varchar password "密码"
        varchar nickname "昵称"
        varchar real_name "真实姓名"
        tinyint gender "性别"
        varchar phone UK "手机号"
        varchar email UK "邮箱"
        varchar avatar "头像URL"
        tinyint status "状态"
        tinyint del_flag "删除标记"
        bigint dept_id FK "部门ID"
        datetime create_time "创建时间"
        datetime update_time "更新时间"
        bigint create_by "创建人ID"
        bigint update_by "更新人ID"
    }

    sys_dept {
        bigint dept_id PK "部门ID"
        varchar dept_name UK "部门名称"
        bigint parent_id FK "上级部门ID"
        int sort "排序"
        tinyint status "状态"
        tinyint del_flag "删除标记"
        datetime create_time "创建时间"
        datetime update_time "更新时间"
    }

    sys_role {
        bigint role_id PK "角色ID"
        varchar role_name UK "角色名称"
        varchar role_code UK "角色编码"
        varchar description "角色描述"
        tinyint status "状态"
        tinyint del_flag "删除标记"
        datetime create_time "创建时间"
        datetime update_time "更新时间"
    }

    sys_permission {
        bigint perm_id PK "权限ID"
        varchar perm_name "权限名称"
        varchar perm_code UK "权限编码"
        tinyint perm_type "权限类型"
        bigint parent_id FK "上级权限ID"
        varchar path "菜单路径"
        varchar component "组件路径"
        varchar icon "图标"
        int sort "排序"
        tinyint status "状态"
        tinyint del_flag "删除标记"
        datetime create_time "创建时间"
        datetime update_time "更新时间"
    }

    sys_user_role {
        bigint id PK "关联ID"
        bigint user_id FK "用户ID"
        bigint role_id FK "角色ID"
        datetime create_time "创建时间"
    }

    sys_role_permission {
        bigint id PK "关联ID"
        bigint role_id FK "角色ID"
        bigint perm_id FK "权限ID"
        datetime create_time "创建时间"
    }

    sys_user_login_log {
        bigint log_id PK "日志ID"
        bigint user_id FK "用户ID"
        varchar username "用户名"
        varchar ip_addr "IP地址"
        varchar login_location "登录地点"
        varchar browser "浏览器"
        varchar os "操作系统"
        datetime login_time "登录时间"
        tinyint login_status "登录状态"
        varchar error_msg "错误信息"
    }

谢谢关注收藏

刚刷到的朋友注意啦! 点击【关注】锁定宝藏库,从此升职加薪不迷路 ✨



轻量云主机限时优惠

RackNerd

☁ 主机显示特惠:只要80元(3TB流量,1vcpu,50GB硬盘),且多区域IDC机房。 购买地址https://my.racknerd.com/aff.php?aff=14942

CloudCone

CloudCone 特惠轻量云主机购买地址https://app.cloudcone.com/?ref=12332


📢 腾讯云资源限时福利

有云服务器、CDN、对象存储、网络防护等需求的朋友,欢迎联系下方腾讯云官方销售 👇 ✔️ 内部专属折扣,价格更优:

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区