关于使用Draw.io画数据库E-R图的说明
背景简介
E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。
diagrams.net是用于构建图表应用程序的开源技术堆栈,也是世界上最广泛使用的基于浏览器的最终用户图表软件。
安装Draw.io
方式一,无需安装,在线使用
方式二,安装桌面版,离线使用
Drawio-Desktop v13.6.2 Download
备用:
方式三,VSC插件
在Visual Studio Code里面左侧菜单扩展项搜索关键词draw.io即可
目前来说,这个还在非官方发布模式,建议先用Insider版。

如果你不满意当前主题,可以在VSC的设置-扩展-Draw.io Integration-Theme中选择。

新建E-R图
打开Draw.io,在对话框中选择创建新绘图

选择创建E-R图


提取SQL导入
连接你的Mysql、MsSql、Sqlite等数据,针对你需要加入E-R图的表提取Create创建语句。
CREATE TABLE `DatabaseName` (
`Id` bigint(20) NOT NULL,
`VersionNo` bigint(20) NOT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
在创建语句的基础上做一些修剪替换,其中关键的要点如下:
- 将主键挪到第一个,其他外键可以紧随在主键后面。
- 主键后面追加
PRIMARY KEY关键字,以便后续自动生成样式 - 追加
;以表示结束位置 - 留下所有的
NOT NULL标记,移除不必要的内容 - 仅保留字段名、字段类型、是否支持为空、注释信息
最终我们将得到一个规范后的格式,举例如下:
CREATE TABLE DatabaseName '数据表名'
(
Id bigint(20) NOT NULL PRIMARY KEY
VersionNo bigint(20) '版本号'
.....
);
在Draw.io中部菜单找到+号菜单,找到高级中的从SQL导入。

粘贴上一步得到的最终SQL语句到输入框中,可以同时填入多个表,只要有;号间隔结尾就行。


最终我们将看到几个带PK主键标记的图。
如果你没看到上图的PK样式,一定是因为主键你没追加
PRIMARY KEY标记
我们可以给他们全选设置字体、颜色等等。
同时,针对其中关联的外键,我们需要添加FK标记,并且将整行设置为斜线样式。
如下图所示,斜线行代表外键。

接下来,我们可以把有关系的外键和主键连接起来,并且可以设置两端的箭头样式。

完成这些,我们就基本上可以开始构建完整的全套E-R图了。
导出SVG
左上角-文件-导出为-SVG

建议设置一定的边框宽度,比如100,以便可以留下一些距离。

附录
关于使用Draw.io画数据库E-R图的说明的更多相关文章
- 教务管理系统数据库E/R图
- Umlet和draw.io 使用心得
文章目录 软件使用心得 1. Umlet 画图软件 1.1 前言 1.2 优点 1.3使用小trick 1.3.1 灵活改变箭头形式 1.3.2 整体复制 1.3.3 快速复制 2. draw.io ...
- 流程图软件draw.io
工作中经常需要梳理一些流程图,时序图.以前用微软Visio绘制流程图(当然不是正版Visio).后来为了响应国家号召,改用processon(proceson.com)进行绘制流程图.Processo ...
- 使用draw.io桌面版代替visio制作流程图
前言 draw.io是一款在github上的开源产品,由于需要构建在线文档,需要插入画图类型, 对比多款开源产品,最终选择了draw.io. draw.io图标资源非常的丰富,方便导入图标资源,基本上 ...
- achartengine画出动态折线图
achartengine画出动态折线图的效果最近有个项目需要用到实时曲线图,我也上网搜索了一下,最后还是选择使用achartengine这个现成的东西,毕竟自己再canvas一下实在是太麻烦,而且项目 ...
- 使用mermain用Markdown的语法画流程图和UML图
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:使用mermain用Markdown的语法画流程图和UML图.
- 在EA中将画出的ER图转换成SQL脚本
在进行数据库设计的时候,想着正好安装着EA软件呢,看能不能用EA画ER模型.结果发现不仅能画.并且还能进行整套数据库设计(生成SQL脚本). 以下以机房收费系统用户--学生为例.学生能够查看剩余金额. ...
- 为了拿捏 Redis 数据结构,我画了 40 张图(完整版)
大家好,我是小林. Redis 为什么那么快? 除了它是内存数据库,使得所有的操作都在内存上进行之外,还有一个重要因素,它实现的数据结构,使得我们对数据进行增删查改操作时,Redis 能高效的处理. ...
- Chartist.js-同时画柱状图和折线图
最近几天都在研究chartist,因为echarts生成的图是位图,导成PDF的时候不够清晰.而chartist是搜到的免费插件中呼声较高的,基于SVG. 今天主要是想举一些代码例子给大家,介绍下如何 ...
随机推荐
- Let's go!
第一次开通博客 心情还是很激动的,而且做出了这么好看的页面虽然都是用的别人的组件,自己不是很知道原理但是也很开心,以后会将自己学习的东西写成笔记发在上面
- Redis 快速集群环境搭建
环境 Linux :centos 7 redis:redis-5.0.9 Redis 集群环境搭建步骤 早期 redis 版本集群环境搭建需要安装 ruby 运行环境,搭建步骤比较繁琐: redis ...
- 8.2-3 partprobe、tune2fs
8.2 partprobe:更新内核的硬盘分区表信息 partprobe命令用于在硬盘分区发生改变时,更新Linux内核中的硬盘分区表数据.有时在使用fdisk.part命令对硬盘进行分区 ...
- 阿里云轻量服务器价格及轻量与ECS服务器区别比较
https://yq.aliyun.com/articles/221647 摘要: 阿里云轻量应用服务器价格表及介绍,关于轻量应用服务器和ECS服务器的性能对比 阿里云轻量应用服务器是阿里云新推出的服 ...
- Jquery 常用方法及实例(Day_15)
想要做一件事,永远都不要怕晚.只要你开始做了,就不晚. 而若是你不开始,仅仅停留在思考.犹豫甚至焦虑的状态,那就永远都是零. mouseover() / mouserout() 当鼠标进入 / 离开某 ...
- C语言编程 菜鸟练习100题(01-10)
[练习1]输出 "Hello, World!" 0. 题目: 输出 "Hello, World!" 1. 分析: 使用 printf() 输出 "He ...
- Spring AOP开发时如何得到某个方法内调用的方法的代理对象?
Spring AOP开发时如何得到某个方法内调用的方法的代理对象? 问题阅读起来拗口,看代码 在方法中调用其他方法很常见,也经常使用,如果在一个方法内部调用其他方法,比如 public class U ...
- Nextcloud 使用教程
一.简介 Nextcloud是一个网盘式文件管理系统,多用户权限管理,多客户端,使用简单.可在浏览器中运行,也可下客户端,不论使用哪种方式运行,使用教程都是一样的. 只是在客户端中运行时能及时收到相应 ...
- NBU Rman异机恢复Oracle
前段时间一个亿级分区表,被分割成历史表和业务表,历史表中保留15天以外的数据,每天都会从业务表中的15天外的数据copy到历史表,并删除业务表15天外的数据,逻辑也很简单,但插入历史表的where 条 ...
- Django(50)drf异常模块源码分析
异常模块源码入口 APIView类中dispatch方法中的:response = self.handle_exception(exc) 源码分析 我们点击handle_exception跳转,查看该 ...