版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章关系数据库及保护1.关系模型及其定义2.数据库保护11.关系模型及其定义关系数据库系统:是支持关系模型的数据库系统。关系模型:由数据结构、关系操作集合和完整性约束三局部组成。1)关系数据结构2)关系操作概述21)关系数据结构(page39)关系模型建立在集合代数的根底上,从集合论的角度给出关系数据结构的形式化定义:域〔Domain〕定义:是一组具有相同数据类型的值的集合基数:元组的个数理解:表格中的一个列。举例:①学号:第1位数是“S〞,表示学生,2-3两位数是入学年号,4-6三位数是序号。②年龄:大于0小于200的整数。③性别:男、女④成绩:0~100的整数3关系数据结构笛卡尔积〔CartesianProduct〕定义:给定一组域D1,D2,…,Dn,这些域中可以有相同的。D1,D2,…,Dn的笛卡尔积为:D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}说明:①每一个元素(d1,d2,…,dn)叫作一个n元组(n-tuple),或简称为元组(Tuple)。②元素中的每一个值di叫作一个分量(Component)。③假设Di(i=1,2,…,n)为有限集,其基数(Cardinalnumber)为mi(i=1,2,…,n),那么D1×D2×…×Dn的基数M为:45关系数据结构关系〔Relation〕定义:D1×D2×…×Dn的子集叫作在域D1、D2、…、Dn上的关系,表示为:R(D1,D2,…,Dn)这里R表示关系的名字,n是关系的目或度(Degree)。举例:一个导师只有一个专业,一个学生只能有一个导师,一个导师可以指导多个学生,如图6关系数据结构理解:①关系中的每个元素是关系中的元组,通常用t表示。②关系是笛卡积的子集,所以关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。③由于域可以相同,为了加以区分,必须对每列起一个名字,称为属性(Attribute),n目关系必有n个属性。域与属性的区别与联系7关系数据结构④假设关系中的某一属性组的值能唯一地标识一个元组,那么称该属性组为候选码(Candidatekey)。假设一个关系有多个候选码,那么选定其中一个为主码(Primarykey)。主码的诸属性称为主属性(Primeattribute)。在最极端的情况下,关系模式的所有属性组是这个关系模式的侯选码,称为全码(All-key)。⑤不包含在任何侯选码中的属性称为非码属性(Non-keyattribute)。主码由多个属性组成主码由所有属性组成〔全码〕8关系数据结构关系的三种类型三种类型:根本表〔或基表〕、查询表和视图表。根本表:实际存在的表,它是实际存储数据的逻辑表示。查询表:查询结果对应的表。视图表:由根本表或其他视图表导出的表,是虚表,不对应实际存储的数据。根本表应该具有的性质〔后面将详细介绍〕:9关系性质1——同质的列学号姓名性别年龄曾用名0101张三男20张狗子0102李四女18王五0103119王麻子0104赵六21981/2/28赵薇10关系性质2——不同的属性名学号姓名性别年龄姓名0101张三男20张狗子0102李四女180103王五男19王麻子0104赵六女20赵薇姓名2曾用名11关系性质3——属性无序学号姓名性别年龄曾用名0101张三男20张狗子0102李四女180103王五男19王麻子0104赵六女20赵薇学号姓名曾用名性别年龄0101张三张狗子男200102李四女180103王五王麻子男190104赵六赵薇女2012关系性质4——元组不重复学号姓名性别年龄姓名0101张三男20张狗子0102李四女180103王五男19王麻子0104赵六女20赵薇0101张三男20张狗子重复的元组重复的元组!13关系性质5——元组无序学号姓名性别年龄0101张三男200102李四女180103王五男190104赵六女20学号姓名性别年龄0104赵六女200101张三男200103王五男190102李四女1814关系性质6——分量是原子父母孩子李男王男丁女肖女李一李二王一父母孩子大小李男王男丁女肖女李一王一李二父母孩子李男李男王男丁女丁女肖女李一李二王一父母大孩小孩李男王男丁女肖女李一王一李二非标准化关系标准化关系15关系数据结构关系数据库定义:在一个给定的应用领域中,所有实体及实体之间的联系的关系的集合构成一个关系数据库。理解:①在关系数据库中,实体以及实体间的联系都是用关系来表示的。②关系数据库也有型和值之分。关系数据库的型也称为关系数据库模式,是对关系数据库的描述,是关系模式的集合。关系数据库的值也称为关系数据库,是关系的集合。关系数据库模式与关系数据库通常统称为关系数据库。注:依据上下文进行区分。举例:导师实体、研究生实体、导师与研究生之间一对多联系的实体。162)关系操作概述关系操作包括数据查询、数据维护和数据控制三大功能。数据查询:数据查询指数据检索、统计、排序、分组等功能。数据维护:数据维护指数据增加、删除、修改等数据自身更新的功能。数据控制:数据控制是为了保证数据的平安性和完整性而采用的数据存取控制及并发控制等功能。关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式,它是用对关系的运算来表达查询的。关系代数的运算对象是关系,运算结果亦为关系。关系代数的运算分为两类:集合运算和专门的关系运算。关系代数用到的运算符包括四类:集合运算符、专门的关系运算符、算术比较符和逻辑运算符,如以下图所示。集合运算将关系看成元组的集合,其运算是从关系的“水平〞方向即行的角度来进行的。比较运算符和逻辑运算符是用来辅助专门的关系运算符进行操作的。1718关系数据语言关系语言是高度非过程化的语言。关系代数、关系演算均为抽象的查询语言,与具体的DBMS不完全一样。关系代数用对关系的运算来表达查询要求的方式如ISBL关系演算用谓词来表达查询要求的方式。按谓词变元的基本对象分为:元组关系演算(变元的基本对象为元组)域关系演算(变元的基本对象为域)如ALPHA,QUEL如QBESQLStructuredQueryLanguage,具有关系代数、关系演算的双重特点。又可细分为查询、DDL、DML、DCL等几部分。目前关系数据库的标准数据库语言,如T-SQL192.数据库保护1)数据库的平安性2)数据库的完整性3)并发控制4)数据库恢复技术201)关系库的平安性数据库的平安性是指保护数据库,以防止不合法的使用造成的数据泄密、更改或破坏。数据库平安的二个层面:防止非法用户的数据访问防止合法用户的非法数据访问数据库的产生主要是出于数据共享的目的,但共享与平安性是一对矛盾。211)关系库的平安性a.平安性级别环境级:计算机系统的机房和设备应加以保护,防止物理破坏。职员级:工作人员应正确授予用户访问数据库的权限。操作系统级:防止未经授权的用户从操作系统层次访问数据库。网络级:由于几乎所有的数据库系统都允许用户通过终端或网络进行远程访问,因此网络软件内部的平安性是很重要的。数据库系统级:数据库系统的职责是检查用户的身份是否合法及使用数据库的权限是否正确。221)关系库的平安性b.权限和授权 用户〔或应用程序〕使用数据库的方式称为权限。访问权限有以下几个:
1>读〔Read〕权限:允许用户读数据,但不能修改数据。
2>插入〔Insert〕权限:允许用户插入新的数据,但不能修改数据。
3>修改〔Update〕权限:允许用户修改数据,但不能删除数据。
4>删除〔Delete〕权限:允许用户删除数据。
用户修改数据库模式的权限:
1>索引〔Index〕权限:允许用户创立和删除索引。
2>资源〔Resource〕权限:允许用户创立新的关系。
3>修改〔Alteration〕权限:允许用户在关系结构中参加或删除属性。
4>撤销〔Drop〕权限:允许用户撤销关系。231)关系库的平安性c.视图机制视图〔View〕是从一个或多个根本表导出的表。d.数据加密加密的根本思想是根据一定的算法将原始数据〔术语为明文〕变换为不可直接识别的格式〔术语为密文〕,从而使得不知道解密算法的人无法获得数据的内容。加密方法主要有两种:
替换方法;该方法使用密钥〔EncryptionKey〕将明文中的每一个字符转换为密文中的字符。
置换方法:该方法仅将明文的字符按不同的顺序重新排列。242)关系的完整性数据库的完整性是指保证数据的正确性、有效性和相容性,防止错误的数据进入数据库。
正确性是指数据的合法性。
有效性是指数据是否属于所定义的有效范围。
相容性是指表示同一事实的两个数据应相同。
检查数据库中数据是否满足规定的条件称为完整性检查。数据库中数据应该满足的条件称为完整性约束条件,有时也称为完整性规那么。
DBMS中执行完整性检查的子系统称为完整性子系统。它的主要功能有:
检测事务的执行,并测试是否违反完整性规那么。
假设有违反完整性规那么现象,那么采取适当的操作。
三类完整性约束:实体完整性、参照完整性和用户定义的完整性252)关系的完整性实体完整性(EntityIntegrity)规那么:假设属性A是根本关系R的主属性,那么属性A不能取空值。理解:①实体完整性是针对根本表而言的,一个根本表通常对应现实世界的一个实体集。如:学生关系对应于学生的集合。②现实世界中的实体是可区分的,即它们应该具有唯一性标识。相应地,关系模型中以主码作为唯一性标识。③主码中的属性〔即主属性〕不能取空值,不仅是主码整体,而是所有主属性均不能为空。反过来,假设主属性为空值,说明该实体不完整,即违背了实体完整性。举例:学生成绩表中,姓名和课程不能有一个为空或都为空。262)关系的完整性参照完整性(ReferentialIntegrity)外码定义:设F是根本关系R的一个或一组属性,但不是关系R的码,如果F与根本关系S的主码Ks相对应,那么称F是根本关系R的外码(Foreignkey),并称根本关系R为参照关系(Referencingrelation),根本关系S为被参照关系(Referencedrelation)或目标关系(Targetrelation)。关系R和S不一定是不同的关系。理解:目标关系S的主码Ks和参照关系的外码F必须定义在同一个〔或一组〕域上。举例:学生实体与专业实体的关系。272)关系的完整性用户定义的完整性(UserDefinedIntegrity)实体完整性和参照性适用于任何关系数据库系统。此外,往往还需要一些特殊的约束条件,用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。关系数据库系统一般包括如下几种用户定义的完整性约束:①空值〔是否允许为空〕;②唯一性;③取值范围;④缺省值;⑤属性间函数依赖关系。283)并发控制a.事务的根本概念和特性b.事务并发操作可能产生的数据不一致问题c.封锁及封锁协议d.活锁与死锁29a.事务的根本概念和特性并发控制的产生是由于共享的要求,即多个用户程序并发存取同一数据。并发控制单位是事务。事务〔Transaction〕是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。事务具有四个特性,这四个特性也简称为ACID特性。
*原子性〔atomicity〕:即事务是不可分的。*一致性〔consistency〕:一个一致状态到另一个一致状态。所谓一致状态,是语义概念,如转账平衡。*隔离性〔isolation〕:不受其它事务干扰。*持续性〔durability〕:又称永久性〔permanence〕。即提交后改变永久性,其后的故障不影响这一结果。共享与数据一致性是一对矛盾。共享程度高,一致性就差。30b.事务并发操作可能产生的数据不一致问题事务是并发控制的根本单位,保证事务ACID特性是事务处理的重要任务,而事务ACID特性可能遭到破坏的原因之一是多个事务对数据库的并发操作造成的。并发操作与数据的不一致性。数据的不一致性由两个因素造成,即对数据的修改和并行操作的发生。解决的方法是对数据进行封锁,还有时标方法、乐观方法等。数据的不一致性的表现有三:丧失修改〔lostupdate〕不可重复读〔nonrepeatableread〕读“脏〞数据〔dirtyread〕31丧失修改在上例中,事务1和事务2同时操作A,由于不一致,导致A的事务1对A的修改〔A←A-1,如售出一张票〕没有写回数据库。时间事务1事务2t1检索,读A=16
t2
检索,读A=16t3更新,A←A-1写回A=15
t4
更新,A←A-1写回A=1532不可重复读在一事务范围内,两个相同查询将返回不同数据。由于查询注意到其它提交事务的修改而引起的。事务1读取某数据,事务2对其做了修改〔得到与前一次不同的值〕、删除〔记录消失〕、插入〔多了记录〕。其中删除和插入即所称的幻行〔phantomrow〕现象。括号中表示事务再次读取该数据时得到的结果。时间事务1事务2t1检索,读B=200
t2
检索,读B=200t3更新,B←B*2写回B=400t4检索,读B=400
33读“脏〞数据如果事务T1将一值〔C〕修改,然后事务T2读该值,在这之后T1由于某种原因撤销对该值的修改,这样就造成T2读取的值是脏的〔与数据库中的数据不一致,为不正确数据,称为“脏数据〞〕。时间事务T1事务T2t1检索,读C=200
t2更新,C←C+100写回C=300t3检索,读C=300t4撤销(ROLLBACK)34c.封锁及封锁协议并发控制的主要技术是封锁〔Locking〕所谓封锁就是事务T在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他的事务对此数据对象的操作受到限制。确切的控制由封锁的类型决定,根本的封锁类型有两种:排它锁〔ExclusiveLocks,简称X锁〕共享锁〔ShareLocks,简称S锁〕35排它锁排它锁又称为写锁。假设事务T对数据对象A加上X锁,那么只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。这就保证了其他事务在T释放A上的锁之前不能再读取和修改A。36共享锁共享锁又称为读锁。假设事务T对数据对象A加上S锁,那么事务T可以读A但不能修改A,其他事务只能对事务A加S锁,而不能加X锁,直到T释放A上的S锁。这就保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。37封锁协议所谓封锁协议〔lockingprotocal〕就是描述何时申请、持锁时间、何时释放的封锁规那么。对封锁方式规定不同的规那么,就形成了各种不同的封锁协议。三级封锁协议是其中的重要一种。它在不同级别上分别解决了丧失修改、不可重复读和读“脏〞数据等不一致性问题。不同的封锁协议到达的系统一致性级别是不同的。38一级封锁协议1级封锁协议〔防丧失修改〕:事务T在修改数据〔读不加锁〕R之前必须先对其加X锁,直到事务结束〔COMMIT或ROLLBACK〕才释放。未加封锁协议1级封锁协议检索,读A更新,A←A-1写回CommitXlockA获得锁读A更新,A←A-1写回CommitUnlockA39二级封锁协议2级封锁协议〔防丧失修改和防读“脏数据〞〕:1级封锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁〔不能保证可重复读〕。(例子见page50(c))40三级封锁协议3级封锁协议〔防丧失修改+防读“脏数据〞+防不可重复读〕:1级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。(例子见page50(b))41不同级别的封锁协议排他锁X共享锁S一致性保证操作结束释放事务结束释放操作结束释放事务结束释放不丢失数据不污读可重复读一级封锁协议√二级封锁协议√√三级封锁协议√√42d.活锁与死锁与操作系统一样,采用封锁的方法可能引起活锁和死锁。这也是采用封锁方式的弱点。在并发控制中,当采用锁方法时就可能出现死锁的情况,可采用所有事务只在提交时才释放锁。因为对每个事务而言都可能在申请了局部资源锁以后,申请锁住已由别的事务锁住资源,从而进入等待状态。假设所有的事务均不能申请到全部的锁那么进入永远的相互等待状态,从而进入死锁。43活锁事务T1封锁了数据对象R后,事务T2也请求封锁R,于是T2等待。接着T3也请求封锁R。T1释放R上的锁后,系统首先批准了T3的请求,T2只得继续等待。接着T4也请求封锁R,T3释放R后,系统又批准了T4的请求,如此……,T2有可能就这样永远等待下去。这就是活锁。防止活锁的简单方法是采用先来先效劳的策略。将申请事务放到事务队列中,再依次取出处理。T1T2T3T4……SlockA……UnlockAXlockA等待等待等待等待等待等待等待等待等待等待等待等待……SlockA获得As……UnlockASlockA获得As……UnlockASlockA获得As……UnlockA44死锁如果事务T1封锁了数据A,事务T2封锁了数据B。之后T1又申请封锁数据B,因T2已经封锁了B,于是T1等待T2释放B上的锁。接着T2又申请封锁A,因T1已经封锁了A,T2也只能等待T1释放A上的锁。这样T1和T2两个事务互相等待对方释放,两个事务永远无法结束,形成死锁。目前在数据库中解决死锁问题主要有两类方法,一类是采取一定措施来预防死锁的发生;另一类是允许发生死锁,但采用一定手段定期诊断系统中有无死锁,假设有那么解除死锁。T1T2XlockAXlockB等待等待等待等待等待……XlockB……XlockA等待等待等待……454)数据库恢复技术数据库管理系统必须具有把数据库从错误状态恢复到某一的正确状态〔亦称为一致状态或完整状态〕的功能,这就是数据库的恢复。a.恢复的根本原那么和实现方法b.故障的种类和恢复方法46a.恢复的根本原那么和实现方法要使数据库具有可恢复性的根本原那么就是数据库的重复存储。如何建立冗余数据所谓冗余数据,就是备用的数据文本,称为后备副本,或后援副本如何利用这些已建的冗余数据实施数据库恢复47建立冗余数据数据转储即DBA定期地将整个数据库复制到磁带或另一个磁盘上保存。登记日志文件日志文件是用来记录事务对数据库的更新操作的文件。通常是两种方法一起使用48数据转储静态转储:系统中无运行事务时进行,转储期间不允许存取、修改〔保证得到一致性副本〕。它降低了数据库的可用性。动态转储:与用户事务并发进行,允许存取、修改。需要记录数据库的修改活动〔如建立日志文件〕。海量转储:转储全部数据库内容,这种方式转储数量大,但恢复方便。增量转储:只转储上次转储以来更新过的数据,这种方式适合处理频繁更新的大型数据库。转储量较小,但恢复复杂。方式状态
动态静态海量动态海量静态海量增量动态增量静态增量49登记日志文件日志文件为记录事务对数据库的更新操作的文件。一般有以记录为单位,也有以数据块为单位的。以记录为单位的日志中包括事务开始〔BEGINTRANSACTION〕、结束〔COMMIT或ROLLBACK〕、事务所有的更新操作。以数据块为单位的日志中,如果数据块中的数据有更新,那么记录数据块更新前后的值。日志记录〔logrecord〕包括:事务标识、操作类型〔插、删、改〕、操作对象、更新前
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论