PowerDesigner设计数据库使用规范.docx
- 文档编号:30077875
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:16
- 大小:567.11KB
PowerDesigner设计数据库使用规范.docx
《PowerDesigner设计数据库使用规范.docx》由会员分享,可在线阅读,更多相关《PowerDesigner设计数据库使用规范.docx(16页珍藏版)》请在冰豆网上搜索。
PowerDesigner设计数据库使用规范
PowerDesigner设计数据库使用步骤及规范
使用PowerDesigner可以方便地对管理信息系统进行分析设计,它几乎包括了数据库模型设计的全过程。
它可以制作多种数据模型,也能对团队设计模型进行控制。
还可以与许多流行的软件开发工具,例如PowerBuilder、Delphi、VB等相配合使系统设计更优化并缩短开发时间。
并不是每个设计都需要用到PD,对于比较大型的项目,它是很好的,对于短平快类型的项目,例如时间要求一周左右的系统,没有必要使用,直接维护数据库即可,对于表的数量超过10个的系统,建议使用PD进行设计和交流。
1.创建概念数据模型(CDM)
1.1创建CDM步骤
选择文件建立新模型,弹出如图所示对话框,选择ConceptualDataModel模型(即概念数据模型),单击OK,即确认创建。
双击资源浏览窗口中新创建的CDM名称图标,打开CDM模型属性窗口,进行相关属性信息设置。
如下图:
1.2对象命名通用规范
以下三种规范属于基本规范,适用于本文所有数据库对象命名规范。
1、长度规范:
凡是需要命名的对象其标识符均不能超过3个英文单词长度(30个字符),也即:
Oracle中的表名、字段名,函数名,过程名,触发器名,序列名,视图名的长度均不能超过3个英文单词长度(30个字符);
2、构成规范:
数据库各种名称必须以字母开头,但严禁使用SYS开头;名称只能含有字母,数字和下划线“_”三类字符,“_”用于间隔名称中的各语义字段;不要使用DUAL作表名;
3、大小写规范:
构成Oracle数据库中的各种名称(表明,字段名,过程名,视图名等等)的所有字符,必须使用大写,也就是不能在脚本中,对任何名称添加双引号“”来设定字符的大小写形式,只要不采用“”限制,Oracle自动会将各名称转化成大写。
2.进行ER设计的准备工作
2.1实体命名不相同检查
PowerDesigner默认不能存在相同名称的实体属性,这也是考虑到可能产生的一些如主键外键等名称冲突问题,但当进行实际数据库设计时,可能会多次使用相同数据项(DataItem)便于理解各实体。
为此需要对更改PowerDesigner相关设置。
软件默认DataItem不能重复使用,需要进行以下操作:
选择工具ModelOptions,在ModelSetting设置目录中,将DataItem下的UniqueCode取消选中即可,系统默认将UniqueCode和AllowReuse均选中。
同时该设置均是面向特定模型的,即针对当前模型有效,若希望在其它模型中也有此命名设置,则需要重新进行设置。
不过在CheckModel时,如果选择全部Check,则依旧会报DataItem重名的错误信息,这时需要我们在人为检查确认数据项无误时,可以在选择不对DataItem不检查,如下图示:
3.定义实体
3.1创建entity
3.1.1创建entity步骤
1、在CDM的图形窗口中,单击工具选项版上的Entity工具,再单击图形窗口的空白处,在单击的位置就出现一个实体符号。
点击Pointer工具或右击鼠标,释放Entity工具。
如图所示:
2、双击刚创建的实体符号,打开下列图标窗口,在此窗口“General”标签中可以输入实体的名称、代码、描述等信息。
Name:
是用来在模型中标识一个实体,一般用于模型在界面中的显示(这个可以通过更改选项设置进行改变)。
在一个模型当中,实体的名字不能重复。
Code:
在模型转化时一般作为对象的物理名称,比如把实体属性的Code转化为数据库中的列名,一般采取与Name一致。
Generate:
默认是选择状态,如果取消,则在转化为其他模型时,会忽略这个实体。
3.1.2entity命名规范
CDM中的实体等价于PDM中的表。
1、表的命名只能使用英文字母,数字和下划线。
2、命名以是名词的复数形式,如cities,categories,friends等。
3、命名名尽量用全名。
4、若库中有多个系统,表名采用系统名称+单词或多个单词,系统名是开发系统的缩写,系统名称全部采用小写英文字符,如bbs_title,bbs_torum_type。
若库中只含有一个系统,那么表名仅用一个单词或多个单词。
5、单词选择能够概括表内容的一个或多个英文单词,单词间用下划线"_"分割,如user_info,user_type。
6、关连表命名规则为“表A_表B”,如:
user_articletype,user_formtype。
3.2添加entity属性
3.2.1添加entity属性步骤
1)在上述窗口的“Attribute”选项标签上可以添加属性,如下图所示。
注意:
数据项中的“添加属性”和“重用已有数据项”这两项功能与模型中DataItem的Uniquecode和Allowreuse选项有关。
P列表示该属性是否为主标识符;D列表示该属性是否在图形窗口中显示;M列表示该属性是否为强制的,即该列是否为空值。
如果一个实体属性为强制的,那这个属性在每条记录中都必须被赋值,不能为空。
按“Crtl+U”呼出“定制列过滤器”的窗口,可以根据自己的喜好和实际需要选择那些列出现在窗口中,那些隐藏。
使用快捷键“Crtl+E”可以允许或者禁止当前过滤器。
2)在上图所示窗口中,点击属性按钮,弹出属性对话框,如下图所示。
3.2.2添加entity属性规范
3.1.2.1字段设计规范
1、表名的name为汉字,code为字母;表中字段的name为汉字,并与备注是相同的;code为字母;
2、一个表中的字段不要太多,理论上不要超过80个。
3、一个表中的各字段的访问频繁度应该基本一致。
4、一个表中的所有字段,应当能存储在一个数据块中(BLOCK),也即:
表的单行字段总长度 5、每个字段必须有注释,说明其含义,对于冗余字段还要特别说明其维护方法,外键字段说明参照与哪个表。 6、字段尽可能有默认值,字符型的默认值为一个空字符值串,数字型的默认值为数值0。 7、存储图片,视频,音频,文件,500字节以上文本等占用太多空间的字段(大对象字段),不能和其他字段存储在一个表中。 3.1.2.2字段命名规范 1、字段名为有意义的单词,或单词的缩写。 2、如果字段由几个单词组成,则单词间用下划线("_")分割,如client_id,st_code等。 3、不要使用数据库关键字,如: name,time,datetime,password等。 3.1.2.3字段类型及长度规范 1、对于数值类型固定使用number。 number是最基本的数值类型,其他都是number的衍生,底层都是number,比如integer/int完全映射到number(38)。 如果需要对number做复杂的运算,建议先用cast内置函数转换number为浮点数类型。 number是变长类型,在计算表存储空间的时候要切记。 2、char和varchar2的选择: 从空间上考虑,用varchar2合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点。 如果预期某列中的数据范围变化很大,但变化并不频繁,那末对这样的列使用varchar2最为适宜。 3、如果使用char,在数据迁移等出现以上情况,则必须使用trim()函数截去字串后的空格。 4、决定行长时,既不能太浪费,又不能太吝惜。 考虑到将来的需要,并且意识到,如果增加行长而没有改变一页中容纳的行数,那末增加的空间就等于免费使用。 5、能够用数字类型的字段尽量选择数字类型而不用字符串类型的,这会降低查询和连接的性能,并会增加存储开销。 这是因为引擎在处理查询和连接回逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了。 6、尽可能把字段定义为notnull。 所有字段在设计时,除以下数据类型timestamp、image、datetime、smalldatetime、uniqueidentifier、binary、sql_variant、binary、varbinary外,必须有默认值,因为在数据库查询中,有null值会影响查询的性能。 7、如无特别需要,避免使用大字段(BLOB、CLOB、LONG等),如使用必须使用BLOB或CLOB类型。 8、由数据库产生的系统时间首选数据库的日期型,如DATE类型。 3.3属性的检查约束 3.3.1定义属性检查约束操作 在实体属性的特性窗口,打开如图所示的检查选项卡: 在这个选项卡可以定义属性的标准检查约束,通过check约束可限制字段的取值。 窗口中每项的参数的含义,如下: 3.3.2约束命名规范 主键约束: pk_表名_字段名 外键约束: fk_表名_字段名 唯一约束: un_表名_字段名 非空约束: nn_表名_字段名 检查约束: ck..... 3.4标示符 3.4.1标示符添加步骤 CDM中的标识符等价于PDM中的主键。 如果实体只有一个标识符,则它为主标识符。 如果实体有多个标识符,则其中一个被指定为主标识符,其余的标识符为次标识符。 1、定义主、次标识符 1)选择某个实体双击弹出实体的属性对话框。 在Identifiers选项卡上可以进行实体标识符的定义。 如下图所示 2)选择第一行“主标识符”,点击属性按钮或双击第一行“主标识符”,弹出属性对话框,如图所示: 3)选择"Attributes"选项卡,再点击“AddAttributes”工具,弹出如图所示窗口,选择某个属性作为标识符。 3.4.2标示符添加规范 3.4.2.1主/外键规范 1、除临时表和外部表,以及流水表外,其他表都要建立主键。 2、所有表的主键都设为表的ID,为int型,取值来自序列sequence自增; 3、主键应当是对用户没有意义的。 如果用户看到了一个表示多对多关系的连接表中的数据,并抱怨它没有什么用处,那就证明它的主键设计地很好。 4、对于500万以上的表,采用先建唯一索引再添加主键约束的方式来创建主键。 5、主键永远不能修改,也不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。 6、尽量不用复合主键。 7、为了提高性能,对于数据量比较大的标要求对外健建立索引。 对于有要求级联删除属性的外键,必须指定ondeletecascade。 8、pd中外键是通过关系Relationship自动来建立的,不需要手动建立。 不然会产生多余的键。 所以设计时,关注实体本身的字段,以及实体间的关系,特别是多对多和依赖关系。 3.4.2.2索引规范 1、主健字段或组合字段必须满足非空属性和唯一性要求。 2、表建好后数据库自动为表生成一个索引(为自动增长的列生成唯一索引),如果在对这列添加索引,数据库会给一个警告,内容大概是,已经为这列添加了索引,建议修改索引名称和自动增长列名保持一致,为了方便使用。 3、如果字段是与其它表的关键字相关联而设计为外键引用,需建索引。 4、无论表的大小,外键列都要建立索引。 一是为了子父表关联查询的性能考虑,二是为了避免父子表修改而发生死锁。 5、如果字段需做模糊查询之外的条件查询,需建索引。 6、如果一列出现在表达式或函数中,该列上的索引将失效。 7、除了主关键字允许建立簇索引外,其它字段所建索引必须为非簇索引。 8、设计索引时,不要索引宽度大的字段。 索引的宽度不是由字段的多少决定的,而是由字段的长度来决定。 对于窄索引关键字,在每一索引页上放置更多的关键字和指针,这样就能花销更少的I/O找到数据。 9、由于使用形式需和创建形式一致,尽量避免使用函数索引。 如果想要使用函数索引,请尽量进行转化。 10、静态表中的低基数列可以使用位图索引。 在事务型数据库(OLTP)中禁止使用位图(bitmap)索引,在报表型数据库(OLAP)中的静态表,可适当使用。 11、对分区表的索引,需要做分区维护的,必须使用局部索引。 12、重建索引使用alterindexrebuild方式,禁止采用dropindex&createindex方式。 4.生成物理模型 进行完数据实体的录入之后,可以生成物理模型。 4.1配置RDBMS 工具ResourcesDBMSOracle10g根据需求进行设置。 建议在这里将生成的数据库的脚本中表和子段的引号去掉。 在ScriptSqlformatCaseSensitivityUsingQuote选择“No”。 在这里还可以设置,哪些是无效字符,脚本的大小写,前缀的生成等等。 4.2产生物理数据模型 工具GeneratePhysicalDataModel选择数据库类型物理数据模型已经完成。 4.3产生数据库脚本 数据库GenerateDatabase选择脚本存储路径,文件名及类型产生脚本完成。 点击Edit以后可以在记事本中打开此脚本,最后就可以去运行此脚本了。 从CDM到PDM的转换需要注意: 不能改变Diagram的名称,在树状图中,如果钩选红色标出的Symbol表示覆盖修改,不钩选表示保护修改。 还可以在产生物理模型之前设置好脚本比如说,外键,联系名,索引的命名格式。 GeneratePhysicalDataModel->Details中设置。 生成数据库之前需要进行连接的配置。 DatabaseE->configureconnection->一般进行的是ODBC配置,最后测试连接。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PowerDesigner 设计 数据库 使用 规范