一个实用技巧,告别手动画图,自动生成数据库 ER 图

背景

我们在做数据库设计的时侯一般需要画ER图方便数据库分析。 有很多ER设计工具,一般都是物理外键关系生成。

但是真实生产环境,我们很少会建立这种真实物理外键关系,仅仅只会在逻辑上生成一个虚拟的外键的关系。

具体原因可以参考阿里巴巴『Java 开发手册

IDEA 针对上边的问题,在IDEA 2019.3.2 新增了虚拟外键的功能,在 ER 图增加生成虚拟外键的功能。

不过如果你的表中外键全名规则不符合规范,IDEA 是不会生成外键的。需要在 Setting|Editor|Code Competion设置。

上面功能比较适合表结构比较规范的表,但是真实场景可能比较复杂,外键命名也不是规范。为了生成这个外键关系,还要配置正则规则,好难啊,靠,放弃!!!!

有没有傻子也会操作的办法呀?

我们发现一个傻子都会的好办法,亲测可用!还是IDEA哟

首先我们需要打开一个 IDEA Database console 窗口,在里面输入连表 sql,然后使用 Alt+Enter 快捷键选择 Store table relation

在工程根目录下会生成如下配置文件

sql 复制代码
select * from comment  
join reply_comment rc  
on  
comment.id = rc.root_reply_comment_id;
xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>  
<data>  
<object-set>  
  
<table path="sparrow.reply_comment">  //select from comment
    <table path="sparrow.reply_comment" //join reply_comment rc
           from="id" to="reply_comment_id"/>  //on comment.id =rc.root_reply_comment_id;
</table>  
</object-set>  
</data>

如果再添加其他虚拟外键,按以上规则生成即可!

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>  
<data>  
<object-set>  
<table path="sparrow.user_behavior">  
<table path="sparrow.user" from="user_id" to="user_id"/>  
</table>  
<table path="sparrow.comment">  
<table path="sparrow.user" from="create_user_id" to="user_id"/>  
</table>  
<table path="sparrow.comment">  
<table path="sparrow.reply_comment" from="id" to="root_reply_comment_id"/>  
</table>  
  
<table path="sparrow.reply_comment">  
<table path="sparrow.reply_comment" from="id" to="reply_comment_id"/>  
</table>  
<table path="sparrow.reply_comment">  
<table path="sparrow.user" from="create_user_id" to="user_id"/>  
</table>  
<table path="sparrow.article">  
<table path="sparrow.tag" from="tags" to="id"/>  
</table>  
</object-set>  
</data>

最后选择Show Diagram 生成ER图

最终结果如图

相关推荐
吃海鲜的骆驼5 分钟前
服务异步通讯与RabbitMQ
java·分布式·后端·rabbitmq
羱滒8 分钟前
sql调优之数据库开发规范
java·数据库·数据库开发
程序员Android11 分钟前
MTK多帧拍照流程分析
数据库
不剪发的Tony老师13 分钟前
Apache Doris:一款高性能的实时数据仓库
数据库·数据仓库
甜可儿24 分钟前
redis序列化设置
数据库·redis
GGBondlctrl29 分钟前
【SpringBoot】论坛项目中如何进行实现发布文章,以及更新对应数据库的数据更新
数据库·springboot项目·三层设计思想·文章发布项目
Forget the Dream37 分钟前
设计模式之责任链模式
java·c++·设计模式·责任链模式
jonyleek40 分钟前
「JVS更新日志」低代码、企业会议、智能BI、智能排产2.26更新说明
java·大数据·低代码·数据分析·软件需求
若云止水42 分钟前
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_init_cycle 函数 - 详解(4)
数据库·nginx·ubuntu
jay丿1 小时前
Django模板系统深入
数据库·django·sqlite