基于Client/Server数据完整性约束的实现技术(2)
作者:佚名; 更新时间:2014-12-05
入数据不能通过在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

核心期刊快速发表
Copyright@2000-2030 论文期刊网 Corporation All Rights Reserved.
《中华人民共和国信息产业部》备案号:ICP备07016076号;《公安部》备案号:33010402003207
本网站专业、正规提供职称论文发表和写作指导服务,并收录了海量免费论文和数百个经国家新闻出版总署审批过的具有国内统一CN刊号与国际标准ISSN刊号的合作期刊,供诸位正确选择和阅读参考,免费论文版权归原作者所有,谨防侵权。联系邮箱:256081@163.com