1第二章关系模型2.1关系模型概述2.2关系数据结构及形式化定义2.3关系的完整性2.4关系代数2.5关系演算2.6小结2.1关系模型概述22.1概述E.F.Codd于70年代初提出关系数据理论,他因此获得1981年的ACM图灵奖关系理论是建立在集合代数理论基础上的,有着坚实的数学基础早期代表系统SystemR:由IBM研制INGRES:由加州Berkeley分校研制目前主流的商业数据库系统Oracle,Informix,Sybase,SQLServer,DB2Access,Foxpro,Foxbase32.1概述数据结构:二维表关系操作:查询(Query):•选择(select)、投影(project)、连接(join)•除(divide)、并(union)、交(intersection)•差(difference)增加(insert)、删除(delete)、修改(updated)关系代数,关系演算,SQL关系的三类完整性约束实体完整性、参照完整性、用户自定义的完整性42.1概述•关系代数是用对关系的运算来表达查询要求的方式。•关系演算是用谓词表达查询要求的方式。•按谓词变元的基本对象是元组变量还是域变量分为元组关系演算和域关系演算52.1概述•具体系统中的实际语言•SQL介于关系代数和关系演算之间,由IBM公司研制systemR时提出•QUEL基于Codd提出的元组关系演算语言ALPHA,在INGRES上实现•QBE基于域关系演算,由IBM公司研制62.2关系数据结构及形式化定义inim1域(Domain)一组值的集合,这组值具有相同的数据类型如:整数的集合、字符串的集合、全体学生的集合笛卡尔积(Car’tesianProduct)一组域D1,D2,…,Dn的笛卡尔积为:D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,…,n}笛卡尔积的每个元素(d1,d2,…,dn)称作一个n-元组(n-tuple)元组的每一个值di叫做一个分量(component)若Di的基数为mi,则笛卡尔积的基数为72.2关系数据结构及形式化定义(续)例:设D1为学生集合(T)={张群,徐晶,王刚}D2为性别集合(S)={男,女}则D1×D2是个二元组集合,元组个数为3×2,是所有可能的(学生,性别)元组集合TS张群男张群女徐晶男徐晶女王刚男王刚女D1×D2=82.2关系数据结构及形式化定义(续)例:设D1为教师集合(T)={t1,t2}D2为学生集合(S)={s1,s2,s3}D3为课程集合(C)={c1,c2}则D1×D2×D3是个三元组集合,元组个数为2×3×2,是所有可能的(教师,学生,课程)元组集合笛卡尔积可表为二维表的形式TSCt1s1c1t1s1c2t1s2c1………t2s3c2域(课程集合)元组92.2关系数据结构及形式化定义(续)关系笛卡尔积D1×D2×…×Dn的子集叫做在域D1,D2,…,Dn上的关系,用R(D1,D2,…,Dn)表示R是关系的名字,n是关系的度或目关系是笛卡尔积中有意义的子集关系也可以表示为二维表关系TEACH(T,S,C)TSCt1s1c1t1s1c2t1s2c1t2s3c2元组属性102.2关系数据结构及形式化定义(续)关系的性质列是同质的行列的顺序无关紧要任意两个元组不能完全相同每一分量必须是不可再分的数据。不同的属性,属性名不能相同学生姓名学号年月出生日期日112.2关系数据结构及形式化定义(续)数据结构单一的数据结构——关系实体集、联系都表示成关系DEPT(D#,DN,DEAN)S(S#,SN,SEX,AGE,D#)C(C#,CN,PC#,CREDIT)TEACH(P#,C#)SC(S#,C#,SCORE)PROF(P#,PN,D#,SAL)学生课程选修属于系教师教授工作122.2关系数据结构及形式化定义(续)候选码(CandidateKey)关系中的一个属性组,其值能唯一标识一个元组。若从属性组中去掉任何一个属性,它就不具有这一性质了,这样的属性组称作候选码如DEPT中的D#,DN都可作为候选码任何一个候选码中的属性称作主属性如SC中的S#,C#主码(PrimaryKey)进行数据库设计时,从一个关系的多个候选码中选定一个作为主码如可选定D#作为DEPT的主码外部码(ForeignKey)关系R中的一个属性组,它不是R的码,但它与另一个关系S的码相对应,则称这个属性组为R的外部码如S关系中的D#属性132.2关系数据结构及形式化定义(续)关系模式关系的描述称作关系模式,包括关系名、关系中的属性名、属性向域的映象、属性间的数据依赖关系等,记作R(A1,A2,…,An)属性向域的映象一般直接说明为属性的类型、长度等某一时刻对应某个关系模式的内容(元组的集合)称作关系关系模式是型,是稳定的关系是某一时刻的值,是随时间不断变化的142.2关系数据结构及形式化定义(续)关系数据库其型是关系模式的集合,即数据库描述,称作数据库的内涵(Intension)其值是某一时刻关系的集合,称作数据库的外延(Extension)152.3关系的完整性关系模式的完整性实体完整性•关系的主码中的属性值不能为空值•空值:不知道或无意义•意义:关系对应到现实世界中的实体集,元组对应到实体,实体是相互可区分的,通过主码来唯一标识,若主码为空,则出现不可标识的实体,这是不容许的学号姓名性别系名0101张男CS0102李女CS0203赵男MA162.3关系的完整性(续)参照完整性•如果关系R2的外部码Fk与关系R1的主码Pk相对应,则R2中的每一个元组的Fk值或者等于R1中某个元组的Pk值,或者为空值•意义:如果关系R2的某个元组t2参照了关系R1的某个元组t1,则t1必须存在•例如关系S在D#上的取值有两种可能•空值,表示该学生尚未分到任何系中•若非空值,则必须是DEPT关系中某个元组的D#值,表示该学生不可能分到一个不存在的系中DEPT(D#,DN,DEAN)S(S#,SN,SEX,AGE,D#)172.3关系的完整性(续)学号姓名性别系名0101张男CS0102李女CS0203赵男MA课号课名CS145数据库CS148操作系统CS180数据结构学号课号成绩0101CS145880101CS148900102CS180870203CS14578182.3关系的完整性(续)供应商号供应商名所在城市B01红星北京S10宇宙上海T20黎明天津Z01立新重庆零件号颜色供应商号010红B01312白S10201蓝T20今要向关系P中插入新行,新行的值分别列出如下。哪些行能够插入?A.(‘037’,‘绿’,null)B.(null,‘黄’,‘T20’)C.(‘201’,‘红’,‘T20’)D.(‘105’,‘蓝’,‘B01’)E.(‘101’,‘黄’,‘T11’)零件关系P(主码是“零件号”,外码是“供应商号”)供应商关系S(主码是“供应商号”)192.3关系的完整性(续)用户定义的完整性•用户针对具体的应用环境定义的完整性约束条件•如S#要求是8位整数,SEX要求取值为“男”或“女”系统支持•实体完整性和参照完整性由系统自动支持•系统应提供定义和检验用户定义的完整性的机制20关系代数属于关系操作的一种关系代数是一种抽象的查询语言通过对关系的运算来表达查询操作运算对象、结果均为关系运算符集合运算符、专门的关系运算符、比较运算符、逻辑运算符21关系代数——运算符222.4关系代数基本运算一元运算•选择、投影多元运算•笛卡儿积、并、集合差其它运算集合交、自然连接、除、赋值扩展运算广义投影、外连接、聚集修改操作插入、删除、更新232.4关系代数(续)并运算定义所有至少出现在两个关系中之一的元组集合RS={r|rRrS}RS两个关系R和S若进行并运算,则它们必须是相容的:•关系R和S必须是同元的,即它们的属性数目必须相同•对i,R的第i个属性的域必须和S的第i个属性的域相同242.4关系代数(续)并运算ABC367257723443RABC345723SABC367257723443345R∪S252.4关系代数(续)262.4关系代数(续)2.4关系代数(续)ABCabcbafcbdRSABCbgabafDEFghijklTABCabcbafcbdbgaR∪S272.4关系代数(续)差运算定义所有出现在一个关系而不在另一关系中的元组集合RS={r|rRrS}R和S必须是相容的RS282.4关系代数(续)差运算ABC367257723443RABC345723SABC367257443R-SABC345S-R292.4关系代数(续)302.4关系代数(续)ABCabcbafcbdRSABCbgabafDEFghijklTABCabccbdR-S312.4关系代数(续)交运算定义所有同时出现在两个关系中的元组集合RS={r|rRrS}交运算可以通过差运算来重写RS=R(RS)RS322.4关系代数(续)交运算ABC367257723443RABC345723SABC723R∩S332.4关系代数(续)342.4关系代数(续)ABCabcbafcbdRSABCbgabafDEFghijklTABCbafR∩S352.4关系代数(续)广义笛卡尔积元组的连串(Concatenation)若r=(r1,…,rn),s=(s1,…,sm),则定义r与s的连串为:定义两个关系R,S,其度分别为n,m,则它们的笛卡尔积是所有这样的元组集合:元组的前n个分量是R中的一个元组,后m个分量是S中的一个元组RS的度为R与S的度之和,RS的元组个数为R和S的元组个数的乘积rs=(r1,…,rn,s1,…,sm)RS={rs|rRsS}362.4关系代数(续)AB12RCD10102010EaabbSAB11112222CD1010201010102010EaabbaabbRxS372.4关系代数(续)ABCabcbafcbdRSABCbgabafDEFghijklTR.AR.BR.CS.AS.BS.CabcbgaabcbafbafbgabafbafcbdbgacbdbafR×S382.4关系代数(续)记号说明给定关系模式R(A1,A2,…,An),设R是它的一个具体的关系,tR是关系的一个元组•分量设tR,则t[Ai]表示元组t中相应于属性Ai的一个分量•属性列Ai={Ai1,Ai2,…,Aik}{A1,A2,…,An},称A为属性列Ā表示{A1,A2,…,An}中去掉A后剩余的属性组t[Ai]=(t[Ai1],t[Ai2],…,t[Aik])•象集给定关系R(X,Z),X和Z为属性组。当t[X]=x时,x在R中的象集(ImagesSet)为:Zx={t[Z]|t∈R,t[X]=x},它表示R中属性组X上值为x的诸元组在Z上分量的集合。392.4关系代数(续)学号姓名性别系别0101张男CS0102李女CS0203赵男MA0103吴女CS关系模式:学生(学号,姓名,性别,系别)元组t:(0102,李,女,CS)t[性别]:女属性组X:{性别,系别}t[性别,系别]:(女,CS)属性组Z:{学号,姓名}t[X]=(女,CS)象集Zx=?CS系全部女生的学号,姓名XZX=(女,CS),Zx=?XZ姓名课程张蕊物理王红数学张蕊数学x=张蕊Zx课程数学物理张蕊同学所选修的全部课程从R中选出在X上取值为张蕊的元组,去掉X上的分量,只留Z上的分量402.4关系代数(续)选择运算基本定义在关系R中选择满足给定条件的元组(从行的角度)F(R)={t|tR,F(t)=‘真’}F是选择的条件,tR,F(t)要么为真,要么为假F的形式:由逻辑运算符连接算术表达式而成逻辑表达