FoxPro在网络环境下开发数据库管理软件的一些经验

来源:互联网 发布:黑客也是程序员 编辑:程序博客网 时间:2024/04/30 15:03

1、多用户环境下文件的共享和独占的实现
(1)、当你要访问的文件或记录不想再让其他用户访问时(一般是对数据库的更新操作),可在真正访问前地对其进行“加锁”,访问结束后再立即“解锁”;或者以独占方式打开该数据库文件进行访问。笔者在此以数据追加入库为例,简述采用按钮形式实现“加锁”-“解锁”的方法。此方法的优点在于:当加锁失败后,程序可自动返回数据编辑屏幕(不需要编程干预),这样用户可根据需要,再适时地单击“追加”按钮继续其工作。“追加入库”按钮的代码片段如下:

setexclusiveoffuse(locfile("z:messagescxxhytz", "dbF","Whereishytz.dbf?")); AGAINALIAShytz; ORDER0setreprocessto0ok=flock()   &&加锁

if ok  &&成功锁住

   append  from  hytzi  

   wait"数据追加成功!按任意键继续!"window unlock   &&解锁

else   &&加锁失败

   wait"文件已被其他用户使用,请稍候再试!"window 

endif 

usesetexclusiveon

其中:hytz.dbf--服务器上的目标数据库表hytzi.dbf--临时数据库表


(2)、当你要访问的文件或记录允许其他用户访问时(一般为数据库的检索操作),以共享方式打开该数据库文件即可。
以检索hytz.dbf数据为例。打开hytz的数据查询屏幕,在SCREEN的Layout项中,点取Code按钮,在ScreenSetupCode中加入如下代码段:...   

SELECT0USE(LOCFILE("hytz","DBF","Whereishytz?"));AGAINALIAShytz;shared; &&共享方式打开ORDER0...建议将系统的数据检索与数据更新分为两个子系统进行设计和编码,这样便于在程序中对EXCLUSIVE的值进行设置(使用SETEXCLUSIVE命令和USE{EXCLUSIVE|SHARE}命令)。为了减少对数据库访问的“碰撞”,可定时(如晚上)对数据库进行更新操作(这可由系统管理员来完成)。

2、减少网络数据传输量、提高数据共享效率

(1)、将FOXPRO软件、应用程序、部分不需共享的数据存放在网络工作站本地硬盘上,只将需要共享的数据库存放在网络服务器上的共享目录下。

 
(2)、对于在网上使用的数据库管理系统,为了减少独占数据库的时间,建议采用在本地单机上建立与其结构完全相同的临时库的方法。数据编辑在临时库中进行,待数据编辑完毕并校核无误时,再追加到服务器的目标库中;数据查询时,首先将
满足条件的数据从服务器中提取到临时库中,然后对其结果进所需操作。


3、安全性措施在数据库系统中,由于数据大量集中存放,为多用户直接共享,从而使得安全性问题更为突出。

(1)、为了保护数据库以防止不合法的使用,对于那些已获得上机权的用户,还要进一步根据其对数据库所需进行的操作进行权限分类,以保证其只能按其权限对相应的数据进行访问,而不能越权。

(2)、将共享数据存放在服务器的共享目录下,同时将查询软件(该查询系统只有具有查询权限的用户方可进入)作为一独立系统安装于各工作站上,而将数据编辑软件(该数据编辑系统只有具有数据编辑权限的用户方可进入)安装于数据源点处的工作站上。用户的权限由网络操作系统和系统管理员控制。

4、充分利用Rushmore技术提高网络环境下数据库操作速度RushmoreTechnology是高效率存取数据的索引式数据存取技术。在编制数据库检索程序时,应用该技术可高效地访问许多记录的组合,使复杂的数据库操作速度提高成百上千倍。能使用Rushmore的命令如下:
AVERAGECOPYTOARRAY
EXPORTLOCATESORTBROWSECOUNTINDEXRECALLSUMCALCULATE
DELETEJOINREPLACETOTALCHANGEDISPLAYLABELREPORTCOPYTO
EDITLISTSCAN

但编程人员必须牢记使用该技术的条件:

(1)、使用上表的命令必须包含有一个FOR参数,且FOR参数中的条件运算式必须是一个最优化运算式。而且,要给可加搜索范围的命令AVERAGE、SUM、LOACTE、SORT等加上ALL或NEXT等。另外,命令中不能有WHEN参数。

(2)、只能处理单一数据库,要想使用Rushmore技术同时处理多个数据库,必须使用SQL的select命令,因为该命令将Rushmore技术作为优化查询的基础技术,当SQL发觉需要索引时,即自动创建临时索引文件。

(3)、在上表的命令中若指定了NOOPTIMIZE参数将不使
用Rushmore技术。

(4)、在FOXPRO标准版中,当数据库记录总数过50万个时,Rushmore无效。

5、数据库的数据冗余为了提高应用程序执行的效率,在存储空间允许的条件下,经慎重考虑后,可以有选择地保留一些数据冗余,也可在数据库中保留那些使用频率特别高、计算费时的结果。

6、其它

(1)、为尽量避免编程的重复工作,减少硬盘空间的占用量,在系统设计过程中要进行综合分析,提取相似点,编制通用的程序,便于程序重用。
(2)、对界面的要求为了提高整个网络环境下系统的人机交互性和可操作性,用户界面应具有可靠性、简单性和立即反馈特性。.可靠性:指界面要具有一定的容错能力,能及时正确地给出运行状态指示和出错信息,并引导用户改正错误;.简单性:尽量减少用户负担,即操作方式简单,容易记忆,输入/输出容易理解;立即反馈:对用户的应用请求都应在用户心理许可的时间范围内给出响应,即使不能得到结果,也应给出某种信息以缓和用户等待心理。笔者采用以上方法,已成功完成了多个网络环境下综合信息管理系统的开发,收到了很好的效果。

 
原创粉丝点击