表结构设计器EZDML快速上手

 

2009.11 表结构设计器EZDML1.5新版本发布,比以前改进了很多,因此重新写了个介绍。

2015.10 已经更新到2.06版本,决定再次整理重写此文档。

2019.10 已经2.32版了,再把文档改改吧。

 

 

 

目录                                                                                                                     

1.    下载安装... 1

2.    启动... 2

3.    新建表... 4

4.    外键... 5

5.    修改表和字段属性... 8

6.    视图切换... 9

7.    导出图片  13

8.    导出EXCEL... 13

9.    描述字编辑... 15

10.      生成代码... 18

11.      导入现有表... 21

12.      生成数据库... 25

13.      执行脚本... 29

 

 

这是一个数据库建表的小软件,可快速的进行数据库表结构设计,建立数据模型。类似大家常用的数据库建模工具如PowerDesignerERWINER-StudioRational-Rose等的超级精简版。

 

1. 下载安装

这一点没什么可说的,就是下载并运行安装程序,按照向导一步步走完。

官方下载地址:http://www.ezdml.com/

 

由于没有给微软充值,WIN10下可能提示风险,请点“更多信息”,然后选择“仍要运行”。

 

安装位置建议选择在非系统盘的根目录下,如D:\EZDML,避免文件被系统保护无法写入。

 

EZDML可以用安装程序安装,但其实它只需要一个exe就可以运行,想要中文的加个ezdml.CHS文件,想要连mysql的加个libmysql.dll,想要连sqlite的加个sqlite3.dll,想要连PostgreSQL的加intl.dlllibpq.dll。连ORACLE稍麻烦点,你得装个oracle客户端,或至少有个instant client,注意必须得是32位的。

 

 

2. 启动

启动程序,中文系统中会看到以下界面:

点“确定”打开示例:

英文系统或缺少ezdml.CHS文件时会显示英文界面:

本人母语是中文,所以后面说明都是以中文为主。

 

3. 新建表

新建文件,再新建一个表,系统弹出新建界面:

 

直接点“确定”,可以看到新建表的结果:

同一个文件中可以有多个模型,模型图中可以进行平移、缩小、放大、选择对象、拖动等操作。模型图中可以用键盘辅助操作,按加减号放大缩小,方向键平移,R复原,F居中。

左边树形列表中,可选择多个表或字段进行复制、粘贴;直接拖动可以进行排序;在左上方的“过滤条件”中输入内容可查找并列出符合条件的对象。

 

 

4. 外键

再建一个表,在字段列表中右键添加全部系统字段:

效果如下:

接着,在模型图上选中“数据表1”,再点工具栏上的“连接”:

然后再点击“数据表2”,系统弹出连接界面:

设置从表的关联字段为“Rid”,然后点“确定”,即可建立外键关系:

 

5. 修改表和字段属性

在模型图上双击“数据表1”,弹出该表的属性编辑界面,可以添加删除字段,或进行拖动排序等操作,可直接修改表名、逻辑名、注释和字段的物理名、逻辑名、类型、约束:

也可以双击一个字段,弹出字段属性界面来修改字段:

至此,我们可保存一下文件以防数据丢失。

顺便说明一下,系统退出时也自动所有数据保存到临时文件目录下,启动时会自动读取并恢复。

 

6. 视图切换

上述模型图中,默认显示的是物理逻辑名称视图,可执行“模型|切换物理/逻辑视图”菜单命令或点工具栏按钮切换视图:

物理视图:

逻辑视图:

默认显示表对象的字段类型是按标准SQL定义,表对象的背景色是浅蓝,可执行“模型|模型选项”进行修改:

 

之前物理视图的字段类型默认是标准SQL的类型(如字符串是VARCHAR),如果在模型图选项里修改为ORACLE,则自动显示为ORACLE的类型(字符串是VARCHAR2):

 

7. 导出图片

在模型图上选中一个或多个对象(不选则为全部),右键“复制图像”,即可将选中的图形复制到剪贴板,可直接到画笔、WORD等地方粘贴(默认输出格式为位图,如果需要WMF矢量图可按住SHIFT键复制图像)。

 

8. 导出EXCEL

在模型图上选中一个或多个对象(不选则为全部),右键“导出”,系统提示指定文件路径和类型:

选择EXCEL,指定文件路径和名称后,点“保存”,系统提示:

点“确定”,则自动打开Excel

 

9. 描述字编辑

描述字编辑功能是本软件的一大特色,即可以用直接用键盘输入快速完成建表。之所以有这个功能,是我觉得建一个表不需要用鼠标点那么多下中间还键盘输入那么麻烦,直接文本编辑是最快的。有了这个功能后方便多了,基本上我建表时也再不去用那个常规界面了。而且用这个来复制粘贴表结构也很方便。

示范如下:

点新建表,并切到“描述”页:

