数据库复习资料_第1页
数据库复习资料_第2页
数据库复习资料_第3页
数据库复习资料_第4页
数据库复习资料_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

关系是一种规范化了的二维表中行的集合1、每一列中的分量必须来自同一个域,必须是同一类型的数据。2、不同的列可来自同一个域,每一列称为属性,不同的属性必须有不同的名字。3、列的顺序可以任意交换。4、关系中元组的顺序(即行序)可任意。5、不允许出现相同的元组。6、关系中每一分量必须是不可分的数据项。关系的描述称为关系模式(RelationSchema)R(U,D,DOM,F)R--关系名U--属性名集合D--属性所来自的域DOM--属性向域的映像集合F--属性间数据的依赖关系集合简记为:R(U)或R(A1,A2,…,An)候选键:能惟一标识关系中元组的一个属性或属性集,称为候选键主关系键:从多个候选键中选择一个作为查询、插入或删除元组的操作变量,被选用的候选键称为主关系键。主属性:包含在主关系键中的各个属性称为主属性非码属性:不包含在任何候选键中的属性称为非码属性(或非主属性)全码:所有属性的组合是关系的候选键nn:n候选码为

(T,C,S)教师T学生S课程Cn:nn:n全码关系代数的运算按运算符的不同主要分为两类:传统的集合运算:1、把关系看成元组的集合,以元组作为集合中元素来进行运算,其运算是从关系的“水平”方向即行的角度进行的。2、包括并、差、交和笛卡尔积等运算。专门的关系运算:1、不仅涉及行运算,也涉及列运算,这种运算是为数据库的应用而引进的特殊运算。2、包括选取、投影、连接和除法等运算。并(Union):R∪S={t|t∈R∨t∈S}差(Difference):R-S={t|t∈R∧┐t∈S}交(Intersection):R∩S={t|t∈R∧t∈S}广义笛卡尔积(ExtendedCartesianProduct):R×S={tr⌒ts|tr∈R∧ts∈S}如(a)、(b)所示的两个关系R与S为相容关系,(c)为R与S的并,(d)为R与S的交,(e)为R与S的差,(f)为R与S的广义笛卡尔积。ABABCa1b1c1a1b1c2a2b2c1a2b3c2R∪S(c)ABCABCa1b1c1a1b1c1a1b1c2a2b2c1a2b2c1a2b3c2(a)(b)RSAABCa1b1c1a2b2c1R∩S(d)AABCa1b1c2(e)R-SAABCABCa1b1c1a1b1c1a1b1c1a2b2c1a1b1c1a2b3c2a1b1c2a1b1c1a1b1c2a2b2c1a1b1c2a2b3c2a2b2c1a1b1c1a2b2c1a2b2c1a2b2c1a2b3c2(f)图2-3传统的集合运算R×S 学生实体及其内部的一对多联系学生(学号,姓名,性别,专业号,年龄,班长)“学号”是主码,“班长”是外码,它引用了本关系的“学号”“学号”是主码,“班长”是外码,它引用了本关系的“学号”

“班长”必须是确实存在的学生的学号[例2]:选修关系的“学号”与学生关系的主码“学号”相对应选修关系的“课程号”与课程关系的主码“课程号”相对应“学号”和“课程号”是选修关系的外码学生关系和课程关系均为被参照关系选修关系为参照关系〔例3〕:选修(学号,课程号,成绩)“学号”和“课程号”可能的取值:(1)选修关系中的主属性,不能取空值(2)只能取相应被参照关系中已经存在的主码值运算符含义运算符含义专门的关系运算符Σл▷◁÷选择投影连接除逻辑运算符¬∧∨非与或[例3]查询学生的姓名和所在系[例3]查询学生的姓名和所在系

即求Student关系上学生姓名和所在系两个属性上的投影

πSname,Sdept(Student)

或π2,5(Student)

结果:选择选择[例2]查询年龄小于20岁的学生

σSage<20(Student)

或σ4<20(Student)

