选择显示字体大小

浅析数据完整性问题

    
  ---- 在开发c/s结构的大型数据库应用软件时,一般情况下,软件开发人员和数据库设计人员并不是同一个人,这就需要协商好一些即可由程序设计人员解决又可由数据库设计人员来解决的问题,保证数据完整性就是一个这样的问题。 ---- 笔者举一个最简单的例子:货物出库、退货的例子
  
  ---- 这里有库存表(kcb)、出库单表(ckb) 和退货单表(thb)
  
  ---- 库存表包含如下列:wpbh,kcsl〔物品编号,库存数量〕
  
  ---- 出库单表含如下列:wpbh,cksl〔物品编号,出库数量〕
  
  ---- 退货单表含如下列:wpbh,thsl〔物品编号,退货数量〕
  
  ---- 假如我们进行了如下交易:
  
  ---- 1.物品a有十件出库
  
  ---- 2.物品a有五件退货(可再出库)
  
  ---- 我们都知道,这两笔交易都需要修改库存表,但修改库存表的工作由谁来做。可以肯定的说,程序设计人员和数据库设计人员都可以完成。
  
  ---- 首先我们举例由程序设计人员如何完成:
  
  ---- 1.出库时,产生新出库记录插入到出库单表中,同时将库存表中的kcsl用kcsl减掉出库数量的值取代。
  
  ---- 2.退货时,产生新退货记录插入到退货表中,同时将库存表中的kcsl用kcsl加上退货数量的值取代。
  
  ---- 由于不同的开发平台,完成这项工作的代码不尽相同,故不写出具体代码。
  
  ---- 接下来看看由数据库设计人员是如何完成这项工作:
  
  ---- 数据库设计人员完成这项工作靠的是触发器。
  
  ---- 数据库设计人员建立如下sql语句为出库单表(ckb)建立插入触发器
  
  create trigger forinsert
  on ckb
  for insert
  as
  update kcb
  set kcb.kcsl=kcb.kcsl - inserted.cksl
  from inserted
  where kcb.wpbh=inserted.wpbh
  
  ---- 同样,也要为退货单表建立类似的sql语句
  
  create trigger forinsert
  on thb
  for insert
  as
  update kcb
  set kcb.kcsl=kcb.kcsl + inserted.thsl
  from inserted
  where kcb.wpbh=inserted.wpbh
  
  ---- 可以很明显地看出,如果两个人都做了工作,程序在运行过程中一定会出错。
  
  ---- 但这项工作具体应该由谁来完成?我私下认为,应该由数据库设计人员来完成,原因如下:
  
  ---- 1、一个可移植性好的软件应该与数据的结构无关;
  
  ---- 2、程序的研制和调试更加简单,再拿上例来说,程序设计人员只需完成往出库单表和退货单表中插入相应的记录工作即可,具体修改工作由触发器来完成。
  
  ---- 3、触发器的运行是在服务器端,减轻了客户端的开销。
  
  ---- 4、触发器不管你在什么时候进行操作,它都会启动,保证数据不会出错。
  
  ---- 其实,上文所写的触发器只是一个最简单的例子,在实际工作中要远远比这复杂得多,设计一个好的数据库会花费数据库设计人员很大的心血,如果只是建立了表格,工作还没有完成一半呢,下一多半工作就是将你的数据完整性问题解决掉。
  
  ---- 成功地设计一个数据库能起到事半功倍的效果。数据的完整性已经解决了,程序设计起来还有什么问题呢?
  
  ---- 说来容易,做到却很难,比者在实际工作中也经常遇到很多问题,希望能和众多的同行共同进步,把你的经验和好的方法告诉大家。
  
  
  
    


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons