1 / 61
文档名称:

第六章DB保护..ppt

格式:ppt   大小:179KB   页数:61页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

第六章DB保护..ppt

上传人:q1188830 2018/6/9 文件大小:179 KB

下载得到文件列表

第六章DB保护..ppt

相关文档

文档介绍

文档介绍:●数据的完整性约束;
●事务并发控制;
●数据的安全性;
●数据恢复;
注:数据库的保护问题由数据库共享引起来的。
主要内容:
第六章数据库保护
重点:
●数据的完整性约束
●事务并发控制。
第一节数据库的完整性
DB的完整性:指DB中数据的正确性和相容性(有效性)。
保证DB中的数据完整性是防止合法用户使用数据库时向DB中加入语义不合法的数据。
一、DB中的数据完整性约束
约束是通过限制列、元组中的数据和关系之间的数据来保证数据完整性的方法。
1、数据完整性约束的类别
数据完整性约束可在DB中数据的三个级别上进行:
列级(域级):类型、取值范围、精度、排序等方面的约束。
元组级:对记录中各个字段间联系的约束。
关系级:对若干记录间,关系集合上以及关系间联系的约束。
在三个级别上,可分静态和动态考虑约束:
静态约束:反映DB状态合理性的约束。动态约束:反映DB状态变迁的约束。
综合以上两个方面,将完整性约束分为六类

(1)静态列级约束
①对数据域类型的约束:数据的类型、长度、单位、精度等。
②对数据格式的约束。
如:对学号的格式,规定前2位入学年份,后4位表示顺序号等。
③对域的取值范围的约束:如:成绩取值0-100。
④对空值的约束:空值表示未定义或未知的值,它与零值或空格不同。如:主关键字不允许为空值,成绩可为空值。
⑤其它约束:如:关于列的排序说明,组合列等。
(2)静态元组的约束
指规定组成一个元组的各列之间的约束关系。
如:教师关系中包含职称,工资等列,并规定教授的工资不能低于800元。
(3)静态关系的约束
一个关系中,各元组之间存在的联系或约束。
包括:
实体完整性约束。
参照完整性约束。
函数依赖约束:由模式保持函数依赖。
统计约束:某个字段值与一个关系多个元组的统计值之间的约束关系。
如:规定部门经理的工资不得高于职工平均工资的5倍,低于职工平均工资的2倍,而平均工资值为统计计算值。

(1)动态列级约束
修改列定义时的约束。如:若将原来允许空值的列改为不允许为空值时,如果该列目前已存在空值则会拒绝修改。
修改列值时的约束。修改列值时需参考旧值,并且新旧值之间需要满足某种约束条件,如:学生年龄只能增长等。
(2)动态元组约束
指修改某个元组值时需要参考旧值,且新旧值之间需要满足某种约束条件。
如:工资调整不得低于原来工资+工龄*。
(3)动态关系约束
指加在关系变化前后状态上的限制条件。
如:事条一致性,原子性等约束。
二、完整性控制
1、DBMS的完整性子系统
DB数据完整性是通过DBMS的完整性子系统实现的。
①完整性子系统的功能
定义功能:即提供定义完整性约束条件的机制。
检查功能:检查用户的操作请求是否违背了完整性约束条件。
处理功能:若违背了完整性约束条件,采取一定的动作(如报错)保证完整性。
注:
●完整性检查不针对数据的“准确性”,对针对数据的“正确性”和“有效性”。
如:一个职工“工资”是350元,却输入了“530”,而“530”在“工资”取值范围内是一个有效值。
●完整性约束条件由DDL语言描述并定义到DB的数据字典中,由系统管理员修改; DBMS中的完整性子系统按约束条件执行和处理违规情况。
②完整性检查时机
a、用户执行完一条指令或语句时,立即检查——立即执行的约束。
b、当执行延迟到整个事务执行结束后检查——延迟执行的约束。
如:银行DB中“借贷总金额应平衡”的约束为延迟性执行的约束。从帐号A转一笔钱到帐号B为一个事务,从帐号A转出去钱后,帐就不平了,必须等转入帐号B后,帐才能重新平衡,这时才能进行完整性检查。
关系DB中三类完整性约束:
实体完整性约束:主键约束(primary key)、唯一索引(unique
index)等。
参照完整性约束:外键约束(foreign key)。
用户定义完整性约束(其它完整性归结此约束中):值检查
(check )、唯一性(unique)非空(not null)、类型定义等。
2、关于数据完整性的有关问题
参照完整性约束处理的问题:
①外来关键字是否可以接受空值。
外来关键字是否可以接受空值,视应用环境的语义而定。
例:
在“部门-职工”关系中,EMP关系包含有外码Deptno,某一元组的这一列值为空值,表示这个职工尚未分配到任何具体的部门工作,这与应用环境的语义是相符的。
又如:
在“学生-选课”关系中,S关系为被参照关系,主码为Sno;SC为参照关系,外码为Sno,若SC中的Sno为空值,则表明尚不存在的某个学生,或者不知的某个学号的学生,选修了某门课程,在grade列中有成绩,这与学校的应用不相符合,因此SC的Sno列不能取空值。
故系统除了