EZDML 数据建模

超轻量级的免费数据建模工具

0%

EZDML特色功能

上一篇说了常规功能(参见《EZDML常规功能》),这篇接着说特色功能。

特色功能就是我有别人没有的,或者一开始只较少人有(嗯,功能好用的话,迟早会被别人抄过去的,我也经常抄人家的)。下面开始表演。

物理+逻辑视图

就是同时显示物理名称和逻辑名称。

记得以前用其它建模工具时,我就很希望有这么个功能,因为我英文不好,非常需要同时看到中文。十几年前的建模工具几乎都是英文版,老外是不需要这功能的(因为他们英文好啊)。然后自己来写EZDML了,差不多就第一时间把这个功能加上了。

物理+逻辑视图

中英文直接对照,感觉好多了。

缩略图

按下F8切换到缩略图,表太多看不过来的时候,缩略图能让你神清气爽。

缩略图

缩略图2

描述字建表

强烈推荐使用。新建表时,在描述字上输入以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
TestTb 测试表
//这是个测试表
--------
ID PKInc
RID FK //关联到XX表
订单号 I(20)
标题 S(200)
数量 I
单价 F(10,2)
日期 D
Desc 描述
TpNa 类名 String:NCLOB
图标 BL
富文本 S(99999)
是否激活 BO
注释

输入描述字
就可以得到一个表对象:

描述字建表
测试表

修改表时也可以在描述字上做操作,如批量删除、批量移动、批量改注释。不过描述字不适合改字段名,因为EZDML需要按名称匹配字段,改字段名还是到表格那边去处理。

关于EZDML的字段类型可参考这里

自动生成关系图

这个是新鲜出炉的功能。很久以来我都有想如何在EZDML里展现一个表的引用关系,因为关联关系是数据建模中极其重要的一环,后来终于想到,可以在表属性里加一个小关系图,把跟这个表相关的所有对象放一起做个小模型图:

关系图

这个模型图以当前表为核心呈星形展开,仍然是能做各种操作的,拖动、平移、缩放、选择、复制、导出等。比如模型图默认是缩略图,按F8或点工具栏按钮可切换成全图:

切换关系图

双击模型图的对象,可以弹出其属性:

子关系图

然后里面的关系图可以继续双击查看。嗯,你可以一直这样玩下去。

查看表数据

查看表属性时,可同时查看表数据,以便维护比对和加深对数据设计的理解。

表数据页默认是隐藏了,需要右键打开或在设置中开启。比如area这个表:

表属性

切到“数据”页,可快速预览前25行(前提是已经连上数据库):

表数据

从v3.36版起,查询数据时,可以查询当前记录对应的关联表数据,EZDML会根据关联关系自动生成过滤条件:

点击后会打开一个新窗口,可以看到过滤条件已经拼好了:

然后重点来了,这个窗口里仍然可以右键查询关联记录:

理论上就可以一直玩下去了。

界面原型

EZDML能快速生成列表和表单界面的原型,供开发设计参考。

界面页默认也是隐藏了,需要右键打开或在设置中开启。比如还是area这个表,切到PC电脑界面是这样的:

电脑界面

这个是平板界面:

平板界面

手机版:

手机界面

双击可转到查看表单:

查看表单

点修改进入编辑表单:

编辑表单

界面配置面板中提供了常用的界面属性设置,可多选并进行批量设置:

界面属性

一些界面控件的展示:

界面控件

数据生成

提供大量常用的示例数据生成功能:

数据生成类型

方便演示和测试:

数据生成规则

可设置或添加自己的测试数据集。

文件比对

在生成数据库时,如果不连接真实的数据库,可以在下拉菜单中选择一种数据库类型:

选择批量SQL生成类型

这时生成的是创建数据库的脚本:

批量生成建表SQL

如果我们选择最后一项EZDMLFILE:

选择EZDML文件

则会提示用户选择打开一个EZDML模型文件进行对比:

打开EZDML对比模型

这时再生成SQL,就是两个模型文件对比生成的结果了:

模型文件对比结果

导入pdm

PowerDesigner是数据建模的老大哥了,我相信PD的老用户没什么意外的话一般是不会转用EZDML的。不过可能存在EZDML用户接手PD项目的情况,从数据库逆向导入总是差点意思,因此EZDML还是提供了导入pdm的功能。

导入PDM文件

需要注意的是,EZDML不像PD一样提供多级分类,因此所有模型图导入后都会放在根目录:

导入PDM结果

大小写转换

可选择一个或多个表进行大小写、汉字转拼音、驼峰与下划线命名转换等处理:

大小写转换

比如这是驼峰转下划线的:

驼峰转下划线

全部转大写的:

全部转大写

自定义词典

如果表是从数据库导进来的,可能是全大写或全小写的:

全大写

这时执行自动大小写,会尝试识别其中的英文单词并转为驼峰命名:

自动大小写

不过,我们发现IsDefault没识别出来,这是因为EZDML自带的词典中没有is和default这两个词。

