资源描述:
《第七章 事务处理与数据保护》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第七章事务处理与数据保护第一节数据授权一什么叫数据授权对用户使用数据库的操作权限进行规定称为数据授权。只有获得权限的用户才能对数据库进行指定的操作。授权者数据库管理员,数据库表的建立者,已经获得授权许可的用户。三操作对象与权限表,属性查询,插入,更新,删除,ALL数据库建立索引建立,删除视图同表四授权语句GRANT权限1,…,权限nON对象类型对象名TO用户1,…,[withGRANTOPTION]作用:1.把指定对象上的一组权限授予一组用户。2.WITHGRANTOPTION的作用进行授权传递。举例1.将对XS表的所有权限授予张三,并进行授权传递。GRANTALLONTABLEXS
2、TO“张三”WITHGRANTOPTION2.将对XK表CJ属性进行修改的权限授予李四。GRANTUPDATEONTABLEXK(CJ)TO“李四”权限收回收回对用户的授权操作及授权传递。REVOKE权限1,…,权限nON对象类型对象名FROM用户[CASCADE
3、RESTRICT]作用:CASCADE表示收回操作权限,同时收回他所做的授权传递。RESTRICT表示当用户已经获得授权传递后,禁止权限收回。例:REVOKEALLONXSFROM“张三”RESTRICTREVOKEALLONXSFROM“张三”CASCADE第一条不能执行,第二条能执行。第二节数据完整性一码的完整性1.当
4、表确定主码后,主码不能为空。2.定义主码的方法:在建表时用KEY或PRIMARYKEY(…)定义.域的完整性1.限制属性的取值范围2.方法:CHECK(条件)例:在选课表中限定CJ的取值范围在0到100之间。CREATTABLEXK(XHC(10),KHC(3),CJINTCHECKCJBETWEEN0AND100)三参照完整性1.外码若属性A在R中被指定为主码,而A又出现在S中,则A称为S的外码。例如XH在XK表中是外码。2外码说明语句foreignkey外码references表名(属性)说明:(1)表名是指外码作为主码的表。(2).外码名可以与作为主码的名相同或不相同。(3).
5、该语句应在建表语句中说明。例:在XK表中说明XH是外码。CREATETABLEXK(XHC(8),KHC(3),CJINT,foreignkeyxhreferencesxs(xh))3参照完整性规则(1)外码必须在主表中出现。(2)外码可以设置为空。4.实现完整性的方法(1)级联规则(CASCADE).主表作删除时,外码所在表的元组也一并删除。.在更新时,外码也作相应更新。(2)置空规则(setnull).主表作删除时,外码置为空。语句:ON{DELETE
6、UPDATE}{CASCADE
7、SETNULL}例:为XK表设置参照完整性规则。CREATETABLEXK(XHC(8),KHC
8、(3),CJINT,foreignkeyxhreferencesxs(xh)ondeletecascadeonupdatecascade)请问:KH如何设置参照完整性?5.注意:在VFP中,通过对数据库表建立连接,实现参照完整性。方法:在主表中对主码建主索引,次表中建普通索引。通过鼠标操作。然后设置参照完整性。第三节断言与触发器一断言1.定义设置数据库应满足的条件;2.格式:CREATEASSERTION断言名CHECK条件说明:当条件为假时,DBMS终止操作,并提示用户。例:限制每门课的选课人数不能超过100人。CREATEASSERTIONRSXZCHECK100>=ALL(SE
9、LECTCOUNT(XH)FROMXKGROUPBYKH请问:如何写一断言限制学生选课门数超过8门。CREATEASSERTIONXKMSCHECK(8>=ALL(SELECTCOUNT(*)FROMXKGROUPBYXH)触发器1.事件:引起数据库的状态发生改变的操作。2.定义:当设定的事件发生时,由DBMS自动启动的维护数据库一致性的程序。3.触发事件:能够启动触发器的事件。删除(DELETE),插入(INSERT),更新(UPDATEOF属性。触发时间:BEFOR;在操作前触发AFTER:在操作后触发INSTEADOF:取代操作。3触发条件:执行触发器操作的条件。4触发粒度:引
10、起触发器工作的数据单位。行粒度:(FOREACHROW)表粒度(FOREACHSTATMENT)5操作:一组SQL语句,或其他语句。三语句与执行1格式:CREATETRIGGER触发器名{before
11、after
12、insteadof属性{insert
13、delete
14、updateof属性名}ON表名referencing[oldas元组名][newas元组名][oldtableas表名][newtableas表名][foreachrow
15、forstateme