pd数据库模型3

数据库的完整性

       数据库完整性可通过存储过程、声明性参照完整性(DRI)、

数据类型、约束、规则、默认值,以及触发器来实现。在数据库内,这些功能各以特有的方式发挥作用。综合利用这些完整性功能,可以使数据库灵活,易于管理,而且很安全。

数据完整性概念分为几个方面。

◆ 表域完整性

通过主键来强制表的域完整性。

◆ 引用完整性

利用参照来加强表之间的逻辑关系。

◆ 数值域完整性

任何输入的数据在类型和范围上必须与指定的数据类型相匹配,只有当某列被说明允许NULL值,才允许向该列输入NULL

数据库的性能测试

       生成数据库之后,应进行数据库性能测试,以便优化数据库的设计,因此需要生成测试数据,由于是性能测试,数据的规范性要求不高。通过PowerDesigner可方便地生成测试数据(Generate Test Data),完成性能测试。

数据的约束

O-O约束

对父表的INSERTUPDATEDELETE操作没有限制。

M-O约束

对父表操作的约束:

父表的INSERT操作,对M-O约束,父表中间的记录可以没有任何约束地添加到表中,因为这种约束中不一定必须有子女。

    父表的键值修改操作,只有在子表中其所有的子女对应均做修改后,才能修改,即一般采用级联更新的方法。

    父表的删除,父亲只有在其所有子女均被删除或重新分配之后该父亲才能被删除。

强制对可选(M-O)约束

O-M约束

    父表操作的约束:

父表的INSERT操作,对O-M约束,一个父亲只有当至少当它的一个、子女同时被加入或至少存在一个合法的子女时,才能被加入。

父表的键值修改操作,只有当一个子女被创建或已经有一名子女存在才行。

父表的删除,理论上删除父亲是没有限制的,实际上,删除主表记录时,不采用级联删除子表的方案,而采用将子表的外键置空。


           可选对强制(O-M)约束

 

M-M约束

父表操作的约束:

父表的INSERT操作,可能随后需要生成子女,即在子表中创建新的行。也可能通过对子表的重新分配来实施完整行限制。

父表的键值修改操作,只有在子表对应的外键的值修改成新值时才能进行。实际可能是先创建新的父表纪录,接着修改子表所有对应的纪录,使其与父表的新纪录关联,最后删除原父表纪录。

父表的删除,只有在子表中所有相关的行全部删除或重新分配之后,才能删除父表中的纪录,一般对子表也进行删除操作。


           强制对强制(M-M)约束

 

在四类约束:M-MM-OO-MO-O。键值的修改可能会改变表之间的关系,而且可能违反一些约束。违反约束的操作是不允许的。具体的应用必须根据实际的要求和商业规则进行适当的选择。但在设计和开发时,必须考虑所分析的约束。

物理图的组织

数据库物理的组织以功能来组织为好,让人很容易就明白该功能需要操作哪些表,数据是如何流向的,但是按此组织,可能有些参照建立比较乱,其实有些参照可以不必建立,如在写入一个表时,其数据的来源就是从另一个查询得到的,可以保证数据的正确性,从功能划分来组织物理图,就可以不建立这个参照。

数据库的生成

有了数据库物理图,在生成数据库或数据库脚本时,应注意如下的问题:

参照完整性的实现,可以采用声明性参照实现或触发器实现,至于两种实现的优缺点,前面已经论述过,这里仅说一点,如果采用触发器实现需要在生成数据库后再生成触发器。

当参照含有级联(Cascade)删除或修改时,其实现要分情况处理:

SybaseSQL Server不支持声明性级联(Cascade)删除或修改,只能通过触发器(Trigger)来实现。

Oracle、Informix支持声明性级联(Cascade)删除,但不支持

级联(Cascade)修改,也只能通过触发器(Trigger)来实现。

    当定义了用户自定义类型时,在生成数据库时,最好转换成数据库基本类型,对数据库性能和迁移都有利。

数据字典

    数据字典作为产品的一个归档文档,它定义应用系统数据库的各个方面。数据库物理模型建好后,就可以生成数据字典,数据字典的内容和形式可以在PowerDesigner定义模板,依据模板生成数据字典,再处理一下文档格式。

    PowerDesignerCreate Report生成数据字典。

目前系统需要处理和优化的地方

主键的定义:

由于对业务了解的深度不够,某些表的主键建立存在一些问题,随着业务的深入逐步完善。

       参照的建立:

主键的定义不完善导致了参照建立的不完善,这也只能以后组不完善。

       数据库的划分:

       数据库的划分前面已经谈过,由于这个划分影响着服务器和客户端的程序,也只能以后的新版中解决。

       表结构的调整:

       对于有些表,如系统设置表,可以将它的横向结构改为纵向结构,这样增加了系统的灵活性

posted @ 2010-12-27 15:39  会飞的剑  阅读(324)  评论(0编辑  收藏  举报