前言

不知道大家是不是和我一样,为了追求速度,开发时一般都是直接建表就干,哪管什么E-R图。直到xxx项目找上你,某某客户要E-R图,提供一下吧。这时候就很烦,从头绘制E-R图成本真的很高,今天我就遇到了这个糟心事。

那有什么办法快速从我们的DDL建表语句直接反向生成我们的E-R图呢?如何做到即便新版本表结构发生变化,也能够在原来的基础上做简单增量修改即可满足呢?本文就介绍一种基于draw.io绘制E-R图的办法,真的很好用。

安装draw.io

draw.io是用于构建图表应用程序的开源技术堆栈,也是世界上最广泛使用的基于浏览器的最终用户图表软件。

  1. 方式一:无需安装,在线使用

在线地址:https://app.diagrams.net

  1. 方式二,安装桌面版,离线使用

下载地址:https://github.com/jgraph/drawio-desktop/releases

  1. 方式三,VSC插件

Visual Studio Code里面左侧菜单扩展项搜索关键词draw.io即可

我这边使用本地的离线客户端方式进行演示。

创建E-R图

E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。

  1. 新建,选择E-R图

  1. 导入DDL建表语句

在创建语句的基础上做一些修剪替换,其中关键的要点如下:

  • 将主键挪到第一个,其他外键可以紧随在主键后面。
  • 主键后面追加PRIMARY KEY关键字,以便后续自动生成样式
  • 追加;以表示结束位置
  • 留下所有的NOT NULL标记,移除不必要的内容
  • 仅保留字段名、字段类型、是否支持为空、注释信息

点击插入以后,得到下面的图:

  1. 建立表的关联关系

我们跟进实际的表结构关系建立两个表之间的关系,如下图所示:

你还可以随意修改图表的样式:

这样一个简单的E-R图就画好了,是不是很简单呢。

保存为可编辑位图文件

这里有个很关键的一个步骤,我们要保存我们的E-R图,切记一定要保存成可编辑位图文件(.png) 的格式,如下图所示:

为什么要保存成这个格式呢?

这样我们保存好的E-R图发给其他人或者黏贴到文档后,如果需要修改,重新保存或者下载下来,再次用draw.io打开,又能够继续编辑了,就很方便做到可复用、可更新。简单来说,你保存下来的不简简单单是一张png图片,而是可以再次被draw.io编辑的图片。

总结

draw.io真的是一个非常好用的图形绘制软件,不仅仅是E-R图,绘制其他的架构图、流程图都十分专业且方便,值得推荐一波。不知道大家有没有其他绘制E-R图更好的方式,可以分享一下。

欢迎关注个人公众号【JAVA旭阳】交流学习

