精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● Powerbuilder>>其他技巧>>软件工程与PB十日谈之数据库

主题:软件工程与PB十日谈之数据库
发信人: crazycode()
整理人: leitiger(2002-06-11 11:25:11), 站内信件
数据库
PB的强项是纯数据库开发,下面就谈谈如何更好的结合使用PB与数据库,发挥出
两者的最大功能。
数据库本质上讲上一个容器,一个盛装数据与规则的容器。各种桌面、企业级数
据库很多,但原理功能都差不多。存储管理数据的功能依靠数据库中的表实现,
表定义了各个数据项目的类型、大小,为数据存储提供了一个格式定义;而管理
规则 
则包括视图、存储过程、触发器等,这里将视图作为一种规则,而不是管理数据
的方式,因其实质是表的抽象,具体数据仍然来源于基本表。存储过程、数据库
函数类似于一般程序中的函数,是用PL/SQL、T/SQL等数据库结构化语言书写的存
储于数据库内的逻辑;触发器是一种特殊的自动调用的逻辑代码,同样用数据库
结构化语言书写,它依附于表上,当对表进行插入、修改、删除时自动被激活,
完成适当的逻辑处理。触发器很多情况下是作为系统自动调用的强制执行的逻辑
来完成诸如数据复制、更新、日志等功能,它由系统保证与激发它的事物(Tran
saction)成为一体,一同提交、回退。
PB中没有数据存储功能,只有逻辑管理功能,它有类似与视图的Query、Datawin
dow,有类似存储过程、数据库函数的各类函数,类似约束的界面校验规则,类似
触发器的事件处理。
Query、Datawindow封装了表或视图,为操作数据库提供了一层隔离机制;而函数
则是用PowerScript书写的独立与具体数据库的逻辑;界面数据校验规则是数据库
约束的界面表示,它将更及时、有效地反映约束。以上规则定义的管理功能是不
能共享的,但是如果将函数等定义为COM/CORBA组件就另当别论了。
既然在很多功能上数据库与PB有功能重复,我们如何处理好他们之间的功能分配
与协调呢?下面针对C/S模式说说自己的看法。业务逻辑如果是处理数据的或负责
大量计算或需要经常改动的则可以放在后台实现。对于数据处理、逻辑计算前台
只需请求结果,后台返回结果,减轻了网络负担与客户机负担;对与需要经常改
动的逻辑放在后台,那么后台的修改对于前台是透明的,只要接口不变,那么前
台应用程序无须做任何修改;同时需要各个模块共享的逻辑也可以放在后台。对
于那些与界面相关的、与用户交互相关的、与外设相关的我们可以用PB实现。比
如打印、窗口布局等。约束规则在数据库的后台定义将更加安全,但仅有这些是
不够的,用户需要的是即时的反馈机制,特别是对于系统使用生疏的用户。我们
可以为Datawindow各个字段建立校验、可以在Datawindow控件的相关事件中写检
查代码,
但同时不要忘了在数据库中也要写约束,防止漏网之鱼!
PB的Datawindow有一些属性如Retrieve,即Retrieve as Needed,Retrieve to 

Disk,这些能加快系统响应速度,但根本的加快处理速度的办法在于后台,因为前
台是多种多样的,我们不可能考虑的了全部前台环境,但在后台我们可以使用索
引、分区、条块等方式加快速度。Datawindow有一个Filter属性,类似于SQL的W
HERE子句,但是除非与具体客户环境相关,最好用SQL的WHERE实现,这样可以大
大加快速度。很多开发人员写出类似于触发器的东西,自己用PB编码完成一致性
处理,如主子表等,但这是系统不安全、数据不完整的一个漏洞,后台做的事情
没有必要拿到前台来做。最后讲下数据库透明,即程序应该隔离开数据库,提供
给用户一个更友好的操作数据的界面,这也是程序的最终目的吧!

--
IF  回复 THEN
 请选中'将本文章寄一份给原作者', 多谢! 
END IF

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.103.124.200]

[关闭][返回]