Untitled Document
[本站首页]
[加入收藏]
[设为首页]
 简历相关演讲范文党团工作法律文书办公文档报告范文总结范文公文写作实用文档作文指导论文大全合同书计划书
 大陆视剧港台视剧韩国视剧日本视剧影视明星电影剧情影评资讯明星资料剧照花絮华人明星写真日韩明星写真彩信集
 在线游戏笑话大全暴笑网文魔鬼词典幽默图片恐怖故事爱情故事FlashMTV谜语竞猜脑筋急转弯 - 文学 星闻 音乐 QQ库
您当前的位置:中国文网 -> 文章中心->论 文->工学论文->计算机学 -> 文章内容  
热辣专区
· 员工辞职报告范文...
· 经典毕业生自我鉴...
· 毕业自我鉴定范文...
· 你的简历能得几分...
· 辞职书(公司职员...
· 国外英文简历与国...
· 会计实习报告
· 员工离职证明表
· 计算机社会实践报...
· 高中毕业生自我鉴...
· 大学生社会实践报...
· 自我鉴定
· 毕业自我鉴定(中...
· 大学生自我鉴定2...
· 会计社会实践报告...
写真推荐
· 张含韵图片写真
· 李宇春图片写真
· 金惠秀图片写真
· 刘亦菲图片写真
· 金南珠图片写真
· 刘若英图片写真
· 陈好图片写真
· 金贤珠图片写真
· 郭德纲相声
· 金荷娜图片写真
· 车仁表
· 刘晓庆
· 陈法蓉
· 金敏喜图片写真
· Diva图片写真
· 菊地理惠图片写真
· 金泽文子图片写真
· 金素妍图片写真
· 山田孝之图片写真
· 陈宝莲
相关文章
基于Client/Server数据完整性约束的实现技术
发布时间:2005-12-8 16:21:39 
 
中国文档网http://www.86wd.com

广州工程总承包集团有限公司  时亚弘

摘 要:本论文主要讨论基于Client/Server数据完整性约束及其如何实施企业业务规则,并以SQLServer和PowerBuilder为例,介绍了数据完整性约束的实现技术。
关键词:Client/Server,数据完整性约束, 企业业务规则

DBMS已从早期的分散的一个个计算模型、网络/文件服务计算模型(针对文件)发展到现在的Client/Server计算模型(针对表中的一行)。Client/Server模型是非对等的(decoupled),客户发出服务请求,服务器作出响应,提供服务,即所谓的"请求驱动"。DB的Client/Server系统由DBServer、客户应用程序和网络组成。DBServer(即后端)负责有效地管理系统的资源,主要负责数据处理、并发控制、数据安全性、数据完整性和数据的备份和恢复等。客户应用程序(即前端)是系统中供用户与数据进行交互的部件,主要任务是提供交互式界面完成数据的录入、分析、检查和显示,向DBServer发出请求(SQL语句)并接收结果和错误信息。网络和通信软件是系统中客户和服务器之间数据传送的工具。

由于现在的数据库都是开放、多用户共享,因此维护数据库的正确性至关重要。数据库的完整性描述为数据库内容的完整性约束集合,其中完整性约束指数据库的一个状态是否合理,这是一组谓词。DBS检查数据的状态和状态转换,判定它们是否合理,是否应予接受。对一个数据库操作,要判定其是否符合完整性约束,全部断言无矛盾时才可以执行。完整性约束的形式化定义I=(O,P,A,R),其中O是完整性约束所涉及的数据对象集合,P是对象所满足的谓词,A是触发检查的条件,R是约束不满足时的反应动作[2]

一、 常见的数据完整性约束

根据分类角度不同,可将完整性约束分为如下几类:

·域、元组、集合完整性

·立即约束和推迟(到EOT)约束

·状态约束和状态演变约束。

·标准和定制的数据完整性约束

实际的系统中,一般将数据完整性约束分为标准的数据完整性约束和定制的数据完整性约束。标准的数据完整性约束是DBS已经实现的内部规则,包括域完整性、实体完整性和引用完整性。

域完整性(Field Integrity)保证一个数据库不包含无意义的或不合理的值,即保证表的某一列的任何值是该列域(即合法的数据集合)的成员。方法是限制列的数据类型、精度、范围、格式和长度等。

实体完整性(Entity Integrity)保证一个表中的每一行必须是唯一的(元组的唯一性)。为保证实体完整性,需指定一个表中的一列或一组列作为它的主键(Primary Key)。一个表中每行的主键必须确实含有一个值。一个表只能含有一个主键,如需要从其它列中除去重复的值,可以将一个或一组非主键列指定为一个候选键或唯一值键。

引用完整性(Reference Integrity)定义了一个关系数据库中不同的列和不同的表之间的关系(主键与外键)。要求一列或一组列中的值必须要与相关的一列或一组列中的值相匹配。从属的一列或一组列称之为外键(Foreign Key)。被引用的列或一组列称之为父键,父键必须是一个主键或唯一键。外键属于子表或明细表,父键属于父表或主表。若父键和外键属于同一表,则称之为自引用完整性。子表某行的外键必须与主表的主键相匹配,只要依赖于某主键的外键仍存在,主表中包含该主键的行就不能删除。

由于每个公司的数据库都有自己独特的业务规则集,所以系统必须有一种方式来实现定制的业务规则即定制的数据完整性约束。定制的数据完整性约束可由如下几种方法实施。

一种最原始的方法是将将每一个完整性约束编入要访问数据库的每个应用程序中,缺点是在每个相关的数据库应用程序中,开发者都要对相同的完整性规则进行编码、测试和排错。若某一规则变动,所有相关的应用程序都得改动。应用程序须向DBServer请求大量的数据,以执行该应用程序内部的数据完整性规则检查,这将阻塞网络。因而这是一种耗时、低性能的方法。

用户定义的数据类型(User-defined DataType)是由标准数据类型导出的新数据类型,它比标准的数据类型更准确地限定了数据输入的范围。

约束(Check)用于限制列的值域,在数据类型限制的基础上对输入的数据进一步进行限制。通过逻辑表达式来定义列的有效值。

缺省(Default) 定义了一个数值,当用户向数据表插入数据时,若某个域未给定值,系统自动将定义在该域上的缺省作为输入值,保证数据库数据的合理性。

规则(Rule) 是一个用来绑定域或用户定义数据类型的数据库对象,规则说明了哪些数据可以输入到域中。任何时刻,用户输入或修改数据(INSERT 或 UPDATE), DBMS都将检查该数据是否违反绑定在域上的规则。
存储过程(Stored Procedure)是由编译过的SQL语句、控制流语句、变量说明和赋值运算等组成的集合,由开发者创建并存储在数据字典(大部分DBMS叫系统表)中。我们可以通过存储过程中的语句来定义企业业务规则,特别对于复杂的表与表之间的饿关系,用存储过程来实现将变得相当容易。

触发器(Trigger)也是一个存储过程,该过程在插入、修改和删除等操作事前或事后由DBS自动激发(执行)。经常用于实现逻辑上相关的数据表之间的数据完整性和一致性。触发器非常适合于实施企业规则,如果某个输入违反了其中的某个企业规则,触发器可以显示相应错误并中止正在执行的数据库动作。

二、Client/Server模型下实施企业规则的准则

在Client/Server系统中,前端和后端都提供数据完整性约束。在前端可进行域完整性约束,并能定制业务规则。在后端几乎可以实现上述所列的所有的完整性约束。E.F.Codd在衡量关系数据库的十二条准则之第十条指出关系完整性约束条件必须用数据子语言定义并存储在数据字典中,而不是在应用程序中。这样,当完整性约束改变时,只要修改数据字典即可,完整性的改变一般不会在逻辑上影响应用程序的活动。

前端应用程序也可以进行某些完整性检查并实施企业规则,但是这些做法不能用于取代在数据库里的完整性约束定义。如果数据库设计者完全正确地说明了所有的约束和企业规则,则任何违反约束和规则的数据操作都会引起数据库错误。前端应用程序的任务是尽量减少产生数据库错误的可能性,只有从这个意义上说,前端应用程序才应当包含完整性检查和实施事务规则。当数据库没有完整性约束时,前端应用程序必须实施企业规则。

由此我们得出在实施企业规则时须遵循如下准则:

·集中在数据库中实施企业规则

·减少对数据库请求的次数,尽量减少返回结果

我们在实施企业规则时,应将所有的企业规则定义在数据字典中,应用程序在向数据库提交SQL语句之前尽量减少由用户引起数据库错误的可能性,使应用程序运行顺畅,对用户友好,开销少。

三、PowerBuilder/SQLServer数据完整性约束的实现技术

PowerBuilder是当今非常流行的前端开发工具,它提供了丰富的构件,能很方便地开发出界面友好、功能强大的应用程序。下面以功能强大的数据窗口为例,说明前端开发工具如何实现数据完整性约束,PowerBuilder的其它构件也提供类似实现完整性约束的方法。

◆利用列的编辑风格(Edit Style)限制列的长度、格式、值域等。PowerBuilder提供无线按钮(Radio Button)、检查框(Check Box)、下拉式数据窗口(DropDown DataWindow)、下拉式列表框(DropDown List)、编辑屏蔽(Edit Mask)和编辑(Edit)等编辑风格来检查列的数据类型。

◆利用列的有效性验证规则(Validation Rule)对输入数据进行限制。在Validation Rule对话框内,可输入规则定义(Rule Definition)和有效性规则出错信息(Validation Error Message)。

◆可在ItemChanged事件的script程序里对输入数据进行进一步的有效性验证,若输入数据不能通过在ItemChanged事件里所设置的检查,则返回动作码1,拒绝输入数据。

◆当应用程序调用函数Update()更新数据库之前,触发UpdateStart事件。该事件是用于进行数据有效性验证的最后一次机会。若输入数据的有效性验证失败,则返回动作码1,拒绝数据更新。

◆针对那些数据库要求必须具备值的列(即那些具有NOT NULL约束的列),可将对应的数据窗口的列置为必备域(Required Field)。但是必备域的约束对用户来说并不友好,用户必须输入一个值,否则无法离开该列。一种替代的办法是在UpdateStart事件里检查列(在数据库中为NOT NULL列)的值是否为NULL。

◆利用自定义有效性验证函数进行常规的数据检查,有助于应用程序的标准化和简化。这些函数可以用在列的有效性验证规则,也可以用在Itemchanged事件的script程序中。一般自定义有效性验证函数被设计成全局函数、返回布尔型结果。

在数据窗口的字段中输入数据,离开该字段,系统调用AcceptText()函数 用户调用AcceptText()函数

执行字段的数据类型检查

↓合法 使用字段的有效性验证规则

激发ItemError事件

↓合法 执行ItemChanged事件(可设置有效性验证)

↓ 0 数据窗口接受该值

↓ 用户调用Update()函数

↓ 执行UpdateStart事件

不更新数据库 ↓ 0 更新数据库

图一、PowerBuilder数据有效性验证的过程

值得注意的是有效性验证规则对数据窗口类的所有实例都通用,而在Itemchanged事件的script程序里进行有效性验证与具体的数据窗口密切相关。有些有效性验证需进行数据库查询,若需要很高的系统代价,尽量避免使用。

SQLServer是一个多用户的RDBMS,它为复杂环境下有效地实现企业管理提供了一个强有力的Client/Server平台,是一种较理想的后端数据库服务器之一。微软和SYBASE公司都支持SQLServer产品。下面只以一个例子来说明在SQLServer中如何实现数据的域、实体、引用完整性约束。有关于如何用存储过程、触发器、规则和用户定义数据类型等实现数据完整性约束可参见有关资料。

CREATE TABLE pageruser
( stationid SMALLINT NOT NULL,
userid INT NOT NULL ,
frequentid SMALLINT NOT NULL,
machinecode INT NOT NULL,
name CHAR(10),
sex CHAR(1),
pagertypeid SMALLINT NOT NULL,
PRIMARY KEY(stationid,userid),
UNIQUE(frequentid,machinecode),
FOREIGN KEY(pagertypeid) REFERENCES pagertype,
CHECK(sex in('F','M'))
)
CREATE TABLE pagertype
( id SMALLINT,
typename CHAR(10),
note CHAR(30),
PRIMARY KEY(id)
)
以上定义了一个寻呼台DB的用户档案表pageruser和寻呼类型表pagertype,我们可以看出如何定义域完整性、主键、外键、唯一键、NOT NULL和CHECK约束。
   
四、结束语

本文讨论了分布计算环境下的数据完整性约束的概念及其实现技术。另外,基于Browser/Server计算模式下的应用系统同样需要考虑数据完整性约束的问题,且其与基于Client/Server的数据完整性约束相类似。

参考文献:

[1] 李昭原主编 数据库技术新发展 清华大学出版社,1997
[2] 周龙镶编著 数据库管理系统实现技术 中国地质大学出版社,1990



中国文档网http://www.86wd.com[返回上一页] [打 印] [收 藏]
 
 名星写真:       华人明星 日韩明星 卡通明星 明星资料 网络明星
 相关推荐:
· [华人明星] 陈好图片写真
· [华人明星] 李南星图片写真
· [商务策划] 关爱在金秋---金太阳健康之声大型联谊会
· [贺词慰问] 展翅鲲鹏风正举 龙腾金海恰逢时--新学年校长讲话
· [党员心得体会] 纪律教育学习月活动心得体会(电信)
· [节日礼仪] 圣诞红酒选品购全攻略
· [饮食礼仪] 传统饮茶礼仪:敬茶时只沏八分满
· [涉外礼仪] 在荷兰应遵守的商业礼仪
· [职场礼仪] 春节独生子女夫妻该回谁家
· [职场礼仪] 世界各国形形色色的“母亲节”
· [自我鉴定] 毕业生自我鉴定范文(营销专业)
· [入团申请] 入团申请书格式范文
· [规章制度] 公司人事管理制度
· [辞职报告] 辞职申请书的适用范围和分类
· [实习报告] 市场营销系2004年毕业实习总结报告
· [求职简历] 求职简历成繁历 到底何种简历受公司欢迎
· [班主任工作总结] 生物教研组工作总结范文
· [竞职演讲] 加强科研管理 实施创造教育
· [写作辅导] 旅游应用文写作导学
· [传统节日] 元宵节的由来与传说
· [民俗风情] 重阳节习俗
· [情况汇报] 通河县旅游开发工作情况汇报
· [求职简历] 求职信范文
· [非诉讼法律文书] 计算机软件许可证协议书(与最终用户直接签订)
· [园林景观论文] 园林建筑师手记(园林设计的一些常识)
 

中国文档网版权申明:本站资源为网上搜集、网友提供等,如果某种资源涉及或侵害到您的版权请立即写信通知我们。 除部分特别声明不要转载,或者授权我站独家播发的文档外,大家可以自由转载我站点的文档,但原作者和来自我站的链接必须保留。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:
由于本站数据庞大,故不能保证站内所有信息的完整性,如您发现有不完整的信息请留言我们,我们尽量第一时间内补充!
 

关于本站
- 广告合作 - 版权声明 - 友情连接 - 网站地图 - 本站留言

Copyright © 2006 All Rights Reserved www.86Wd.com 皖ICP备05013385号