第一步:在 Visio 中画好数据库设计的 E-R 图
首先要面临的问题便是,采用何种作图类型?
答案是框图,要注意,是“框图”而不是“基本框图”!
基本原则如下:
①表的表示图形:框图 --> 方块 --> 框
②表字段的表示图形:框图 --> 方块 --> 圆形(调整大小呈1个椭圆比较漂亮)
③表与表之间关系的表示图形:框图 --> 方块 --> 菱形
④连接表与组成字段的表示图形:工具栏 --> 绘图工具 --> 线条工具(Ctrl + 6)
⑤连接框与菱形的标识图形:工具栏 --> 绘图工具 --> 线条工具(Ctrl + 6)
⑥新建实体(框)时,内部文字的大小会变回原来的8pt,这是个很烦的问题,最佳实践是按住Ctrl直接拖拽复制
7.总之Visio的使用不是几句话就能说完的,还有待自己进一步摸索
接下来贴出我用Visio制作完毕的博客数据库设计E-R图(没有仔细的考虑逻辑,估计有不合适的地方)
第二步:在 PowerDesigner 中根据 Visio 中制作出来的E-R图构建 “概念对数据模型”
有几个注意的地方,以下我会11罗列:
①两张表中不能同时存在“文章ID”的问题:菜单栏 --> Tools --> Model Options -->Model Settings
--> Data Item --> 取消勾选 “Unique code”
②如果你足够细心,应该会发现概念数据模型和物理数据模型对应的菜单项是不同的,
比如说只有在概念数据模型视图中才能找到 “Unique code” 复选框,只有在物理数据模型视图中找到Database菜单项
③还有就是在“概念数据模型”中,不需要显式的在字段中加入外键字段(概念数据模型中不用去关心主外键),到时候由概念数据模型
生成物理数据模型的时候,会自动将所有依赖的“外键id”字段加入到表中来,具体情况接下来会讲述~
④在构造表与表之间的关系时,从一个表拉到另一个表,默认是“从1到多”的!
不过可以双击进行细致编辑,包括1对多,1对1什么的关系,还可以标明注解,使别人看起来一目了然
接下来把建立好的“概念数据模型”视图贴上来
接下来就是用概念数据模型生成物理数据模型(由抽象的概念具体化到一种特定的数据库类型,如Oracle,Mysql等)
菜单栏 --> Tools --> Generate Physical Data Model
下面来看一看生成的原始的“物理数据模型”:
生成的物理数据模型是不能够直接用来生成数据库或者.sql文件的,要进行一些加工处理(完善主键增长机制,重新编辑表结构)
对于Oracle的物理数据模型,主键可以用添加sequence的方式来维护,
对于Mysql的物理数据模型,主键可以用勾选“identity复选框”的方式来维护...
至于为什么要重新编辑数据库表结构,看看上面的图就行了,评论有必要保留大类ID、小类ID、文章_会员ID么?
除了评论ID作为评论表的主键外,还有必要保留第2个其他的主键么??
都没有!那么,尽情的删除和修改吧!不过要小心不要改错了,^ ^!
还有“字段是否允许为空”什么的,也要在这个时候编辑好~
有几个非常非常需要注意的地方,表字段的code名千万不能和Oracle数据库的保留字同名
不然后面生成的sql文件时没办法用的,会出现很多bug~
那么,到底有哪些关键字呢?
Oracle中的保留字可以参见select * from v$reserved_words;数据字典表中所见.
还有诸如最经常的,date,comment,userid什么的
这次针对Oracle生成的sql脚本不能用就是因为comment我用做表名,date我用做列名了~
其实重名与否也很好观察,打开sql脚本看双引号就行了,如果重名的话pd会自动给该字段加上双引号~
不过双引号虽然是加了,却是没办法正常使用的!
这次针对Oracle生成的sql脚本不能直接拿来用的第二个原因是pd在创建package的语句后面将 / 给丢掉了
不过也怪我对 Oracle PL/SQL 块的掌握不熟练,竟然没有第一时间找出原因来~
下面来看看经我修改过的物理数据模型,完成了修改,一切都显得那么和谐!
PowerDesigner还有个生成脚本中包含双引号的问题需要被解决,解决方法如下:
打开Database -> Edit Current DBMS ,出现一个编辑界面,在右边的框里,找到script分节点,再依次找到sql -> format 节点,下面有一个这样的名称的属性:CaseSensitivityUsingQuote,把这个属性的值设为“NO”,再看生成的script,就全部双引号都去掉了。