日期:2014-01-06  浏览次数:20693 次


 

 

 

PowerDesigner设计数据库

 

 

 

 

 

                    

 

                                                            李伟华

 

 

                                                       2000年9月

 

 

 

 

 

说明:此文档为本人经验积累之所得,非部门设计文档(版权所有)

 

 

 

 

 

       本文档不讲述如何使用PowerDesigner,而是讲述如何将PowerDesigner的特点结合数据库设计的方法更好的设计一个数据库系统。
采用PowerDesigner设计数据库
PowerDesigner作为数据库建模和设计的CASE工具之一,在数据库系统开发中发挥着重要作用。

运用PowerDesigner进行数据库设计,不但给人直观地理解模型,而且充分运用数据库的技术,优化数据库的设计。PowerDesigner支持Sybase、Oracle、Informix、SQL Server等多种数据库系统,在使用系统做数据库迁移时不必维护多个数据库脚本。

对于采用结构化分析(SA),E-R图、数据流图直至最后的数据库物理图都是系统设计时不可缺少的一个部分,当数据库物理图完成后,应该产生系统的数据字典。运用PowerDesigner完全能够完成这一设计流程。

对于采用面向对象的分析(OOA),由于数据库采用的是RDBMS,因此存在对象和关系数据库之间的映射,也需求进行数据库设计。
两种数据库模型
PowerDesigner可以设计两种数据库模型图:数据库逻辑图(即E-R图或概念模型)和数据库物理图(物理模型),并且这两种数据库图是互逆的。

数据库逻辑图是对理想世界的一种笼统,体理想体之间的关系,可以有1对1、1对多、多对多等关系。特别说一点,在扩充E-R图中有概括这种关系,体现类型之间的一种子集联系,它定义了超类和子类。在PowerDesigner设计的E-R图中,不具备这种关系,但在E-RWin设计的模型中支持这种关系,因此在用E-RWin图设计的模型转化为PowerDesigner的模型时留意这种关系。

数据库物理图中是逻辑模型的物理实现,体现了表间的参照关系。在物理模型中不可能存在多对多的关系。在逻辑图向物理图转换时,多对多的关系变成两个1对多的关系。

       逻辑模型和物理模型有着紧密的联系,也有本质的区别。逻辑模型的设计遵照数据库设计理论的第三范式(在普通的数据库使用达到第三范式即可),逻辑模型要求具有使用系统所表达的所有信息并消弭数据冗余。物理模型是在逻辑模型的基础上,为了优化使用系统的功用而采用添加冗余,创建索引等数据库技术,它次要用非规范化的一些理论。

       在考虑设计的任何非规范化之前,数据库应先完全规范化,在没有完全理解数据和用户需求之前,不能进行非规范化。否则导致数据的组织越来越混乱,使用程序越来越复杂。

       因此逻辑模型和物理模型是互相矛盾又紧密联系的,这点需求设计人员好好把握。
PowerDesigner设计数据库物理图
用PowerDesigner设计数据库物理图,包括多个对象,如表(Table)、字段(Column)、域(Domain)等。设计时次要在PowerDesigner的Dictionary和Database两个菜单中。
表(Table)
       表是数据存储的一个逻辑对象,包括其它对象如字段(Column)、索引(Index)、触发器(Trigger)、存储过程(Procedure)等,表的优化设计有分割等技术,对于表的存储,如果访问数据量大,访问频率高则可考虑将表放在不同的存储(Storage)上。

       在设计表时,应该预算表的大小和增长量,便于创建数据库时分配数据库空键,这样减少了磁盘碎片的产生。

       在关系数据库中设计主键时,采用有意义的主键是致命的错误。如果用户决定改变字段的商业含义,则需求在所有使用到该信息的地方进行修正。主键的作用应是保持独一性和作为外键使用。任何对主键的修正会导致巨大的数据库维护任务量,显然这是不合适宜的设计。就关系数据库而言,设计主键策略采用的是代理主键的方法。

       设计主键时应该避免“热点”景象,但也需求分析具体的使用系统的并发用户而定。
字段(Column)
       定义一个字段次要有字段名、字段类型及长度、能否主外键、能否空、约束、默认值、域等。

       变长和定长的数据类型在数据库设计中讨论比较多,作为普通准绳,如果预期某列中的数据范围变化很大,但变化并不频繁,那末对这样的列使用变长数据类型最为适宜。

       决定行长时,既不能太浪费,又不能太吝惜。考虑到将来的需求,并且认识到,如果添加行长而没有改变一页中容纳的行数,那末添加的空间就等于无偿使用。

       设计时,字段尽量使用域,方便维护字段的类型。每个字段最好将默认值加上,由于在数据库查询中,有NULL值会影响查询的功用。

       通过CHECK约束可限制字段的取值。
域(Domain)
简单地说,是用户自定义类型,但域还可以定义它的取值范围或默认值,采用域减少了维护字段类型的任务量,也减少数据的不分歧性。
参照(Reference)
参照在数据库设计中是一个比较复杂的问题,它是实现数据的完整性次要要素之一,详细论述参考后面数据的约束。

在PowerDesigner中,可对参照完整性进行各项设置,参照的基数从0到n,对修正和删除约束可分别设置为None、