易轩

持续做有意义的事

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
 

我们在使用Power DesignerPD,我这里使用的是PD 12)进行数据库设计时,一般都会先设计更贴近于我们的逻辑思维的概念模型(Conceptual Data Model),然后根据概念模型自动生成物理模型(Physical Data Model),然后再手动对生成的物理模型进行一些必要的调整,此时调整的对象主要是通过“检查模型(Check Model)”检查出来的一些错误和警告信息,然后才生成数据库脚本,到数据库中运行生成真正的数据库。

我们会将概念模型和物理模型均添加到工程中保存起来,当需要对数据库设计修改时,还是针对概念模型进行修改,然后再生成物理模型,此时一般是基于前面生成的物理模型进行更新,这样可以不必对前面手动调整的部分再次调整,PD会将更新的部分以对照表的形式显示出来。

下面是在使用PD设计概念模型时的一些基本的技巧,有些可能是常识,但是我觉得很重要,所以还是罗列了出来:

1、  和一些其他UML设计工具一样,PD支持两种方式新建对象,一种是从浏览器(Browser)直接点右键,选择“新建”,此时只会在Browser创建一个对象(object);另一种是通过工具箱(Palette)向绘图区添加一个对象,此时PDBrowser创建一个对象,同时会在绘图区添加一个符号(symbol)。选中绘图区中的symbol,选择Delete只会删除symbol,对应的object不会删除,选中Browser中的object,选择Delete会同时删除object和所有属于该objectsymbol

2、  数据项(Data Item):表示同一含义的数据可设计为数据项。比如:“起始时间”,然后在需要加入“起始时间”的实体(Entity)中重用(Reuse)或添加(Add)该数据项。这样,只要修改“起始时间”数据项的属性,所有重用了该数据项的实体中的对应数据均会修改。

3、  关系(Relationship):表示1对多的关系时可用关系表示。比如:“产品类型表”和“产品表”,不需要在“产品表”中另外重用或添加“产品类型编码”(产品类型表主键)的数据项,只需要添加一个从“产品类型表”到“产品表”(有方向)的关系,生成的物理模型中会自动添加一个“产品类型编码”的外键字段,且保持和“产品类型表”的主外键关系。

4、  联合(Association):表示两个实体之间的关联时可用联合而非实体来表示。比如:实体“学生表”、“课程表”之间的关联“成绩表”只有3个字段:“学号”(学生表主键)、“课程号”(课程表主键)和“分数”。可以新建一个联合,其中只有一个“分数”字段,然后添加一个Association Link没有方向)将“学生表”和“成绩表”连接,添加一个Association Link将“课程表”和“成绩表”连接。这样生成的物理模型中的“成绩表”会自动包含上面3个字段。

5、  包(Package):当设计的数据库包含的实体较多,且逻辑上可能分布在多个子系统中时,可以使用包将他们分开。比如:可以按照逻辑将整个数据库分为ABC3个包。A中包含的是整个系统均需要访问的实体表,B中包含的是子系统B才会访问的实体表,C中包含的是子系统C才会访问的实体表,这样设计后会更有层次、更清晰,如果必要,包中还可以再分包。

6、  快捷方式(shortcut):分包之后自然就会出现下面的问题:子系统包B中的表b需要和公共库包A中的a建立主外键关系,子系统包C中的表c需要重用公共库包A中的数据项item,要解决这类的问题可使用快捷方式。选中A包中的实体aitem,选择“Ctrl+C”,到包BC中右键选择“编辑à粘贴为快捷键”,则会在BC添加aitem的快捷方式,此时可方便的添加主外键关系或重用数据项。

7、  反向工程:如果数据库有些特性你不知道如何用PD去实现,可以使用反向工程来测试一下。比如前面所说的主外键关系、联合等特性,你可以在真实的数据库环境中设计一个Demo数据库,实现这些特性,然后通过PD的反向工程,生成物理模型,再生成概念模型,此时就可以看出PD里面是如何对应这些特性的,然后再按照这种对应的规则去设计你自己的数据库,其中包含了你要的特性。

posted on 2009-09-08 08:48  易轩  阅读(1793)  评论(2编辑  收藏  举报