|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
大家可以自己去看一看.可以说看得想呕吐.以前有次下了个动网来看.里面连基本内置函数的保护措施(函数没防御性)都没有.难怪经常补这个补那个了.可能现在.NET版会好点吧数据|成绩
----在开辟C/S布局的年夜型数据库使用软件时,一样平常情形下,软件开辟职员和数据库计划职员并非统一团体,这就必要协商好一些便可由程序计划职员办理又可由数据库计划职员来办理的成绩,包管数据完全性就是一个如许的成绩。
----笔者举一个最复杂的例子:货品出库、退货的例子
----这里有库存表(kcb)、出库单表(ckb)和退货单表(thb)
----库存表包括以下列:WPBH,KCSL〔物品编号,库存数目〕
----出库单表含以下列:WPBH,CKSL〔物品编号,出库数目〕
----退货单表含以下列:WPBH,THSL〔物品编号,退货数目〕
----假设我们举行了以下买卖:
----1.物品A有十件出库
----2.物品A有五件退货(可再出库)
----我们都晓得,这两笔买卖都必要修正库存表,但修正库存表的事情由谁来做。能够一定的说,程序计划职员和数据库计划职员都能够完成。
----起首我们举例由程序计划职员怎样完成:
----1.出库时,发生新出库纪录拔出到出库单表中,同时将库存表中的KCSL用KCSL减失落出库数目的值代替。
----2.退货时,发生新退货纪录拔出到退货表中,同时将库存表中的KCSL用KCSL加上退货数目的值代替。
----因为分歧的开辟平台,完成这项事情的代码不尽不异,故不写出详细代码。
----接上去看看由数据库计划职员是怎样完成这项事情:
----数据库计划职员完成这项事情靠的是触发器。
----数据库计划职员创建以下SQL语句为出库单表(ckb)创建拔出触发器
CREATETRIGGERFORINSERT
ONckb
FORINSERT
AS
UPDATEkcb
SETkcb.kcsl=kcb.kcsl-inserted.cksl
FROMinserted
WHEREkcb.wpbh=inserted.wpbh
----一样,也要为退货单表创建相似的SQL语句
CREATETRIGGERFORINSERT
ONthb
FORINSERT
AS
UPDATEkcb
SETkcb.kcsl=kcb.kcsl+inserted.thsl
FROMinserted
WHEREkcb.wpbh=inserted.wpbh
----能够很分明地看出,假如两团体都做了事情,程序在运转过程当中必定会堕落。
----但这项事情详细应当由谁来完成?我暗里以为,应当由数据库计划职员来完成,缘故原由以下:
----1、一个可移植性好的软件应当与数据的布局有关;
----2、程序的研制和调试加倍复杂,再拿上例来讲,程序计划职员只需完成往出库单表和退货单表中拔出响应的纪录事情便可,详细修正事情由触发器来完成。
----3、触发器的运转是在服务器端,加重了客户真个开支。
----4、触发器不论你在甚么时分举行操纵,它城市启动,包管数据不会堕落。
----实在,上文所写的触发器只是一个最复杂的例子,在实践事情中要远远比这庞大很多,计划一个好的数据库会消费数据库计划职员很年夜的血汗,假如只是创建了表格,事情还没有完成一半呢,下一多数事情就是将你的数据完全性成绩办理失落。
----乐成地计划一个数据库能起到事半功倍的效果。数据的完全性已办理了,程序计划起来另有甚么成绩呢?
----说来简单,做到却很难,比者在实践事情中也常常碰到良多成绩,但愿能和浩瀚的偕行配合前进,把你的履历亲睦的办法告知人人。
缺点:安全性不是太差了,还行,只要你充分利用系统自带的工具;唯一缺点就是执行效率慢,如何进行网站优化以后,效果会比较好。 |
|