第一步:在 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,就全部双引号都去掉了。 |
|