解决办法是在设置中添加自定义的词条,这里我们只需要把长的词加上:

自定义词典

再次执行自动大小写就可以顺利识别了:

再次识别

自动布线

拖动关联表对象时,自动寻找合适的布线位置,布线时会尽量绕开表对象:

自动布线

脚本引擎

EZDML是可简单可复杂。从这里开始的内容就有点复杂,有一些功能可以说是给我自己玩儿的。如果你不是程序员,只是简单地用来建模,可以不必往下看,或稍为了解下就行,不需要太深入。

EZDML支持JavaScript和PascalScript脚本引擎。

脚本是EZDML的一大特色。当然现在来看可能很多类似工具都有脚本了,甚至有些APP都用javascript开发了;但当年没那么流行的时候,我把脚本引擎加到EZDML里时还是小有激动的,感觉程序进入了另一个世界。

脚本引擎对非程序员不太友好,你也可以不用。但当你管理几十上百个表时,你多半会需要脚本的,比如你想要做以下事情时:

  • 修改所有表名的前缀
  • 给所有CT_开头的表添加UpdateTime时间字段
  • 删除所有名称中包含XX的字段
  • 把所有CreateDate字段的默认值修改为now
  • 为所有CreatorId字段添加索引和备注
  • 检查所有CreatorId是否跟用户信息有存在外键关联关系

所有这些,只要写上一点点脚本,遍历一下,稍为判断一下再读写一下,就能解决了。

脚本

如果你是程序员,你可能会想用EZDML来生成一些代码,那就可以用上脚本模板了:

脚本模板

这是上述代码生成的结果:

生成VUE

导出EXCEL和WORD文档

先在模型图上选择要导出的对象(不选则默认全部),然后执行主菜单“模型|导出”,可选择导出各种类型:

导出类型

要注意一点是,导出EXCEL时,字段类型是跟模型图视图有关的,模型图上显示逻辑类型时导出EXCEL字段是逻辑类型(如String);模型图显示物理类型时,导出EXCEL的是物理类型(如varchar)。

导出文档的功能大家都有,不过EZDML的特点是导出文档基本上都是用脚本完成的,如有需要可自行修改Templates目录下的各种导出脚本模板。

导出文档

如果只是需要图像,可以在模型图上右键菜单“复制图像”然后再到需要的地方粘贴,比如下面这图就是复制粘贴的:

复制图像

生成接口文档

上面操作导出时,如果选择Markdown,则会生成Markdown类型的接口文档,大概预览结果如下图:

Markdown预览

接口说明:

Markdown接口

JSON格式结果:

Markdown接口中的JSON结果

生成代码

表属性切到生成页时,可生成各种代码模板。

生成页默认是隐藏的,需要右键打开或在设置中开启。这个是生成Markdown的:

生成Markdown

生成Vue列表的:

生成VUE

生成Springboot JPA实体类的:

生成JPA实体

生成erupt实体类的:

生成Erupt实体

都是脚本模板生成的,可以修改脚本,生成后拷出来用。

批量生成代码

上面说的是单个表生成。如果想同时生成多个表的,可执行主菜单“模型|生成代码”:

批量生成代码

这里模板可以是一个脚本模板文件(需要在Templates/_dml_config.INI中配置),也可以是一个文件夹目录(Templates下的所有子目录都会列出来)。

以上图的layuiAdmin目录为例,这个是layui的一个后台管理模板,执行生成:

生成layuiAdmin

完成后会启动一个小HTTP服务:

启动HTTP服务

并打开浏览器,显示layuiAdmin界面:

济览layuiAdmin结果

这个模板同时生成了layui、百度Amis、VueElement、Markdown的内容,有兴趣的可以自己试试:

layui列表

百度Amis表单

VueElemeAdmin、SpringJpaSwagger和Erupt模板也是生成整个工程的,生成后可以编译运行,详见相关的博客文章,这里不展开了:

Erupt工程

批量生成测试数据Insert语句

EZDML 3.36版起支持生成测试数据的insert语句:

自定义生成sql

EZDML默认会为不同的数据库生成不同的SQL,如果对默认生成的SQL不满意,可以编写脚本接管全局事件,这个功能在主菜单“工具|编辑全局事件脚本”里:

全局事件脚本

这个脚本目前只支持PASCAL。里面几个方法会在生成SQL时触发调用,脚本注释已经明确说明每个方法的作用,需要时也可以一试。

如果只是对字段类型不满意,可以在设置里配置字段类型替换,EZDML会对字段类型进行查找替换:

字段类型名称替换

自定义属性面板

EZDML可以在表和字段属性中嵌入一个用户自定义界面,这个界面其实是一个脚本模板。首先要在设置中开启自定义属性页:

开启自定义属性页

然后就会在属性页中出现自定义界面:

自定义属性界面

这页面其实是一段脚本生成的,通过[SettingsPanel]配置界面,再用脚本把界面的内容写到表或字段的customConfigs属性中:

自定义属性页脚本配置

先写到这,其它以后想到再补。