1、 关系模型 关系数据结构的形式化定义 关系完整性 关系代数 值得记住的 1970年,E.F.Codd提出关系数据库理论基础 关系数据库试验系统System R,INGRES 目前流行的RDBMS DB2,Oracle,Ingres,Sybase,Informix等 关系模型由以下三部分组成 关系数据结构 关系(一张二维表)关系操作:查询操作 选择(Select)、投影(Project)、连接(Join)、除(Divide)、并(Union)、交(Intersection)、差(Difference)更新操作 增加(Insert)、删除(Delete)、修改(Update)关系完整性约束 实体完
2、整性、参照完整性、用户定义完整性关系的两个关系的两个不变性不变性,由系统自动支持由系统自动支持由应用语由应用语义约束义约束 关系操作特点:操作对象和结果都是集合 高度非过程化的语言,不必借助循环结构就可以完成数据操作,能嵌入高级语言中使用关系数据语言关系代数语言关系演算语言具有关系代数和关系演算双重特点的语言元组关系演算语言域关系演算语言例如ISBL例如APLHA,QUEL例如QBE例如SQL三种语言在表达能力上完全等价 关系代数语言 把关系当作集合,用集合运算和特殊的关系运算来表达查询要求和条件 是一种抽象的查询语言 关系演算语言 用谓词来表达查询要求和条件 谓词变元的基本对象可以是元组变量
3、或域变量,故可分为元组关系演算和域关系演算两类 是一种抽象的查询语言 SQL 介于关系代数和关系演算之间 集DDL、DML和DCL一身的关系数据语言 关系模型建立在集合代数基础上,从集合论角度讨论 关系的形式化定义 定义定义1:域:域(Domain)一组具有相同数据类型的值的集合,如整数、实数等。形式化表示为D 定义定义2:笛卡尔积:笛卡尔积(Cartesian Product)P47 一组域D1,D2,Dn的笛卡尔积(d1,d2,d3,dn)称为一个元组,元组,di称为一个分量分量 若Di的基数(值的个数)为Mi,则笛卡尔集的基数基数M为1212.(,.)|,1,2,.nniiD DDd d
4、ddD in 1niiMm 计算实例例1:D1=甲,乙,D2=1,2,D3=a,b,c1)D1,D2,D3基数分别是多少?2)D1D2?(基数?)3)D1D2D3?(基数?)笛卡尔集可表示为一个二维表 表中的每行对应一个元组,表中的每列对应一个域请将例子表示为二维表例例2已知三个域已知三个域D1=导师集合导师集合张清正张清正,刘逸刘逸D2=专业集合专业集合计算机计算机,信息信息D3=学生集合学生集合李勇李勇,刘晨刘晨,王敏王敏导师导师专业专业研究生研究生张清正计算机李勇张清正计算机李勇张清正计算机刘晨张清正计算机刘晨张清正计算机王敏张清正计算机王敏张清正信息李勇张清正信息李勇张清正信息刘晨张清
5、正信息刘晨张清正信息王敏张清正信息王敏刘逸计算机李勇刘逸计算机李勇刘逸计算机刘晨刘逸计算机刘晨刘逸计算机王敏刘逸计算机王敏刘逸信息李勇刘逸信息李勇刘逸信息刘晨刘逸信息刘晨刘逸信息王敏刘逸信息王敏D1,D2,D3的笛卡尔积的笛卡尔积计算思考计算思考1)每个域的基数?)每个域的基数?2)计算)计算D1D2D3?基数?基数?3)计算结果中的元组有无实际意义?)计算结果中的元组有无实际意义?D1D2Dn的子集叫做在D1,D2,Dn上的关系关系,表示为 R(D1,D2,Dn)相关术语 候选码候选码:能够唯一标识一个元组元组的属性组(一个关系可以有多个候选码)主码主码:一个关系中选定的一个候选码 主属性主
6、属性:包含在任何候选码中的属性 非主属性非主属性:不包含在任何候选码中的属性 全码全码:若关系模式的所有属性组是这个关系模式的候选码,称为全码(请举例)三种关系类型:基本关系三种关系类型:基本关系(又称基表又称基表)、视图表、查询表、视图表、查询表n:关系的度或目,表的列数,一般称n元关系例已知三个域例已知三个域D1=导师集合导师集合S张清正张清正,刘逸刘逸D2=专业集合专业集合SP计算机计算机,信息信息D3=学生集合学生集合P李勇李勇,刘晨刘晨,王敏王敏计算思考计算思考从笛卡尔集中取出一个子集,选择从笛卡尔集中取出一个子集,选择有意义的结果组成关系有意义的结果组成关系R(导师,专业,研究生导
7、师,专业,研究生)一个研究生只能有一个专业,如李一个研究生只能有一个专业,如李勇和王敏是计算机专业、刘晨是信勇和王敏是计算机专业、刘晨是信息专业息专业导师导师S专业专业SP研究生研究生P张清正计算机李勇张清正计算机李勇张清正计算机刘晨张清正计算机刘晨张清正计算机王敏张清正计算机王敏张清正信息李勇张清正信息李勇张清正信息刘晨张清正信息刘晨张清正信息王敏张清正信息王敏刘逸计算机李勇刘逸计算机李勇刘逸计算机刘晨刘逸计算机刘晨刘逸计算机王敏刘逸计算机王敏刘逸信息李勇刘逸信息李勇刘逸信息刘晨刘逸信息刘晨刘逸信息王敏刘逸信息王敏D1,D2,D3的笛卡尔积(上图)的笛卡尔积(上图)现在导师与研究生是什么关系
8、?限定一个学生只能有一个导师,限定一个学生只能有一个导师,如张是计算机导师,刘是信息如张是计算机导师,刘是信息专业导师专业导师现在导师与研究生是什么关系?关系的限定及扩充 关系数据中的关系是有限集合 为关系的每一列附以属性名以取消关系元组的有序性 关系的性质 列同质,即每一列是同一类型的数据 不同的列可出自同一个域,每一列为一个属性属性,不同的属性被赋予不同的属性名 列的次序可以任意交换 任意两个元组不能完全相同 行的次序可以任意交换 分量必须取原子值,即不可再分在许多实际关系数据库产品中,基本表并不完全具有这六条性质。在许多实际关系数据库产品中,基本表并不完全具有这六条性质。思考:描述关系需
9、要那些方面的信息呢?关系模式是对关系的描述,形式化表示为R(U,D,dom,F)U:组成该关系的属性名集合D:属性组U中属性所来自的域dom:属性向域的映象集合,如属性的类型、长度F:属性间数据的依赖关系集合可简记为R(U)或R(A1,A2,An),其中Ai为属性名 关系模式与关系 关系模式是型,是对关系的描述,是静态的,稳定的。关系是值,由赋予它的元组语义来确定的,是动态的,不断变化的 关系是关系模式在某一时刻的状态或内容实际应用中常常将关系模式和关系都称为关系 在给定应用领域中,所有表示实体及实体之间联系的关系的集合构成一个关系数据库 关系数据库也有型和值之分思考:给出导师、学生、专业三个
10、实体可能组成的关系数据库及其概念模型(E-R图)实体完整性 参照完整性 用户定义完整性 实体完整性和参照完整性是关系模型必须满足的,被称作关系的不变性,由关系数据库系统自动支持 规则:若属性A是基本关系R的主属性,则属性A不能取空值 说明:基本关系的主码中的任何属性都不能取空值,而不仅是主码整体不能取空值 依据:现实世界的实体是唯一可分的例:学生(例:学生(学号学号,姓名,性别,专业号,年龄),姓名,性别,专业号,年龄)课程(课程(课程号课程号,课程名,学分),课程名,学分)选修(选修(学号学号,课程号课程号,成绩),成绩)例:学生实体与专业实体间的关系:例:学生实体与专业实体间的关系:学生(
11、学生(学号学号,姓名,性别,专业号,年龄),姓名,性别,专业号,年龄)专业(专业(专业号专业号,专业名),专业名)关系参照图外码外码参照关系参照关系被参照关系被参照关系例:学生,课程,学生与课程之间的多对多联系:例:学生,课程,学生与课程之间的多对多联系:学生(学生(学号学号,姓名,性别,专业号,年龄),姓名,性别,专业号,年龄)课程(课程(课程号课程号,课程名,学分),课程名,学分)选修(选修(学号学号,课程号课程号,成绩),成绩)关系参照图被参照关被参照关系系参照关系参照关系学生关系专业关系学生关系专业关系专业号专业号学生关系学生关系 选修关系课程关系选修关系课程关系学号学号课程号课程号主
12、码?外码?定义:外码定义:外码 设F是参照关系R的一个或一组属性,若F与被参照关系S的主码相对应,则称F是R的外码(详细定义见教材P54)规则:参照关系R中每个元组在外码F上的值必须为:或者取空值(F的每个属性值均为空值)或者等于S中某个元组的主码值例:学生(例:学生(学号学号,姓名,性别,专业号,年龄,班长),姓名,性别,专业号,年龄,班长)参照关系参照关系被参照关系被参照关系外码外码 用户定义的、具体应用中的数据必须满足的约束条件 成绩:0100之间 身份证、身份证和生日对应关系 关系代数语言 用传统的集合运算和专门的关系运算来表达查询的抽象语言 关系代数运算符 关系代数表达式 关系代数中
13、有限次运算复合后形成的式子运算符运算符含义含义运算符运算符含义含义集合集合运算符运算符并差交广义笛卡尔积比较比较运算符运算符=大于大于等于小于小于等于等于不等于专门的专门的关系关系运算符运算符选择投影连接除逻辑逻辑运算符运算符非与或 R,tR,tAi,A,tA,A 设关系模式为R(A1,A2,An),它的一个关系设为R tR表示t是R的一个元组 tAi则表示元组t中相应于属性Ai的一个分量 若A=Ai1,Ai2,Aik,其中Ai1,Ai2,Aik是A1,A2,An中的一部分,则A称为属性列或域列 tA=(tAi1,tAi2,tAik)表示元组t在属性列A上诸分量的集合 A 则表示A1,A2,A
14、n中去掉Ai1,Ai2,Aik后剩余的属性组 若R和S是同类关系(即它们都具有n个属性且相应属性取自同一个域),则可进行并、差、交运算。并、差、交运算。对两者进行集合运算之前,要对两者的属性列进行排序,保证两个关系的属性顺序相同。|StRttSR|StRttSR|StRttSR)(SRRSR又有:由属于R或属于S的元组组成由属于R而不属于S的元组组成由既属于R又属于S的元组组成 tr ts R为n目关系,S为m目关系 tr R,tsS,tr ts称为元组的连接。它是一个n+m列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组 广义笛卡尔积广义笛卡尔积 R X S,其关系模式是
15、R和S的模式的并集,是R和S的元组以所有可能的方式组合起来。当R和S有同名的属性,至少要为其中一个属性重新命名。数学描述数学描述:若关系R有k1个元组n个属性,关系S有k2个元组m个属性,则两个关系的广义笛卡尔积有k1*k2个元组n+m个属性(前n个属性来自于R,后m个属性来自于S)|StRtt tSRsrsr广义笛卡尔积和笛卡尔积的关系?面向关系的运算?面向域的运算?R S SA B Ca1 b1 c1a1 b2 c2a2 b2 c1a1 b3 c2R R S SA B Ca1 b2 c2a2 b2 c1R-SR-SA B Ca1 b1 c1R R S S A B C A B C a1 b1
16、 c1 a1 b2 c2 a1 b1 c1 a1 b3 c2 a1 b1 c1 a2 b2 c1 a1 b2 c2 a1 b2 c2 a1 b2 c2 a1 b3 c2 a1 b2 c2 a2 b2 c1 a2 b2 c1 a1 b2 c2 a2 b2 c1 a1 b3 c2 a2 b2 c1 a2 b2 c1a1 b1 c1a2 b2 c1Ra1 b3 c2a2 b2 c1S S例:包括例:包括Student,Course,三个关系,三个关系 Student(Sno,Sname,Sex,Sage,Sdept)Course(Cno,Cname,Cpno,Ccredit)SC(Sno,Cno,G
17、rade)用此例讲解专门的关系运算教材P59例子:例子:学生学生课程数据课程数据库库例:学生例:学生课程数据库,包括课程数据库,包括Student,Course,SC三个关系三个关系 Sno Sname Ssex Sage Sdept95001 李勇 男 20 CS95002 刘晨 女 19 IS95003 王敏 女 18 MA95004 张立 男 19 IS StudentCno Cname Cpqo Ccredit1 数据库 5 42数学 2信息系统 1 44 操作系统 6 35 数据结构 7 4 6 数据处理 27 Pascal语言 6 4Course Sno Cno Grade9500
18、1 1 9295001 2 8595001 3 8895002 2 9095002 3 80SC 记号:tR表示t是R的一个元组 选择选择 从关系R中选取使逻辑表达式F为真的元组,行选。记作 逻辑表达式F由逻辑运算符连接算术表达式,算术表达式基本形式为X1 Y1 其中表示比较运算符,X1,Y1是属性名或常量或简单函数,属性名可以用它的序号来代替)(|)(真tFRttRF)()(20420StudentStudentSage或如:求查询信息系全体学生:查询信息系全体学生:Sdept=IS(Student)或或 =IS(Student)查询年龄小于查询年龄小于20岁的学生:岁的学生:Sdept (
19、Student)或或 (Student)结果如下:结果如下:Sno Sname Ssex Sage Sdept95002 刘晨女 19 IS95004 张立男 19 ISSno Sname Ssex Sage Sdept95002 刘晨女 19 IS95003 王敏女 18 MA95004 张立男 19 IS课堂练习:课堂练习:1)查询)查询CS系的所有女生系的所有女生2)查询先行课代号为)查询先行课代号为6的所有课程的所有课程 定义:从关系R中选择出满足条件F的若干属性列并组成新的关系,列选 其中 表示元组t中相应于属性Ai的一个分量。注意:运算结果要去掉重复元组。|)(RtAtRF)()(
20、52,StudentStudentSdeptSame,或如:求),.,(21ikiiAtAtAtAt2)投影运算例)投影运算例查询学生的姓名和所在系:查询学生的姓名和所在系:Sname,SdeptSname,Sdept(Student)(Student)或或 2,52,5(Student)(Student)查询学生关系中有哪些系:查询学生关系中有哪些系:SdeptSdept(Student)(Student)或或 5 5(Student)(Student)结果如下:结果如下:Sname Sdept 李勇 CS 刘晨 IS 王敏 MA 张立 IS Sdept CS IS MA 连接连接 从关系R
21、和S的笛卡尔积中选取属性间满足条件的元组 其中A和B分别是关系R和S上可比的属性组,是比较运算符 等值连接等值连接 从关系R和S的笛卡尔积中选取A,B属性值相等的元组 自然连接自然连接 特殊的等值连接,R和S具有相同的属性组B,在结果中去掉重复的属性列|r srsrsA BRSt t tRtSt At B|r srsrsA BRSt t tRtSt At B|r srsrsRSt t tRtSt Bt B SCStudentSnoSCSnoStudent.如:求SCStudent 如:求 连接(包含等值连接)连接(包含等值连接):先将R和S做笛卡积,然后从RS的元组中选择满足条件C的元组集合。
22、自然连接自然连接:假设A1、A2、An是R和S的模式中的公共属性,那么如果R的元组r和S的元组s在这些属性上取值都相同,r和s组合而成的元组就归入该自然连接中。一般的连接操作是从行的角度进行运算,自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。ABRS3)连接运算例连接运算例设有如图的关系和关系设有如图的关系和关系A B Ca1 b1 5a1 b2 6a2 b3 8a2 b4 12RB E b1 3 b2 7 b3 10 b3 2 b5 2S A R.B C S.B E a1 b1 5 b2 7 a1 b1 5 b3 10 a1 b2 6 b2 7 a1 b2 6 b3 10 a2
23、 b3 8 b3 10R CE S A R.B C S.B E a1 b1 5 b1 3 a1 b2 6 b2 7 a2 b3 8 b3 10 a2 b3 8 b3 2等值连接 a1 b1 5 3 a1 b2 6 7 a2 b3 8 10 a2 b3 8 2自然连接R R.B=S.B SR S 给定一个关系R(X,Z),X和Z为属性组当tX=x时,x在R中的象集(Images Set)为:Zx=tZ|t R,tX=x A B C a1 b1 c2 a2 b3 c7 a3 b4 c6 a1 b2 c3 a4 b6 c6 a2 b2 c3 a1 b2 c1它表示它表示R中属性组中属性组X上值为上值
24、为x的诸元组在的诸元组在Z上分量的集合。上分量的集合。例子:a1的象集为的象集为(b1,c2),(b2,c3),(b2,c1)除除 R与S 的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组(R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集)元组在X上分量值x的象集Yx包含S在Y上的投影,)(|XtxYxSRtXtSRryrrSRDCBSCBAR,求如:),(),(除操作是同时从行和列角度进行运算RS4)除运算例除运算例设有如图的关系和设有如图的关系和 A B C a1 b1 c2 a2 b3 c7
25、a3 b4 c6 a1 b2 c3 a4 b6 c6 a2 b2 c3 a1 b2 c1 B C D b1 c2 d1 b2 c1 d1 b2 c3 d2 A a1则则 结果如下结果如下a1的象集为的象集为(b1,c2),(b2,c3),(b2,c1)a2的象集为的象集为(b3,c7),(b2,c3)a3的象集为的象集为(b4,c6)a4的象集为的象集为(b6,c6)在(,)上的投影为在(,)上的投影为(b1,c2),(b2,c1),(b2,c3)因只有因只有a1的象集包含了在(,)的象集包含了在(,)属性组上的投影,故属性组上的投影,故 a1 选择、投影、除、连接等关系运算能做什么事情?能解
26、决什么样的查询问题?请举例说明。在实际问题中,是否需要复合使用?2 5,()()()()()()SnoCnoSnameCpnoSno SnameSno CnoCnoSno SnameSCCourseSCStudentSCCourseStudent求求求1)查询选修了号课程的学生的学号2)查询至少选修了一门其直接先行课为号课程的学生姓名3)查询选修了全部课程的学生号码和姓名请给出对应含义和查询答案:1)在以上S-C数据库中,查询选修了1号课程的学生号码2)在以上S-C数据库中,查询选修了1号课程或3号课程的学生号码Sno(Cno=1(SC)Sno(Cno=1 v Cno=3(SC)Sno(Cno=1(SC)U Sno(Cno=1(SC)3)在以上S-C数据库中,查询(至少)选修1号课程和3号课程的学生号码 关系代数为:Sno,Cno(SC)K运算结果为:解:先建一临时关系:Cno13