结果: SnameSdept李勇CS刘晨IS王敏MA张立ISSnoSnameSsexSageSdept200215122刘晨女19IS200215123王敏女18MA200215125张立男19IS2)投影操作主要是从列的角度进行运算但投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)ππ3)两类常用连接运算等值连接(equijoin)什么是等值连接θ为“=”的连接运算称为等值连接等值连接的含义trtrtsA=BRS={|trR∧tsS∧tr[A]=ts[B]}A=B自然连接(Naturaljoin)自然连接是一种特殊的等值连接两个关系中进行比较的分量必须是相同的属性组在结果中把重复的属性列去掉自然连接的含义trtstrtsRS={|trR∧tsS∧tr[B]=ts[B]}C<E一般连接RS的结果如下:C<E[例12]若表上建有视图,选择RESTRICT[例12]若表上建有视图,选择RESTRICT时表不能删除

CREATEVIEWIS_Student

AS

SELECTSno,Sname,Sage

FROMStudent

WHERESdept='IS';

DROPTABLEStudentRESTRICT;

--ERROR:cannotdroptableStudentbecauseother

objectsdependonit

1.基本表本身独立存在的表SQL中一个关系就对应一个基本表一个(或多个)基本表对应一个存储文件一个表可以带若干索引2.存储文件逻辑结构组成了关系数据库的内模式物理结构是任意的,对用户透明3.视图从一个或几个基本表导出的表数据库中只存放视图的定义而不存放视图对应的数据视图是一个虚表用户可以在视图上再定义视图数据查询 数据查询SELECT[ALL|DISTINCT]<目标列表达式>数据查询[,<目标列表达式>]…FROM<表名或视图名>[,<表名或视图名>]…[WHERE<条件表达式>][GROUPBY<列名1>[HAVING<条件表达式>]][ORDERBY<列名2>[ASC|DESC]];查询条件谓词比较=,>,<,>=,<=,!=,<>,!>,!<;NOT+上述比较运算符确定范围BETWEENAND,NOTBETWEENAND确定集合IN,NOTIN字符匹配LIKE,NOTLIKE空值ISNULL,ISNOTNULL多重条件(逻辑运算)AND,OR,NOT表3.5ANY(或SOME),ALL谓词与聚集函数、IN谓词的等价转换关系表3.5ANY(或SOME),ALL谓词与聚集函数、IN谓词的等价转换关系