很强,我终于找到绘制E-R图的正确姿势的更多相关文章

  1. Java:终于找到了在alloy中的JFileChooser中的弹出式菜单不显示文字的解决办法

    alloy界面可以说是我写过的最漂亮的一种JAVA界面. 可惜不知为什么,至从几年前推出1.4版后,就再也没有更新了. 随着java版本的升级,一直很担心alloy有一天不再适用于java的最新版. ...

  2. C#实现如何判断一个数组中是否有重复的元素 返回一个数组升序排列后的位置信息--C#程序举例 求生欲很强的数据库 别跟我谈EF抵抗并发,敢问你到底会不会用EntityFramework

    C#实现如何判断一个数组中是否有重复的元素   如何判断一个数组中是否有重复的元素 实现判断数组中是否包含有重复的元素方法 这里用C#代码给出实例 方法一:可以新建一个hashtable利用hasht ...

  3. 为什么你有10年经验,但成不了专家?(重复性刻意训练+反馈修正,练习的精髓是要持续地做自己做不好的,太精彩了)真正的高手都有很强的自学能力,老师和教练的最重要作用是提供即时的反馈(莫非我从小到大学习不好的原因在这里?没有单独刻意训练?) good

    也许简单看书就是没有刻意训练.更没有反馈,所以没有效果 我倒是想起自己,研究VCL源码的时候,都是自己给自己提问,然后苦思冥想.自己解决问题,然后Windows编程水平果然上了一个台阶.对什么叫做“框 ...

  4. springMVC:通配符的匹配很全面, 但无法找到元素 'mvc:annotation-driven' 的声明

    转自:http://blog.csdn.net/tolcf/article/details/50845483 报错信息:通配符的匹配很全面, 但无法找到元素 'mvc:annotation-drive ...

  5. nested exception is org.xml.sax.SAXParseException; lineNumber: 8; columnNumber: 56; cvc-complex-type.2.4.c通配符的匹配很全面, 但无法找到元素 'dubbo:application' 的声明

    严重: Exception sending context initialized event to listener instance of class org.springframework.we ...

  6. (6)妈的终于找到能用的nehe sdk了

    在网上下载了有十多个,终于找到一个能用的了 下面是下载地址: http://download.csdn.net/detail/jason_bourn/681620#comment 泪奔啊~

  7. 对Delphi控件作用的新理解(控件本身的源代码就是一个很强的工业级源码)

    最近几天,对Delphi控件的含义有了一个新的理解.其实它不仅仅是给程序员提供功能的一个表层调用,控件本身的源代码就是一个很强的工业级源码.而且它的Main例子,往往就已经是半成品.而别的语言里没有那 ...

  8. 通配符的匹配很全面, 但无法找到元素 'cache:advice' 的声明

    EB-INF\classes\spring-jdbc.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineN ...

  9. 你好,C++(31)我终于找到对象啦!6.1 从结构化设计到面向对象程序设计

    第6章 当C++爱上面向对象 很多第一次进入C++世界的人都会问:C++中的那两个加号到底是什么意思啊? C++是由C语言发展而来的,它比C语言多出的两个加号,实际上是C语言的自增操作符,表示C++语 ...

  10. idea调试SpringMvc, 出现:”通配符的匹配很全面, 但无法找到元素 'mvc:annotation-driven' 的声明“错误的解决方法

    调试json格式输出,出现以下错误: HTTP Status 500 - Servlet.init() for servlet HelloDispatcher threw exception   ty ...

随机推荐

  1. python菜鸟学习: 6. 字典常用方法

    # -*- coding: utf-8 -*-dict1 = {"name": "liyuzhoupan", "age": "22 ...

  2. bgp多线互联

    BGP(边界网关协议)主要用于互联网AS(自治系统)之间的互联,BGP的最主要功能在于控制路由的传播和选择最好的路由. 中国网通 .中国电信.中国铁通.教育网和一些大的民营IDC运营商都具有AS号,全 ...

  3. bzoj 2594

    很好的一道LCT题目 首先我们可以发现,题目要求的就是最小生成树上的一条树链的最长边的长度,因此我们实际只需动态维护最小生成树即可 然后我们考虑怎么动态维护最小生成树 不难发现,如果涉及在最小生成树上 ...

  4. shell相关基础面试题

    用sed修改test.txt的23行test为tset: sed –i '23s/test/tset/g' test.txt 查看/web.log第25行第三列的内容. sed –n '25p' /w ...

  5. iOS学习十二之选择器控件UIPickerView

    UIPickerView是一个简易的列表控件,用于提供有限个数的选项供用户选择. 它是通过代理和数据源的方法对其进行设置和数据源填充的,这种控件的设计模式也是代理模式的应用之一. 添加下面的代码即可实 ...

  6. lvs模式配置

    lvs模式配置 lvs简介 LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中.该项目在Linu ...

  7. Hive 操作与应用 词频统计

    一.hive用本地文件进行词频统计 1.准备本地txt文件 2.启动hadoop,启动hive 3.创建数据库,创建文本表 4.映射本地文件的数据到文本表中 5.hql语句进行词频统计交将结果保存到结 ...

  8. java15配置环境后java_version无反应(不显示“不是内部或外部命令”)

    重新装了jdk15来使用eclipse 配置完环境变量之后打开cmd输入 java -version 好家伙,居然一点反映都没有, 然后傻乎乎的跑回去重新配置JAVA_HOME和path 还是没用,细 ...

  9. maven本地仓库有相应的依赖,依旧会从远程仓库拉取问题的原因及解决

    请打开你自己的本地仓库,对应依赖路径下的_remote.repositories文件.如果是从远程仓库拉取的,这里一般是显示这个: junit-4.12.jar>alimaven= junit- ...

  10. C 系列的暂停

    由于Mooc上有关C 的课程并不是很全面,网络上有关于C 的消息过于杂糅,所以暂时停止C的学习,重启时间暂定,等什么时候需要的时候再做重启.