表的描述字中,可以输入简写字母代替数据类型,S,I,F,D,BO,E,BL,O分别代表文本,整数,浮点数,时间,真假,枚举,文件,对象。

输入以下内容,删除或覆盖掉原有文字:

测试订购表

----------

ID 编号 PK

RID FK

名称 S(200) //订购的商品名称

数量 I

单价 F(10,2)

日期 D

注释

焦点离开输入框时,系统会自动识别并重新生成描述字:

点“确定”,效果如下:

双击打开属性,结果如下:

 

10.          生成代码

在表的属性窗口中,切换到“生成”页,可生成多种代码,包括:

■标准SQL

ORACLE

MYSQL

SQLSERVER

POSTGRESQL

前面几个数据库SQL是固定生成的,后面的代码是脚本生成(可以自行修改脚本):

C++

JAVA

 

11.          导入现有表

即常说的逆向工程了。这里以Microsoft Access附带的“罗斯文商贸”数据库为例(这玩意应该是以前的Access自带的,现在已经找不到了,装了个OFFICE2000才弄到):

首先新建一个文件,执行“模型|导入数据库”菜单命令,系统显示导入界面并提示连接数据库:

选择ODBC并连接到MS Access MDB文件:

 

系统列出已有表:

其中“自动大小写”的意思是自动对表名和字段名进行首字母大小处理(如USERINFO会处理为UserInfo,系统根据字典文件dict.txt进行处理,如果对处理结果不满意,可修改字典文件增加你需要的词语);“注释转为逻辑名”意思是把表或字段的注释作为逻辑名称导入。

有些系统表(MSys开头的)无法导入,要取消勾选,不然会报错:

最终导入结果如下:

如果对布局不满,可以试试多点几次“重新排列”:

在连接了数据库的情况下,双击表查看属性,可以在“数据”页中直接查看数据:

 

12.          生成数据库

为了说明生成功能,我们先找第一个表修改一下,增加文本字段“销售情况”,并把“产品销售额”由“浮点(19)”改为“浮点(10,2)”:

执行“模型|生成数据库”菜单命令,系统显示生成数据库界面:

先不连接数据库时,直接点击“生成SQL”,生成的是创建表的标准SQL

连接数据库,再生成一次,这时生成的SQL只是发生变化的表和字段:

其中“产品销售额”由“浮点(19)”变为“浮点(10,2)”。

由于值域变小了,必须重新生成字段。为了防止数据丢失,系统生成的SQL是先把它改名,然后创建新字段,并把数据从旧的字段UPDATE到新字段中,最后删除原有字段的SQL(为防止数据丢失,删除字段的SQL默认以注释的形式生成,可手工修改将注释符去掉)——新版默认直接修改表了,需要改配置才能生成备份字段

而销售情况是新字段,就直接生成了创建字段的SQL

可直接修改SQL的内容,点击“执行”可以执行相应SQL生成数据库,也可以把SQL复制到管理工具的SQL窗口中执行。

 

13.          执行脚本

最后演示下脚本。一般来说大家不需要深入地使用脚本,但了解一点点遍历表和字段的脚本会非常有用。

EZDML支持javascriptpascal脚本。这里以javascript为例。

还是刚才那个罗斯文商贸的模型,假设我要在每个表名的前面加前缀“RS_”,操作如下:

1)        执行菜单命令“模型|执行脚本”(在模型图上右键菜单里也有)

2)        弹出的脚本窗口里应该是javascript示例脚本,如果不是,请连点几次新建New命令

3)        清空原有脚本,输入以下内容:

 

for(var i=0; i<curModel.tables.count; i++)

{

  var tb=curModel.tables.getItem(i);

  tb.name = 'RS_'+tb.name;

}

 

4)        F9执行:

 

当然了,如果要稳妥起见,最好能加个判断,避免多次执行时重复添加:

 

for(var i=0; i<curModel.tables.count; i++)

{

  var tb=curModel.tables.getItem(i);

  if ( tb.name.indexOf('RS_') !=0 ) //增加判断避免重复添加
    tb.name = 'RS_'+tb.name;

}

 

 

 

5)        关闭脚本窗口,回到模型图,按F5刷新:

6)        不好,表名是改了,但外键连接全不见了;别慌,这是因为字段的外键关联的表名没改,我们再写个脚本补救一下

7)        再次打开脚本窗口,将脚本修改如下:

 
for(var i=0; i<curModel.tables.count; i++)  //遍历表
{
  var tb=curModel.tables.getItem(i);
  for(var j=0; j<tb.metaFields.count; j++) //遍历字段
  {
    var f=tb.metaFields.getItem(j);
    if(f.relateTable)
      f.relateTable = 'RS_' + f.relateTable;
  }
}

 

8)        F9执行一次,然后关闭脚本窗口,回到模型图,按F5刷新,外键又回来了:

关于脚本的更多内容,可参考另一个文档《EZDML脚本快速上手》。

 

OK,恭喜你基本上已经跑完一个流程了。