=<>或!=<<=>>=ANYIN--<MAX<=MAX>MIN>=MINALL--NOTIN<MIN<=MIN>MAX>=MAX1、语句格式 INSERT INTO<表名>[(<属性列1>[,<属性列2>…)] VALUES(<常量1>[,<常量2>]…)功能将新元组插入指定表中2、INTO子句属性列的顺序可与表定义中的顺序不一致没有指定属性列指定部分属性列3、VALUES子句提供的值必须与INTO子句匹配值的个数值的类型属性组U上的一组函数依赖F:F={Sno→Sdept,Sdept→Mname,(Sno,Cname)→Grade}SnoSnoCnameSdeptMnameGrade把这个单一模式分成3个关系模式:S(Sno,Sdept,Sno→Sdept);SC(Sno,Cno,Grade,(Sno,Cno)→Grade);DEPT(Sdept,Mname,Sdept→Mname) 在关系模式R(U)中,对于U的子集X和Y,如果X→Y,但YX,则称X→Y是非平凡的函数依赖若X→Y,但YX,则称X→Y是平凡的函数依赖例:在关系SC(Sno,Cno,Grade)中,非平凡函数依赖:(Sno,Cno)→Grade平凡函数依赖:(Sno,Cno)→Sno(Sno,Cno)→Cno若X→Y,则X称为这个函数依赖的决定属性组,也称为决定因素(Determinant)。若X→Y,Y→X,则记作X←→Y。若Y不函数依赖于X,则记作X→Y。定义6.2在R(U)中,如果X→Y,并且对于X的任何一个真子集X’,都有X’Y,则称Y对X完全函数依赖,记作XFY。若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作XPY。[例1]中(Sno,Cno)→Grade是完全函数依赖,(Sno,Cno)→Sdept是部分函数依赖因为Sno→Sdept成立,且Sno是(Sno,Cno)的真子集若R∈3NF,则每一个非主属性既不部分依赖于码也不传递依赖于码。例4:2NF关系模式S-L(Sno,Sdept,Sloc)中函数依赖:Sno→SdeptSdept→SnoSdept→Sloc可得:Sno→Sloc,即S-L中存在非主属性对码的传递函数依赖,S-L∈3NFS-LS-LSnoSdeptSloc函数依赖图:等价于:每一个决定属性因素都包含码若R∈BCNF所有非主属性对每一个码都是完全函数依赖所有的主属性对每一个不包含它的码,也是完全函数依赖没有任何属性完全函数依赖于非码的任何一组属性充分充分不必要R∈BCNFR∈3NF[例5]关系模式C(Cno,Cname,Pcno)C∈3NFC∈BCNF[例6]关系模式S(Sno,Sname,Sdept,Sage)假定S有两个码Sno,SnameS∈3NF。S∈BCNF[例7]关系模式SJP(S,J,P)函数依赖:(S,J)→P;(J,P)→S(S,J)与(J,P)都可以作为候选码,属性相交SJP∈3NF,SJP∈BCNFR∈BCNF充分不必要R∈充分不必要充分必要如果R∈充分必要R∈BCNFR∈3NF例:S-L(Sno,Sdept,Sloc)F={Sno→Sdept,Sdept→Sloc,Sno→Sloc}S-L∈2NF分解方法可以有多种:1.S-L分解为三个关系模式:SN(Sno) SD(Sdept) SO(Sloc)2.SL分解为下面二个关系模式: NL(Sno,Sloc) DL(Sdept,Sloc)3.将SL分解为下面二个关系模式: ND(Sno,Sdept) NL(Sno,Sloc)不可重复读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。读“脏”数据是指:事务T1修改某一数据,并将其写回磁盘事务T2读取同一数据后,T1由于某种原因被撤销这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致T2读到的数据就为“脏”数据,即不正确的数据T1T2①R(A)=16②R(A)=16③A←A-1W(A)=15W④A←A-1W(A)=15不可重复读包括三种情况:(1)事务T1读取某一数据后,事务T2对其做了修改,当事务T1再次读该数据时,得到与前一次不同的值T1T2①R(A)=50R(B)=100求和=150②R(B)=100B←B*2(B)=200③R(A)=50R(B)=200和=250(验算不对)丢失修改丢失修改T1读取B=100进行运算T1读取B=100进行运算

T2读取同一数据B,对其进行修改后将B=200写回数据库。

T1为了对读取值校对重读B,B已为200,与第一次读取值不一致T1T1将C值修改为200,T2读到C为200

T1将C值修改为200,T2读到C为200

T1由于某种原因撤销,其修改作废,C恢复原值100

这时T2读到的C为200,与数据库内容不一致,就是“脏”数据①R(C)=100C←C*2W(C)=200②R(C)=200③ROLLBACKC恢复为100数据不一致性:由于并发操作破坏了事务的隔离性并发控制就是要用正确的方式调度并发操作,使一个用户事务的执行不受其他事务的干扰,从而避免造成数据的不一致性1、什么是封锁2、基本封锁类型3、锁的相容矩阵封锁就是事务T在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。一个事务对某个数据对象加锁后究竟拥有什么样的控制由封锁的类型决定。基本封锁类型排它锁(ExclusiveLocks,简记为X锁)排它锁又称为写锁共享锁(ShareLocks,简记为S锁)排它锁又称为写锁若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁保证其他事务在T释放A上的锁之前不能再读取和修改A共享锁又称为读锁若事务T对数据对象A加上S锁,则其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁保证其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改Y=Yes,相容的请求Y=Yes,相容的请求

N=No,不相容的请求T1T2XS-XNNYSNYY-YYY 使用封锁机制解决丢失修改问题使用封锁机制解决丢失修改问题T1没有丢失修改T2没有丢失修改①XlockA事务T1在读A进行修改之前先对A加X锁事务T1在读A进行修改之前先对A加X锁

当T2再请求对A加X锁时被拒绝

T2只能等待T1释放A上的锁后T2获得对A的X锁

这时T2读到的A已经是T1更新过的值15

T2按此新的A值进行运算,并将结果值A=14送回到磁盘。避免了丢失T1的更新。②R(A)=16XlockA③A←A-1等待W(A)=15等待Commit等待UnlockA等待④获得XlockAR(A)=15A←A-1⑤W(A)=14CommitUnlockAT1可重复读T2可重复读①SlockASlockB事务

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论