数据库系统概论2关系数据库.ppt
第二章 关系数据库,2.1 关系数据模型,关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成 单一的数据结构-关系 关系操作为集合操作形式包括:选择、投影、连接等,关系的三类完整性约束实体完整性参照完整性用户自定义完整性,2.2 关系数据结构及形式化定义,第二章 关系数据库,关系域:一组具有相同数据类型的值的集合笛卡尔积:元组分量关系目或度候选码主码主属性非码属性全码 关系的三种类型:基本关系、查询表、视图表 基本关系的性质:(1)列是同质的(4)任意两元组不能完全相同(2)不同的属性有不同的属性名(5)行无序(3)列无序(6)分量是不可分的数据项,示例2.1,第二章 关系数据库,关系模式 R(U,D,dom,F)关系数据库,2.3 关系的完整性,实体完整性:若属性A是基本关系R的主属性,则属性A不能取空值。参照完整性外码:设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码KS相对应,则称F是基本关系R的外码。参照完整性:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码KS相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:1、或者取空值(F的每个属性值均为空)2、或者等于S中某个元组的主码值。用户定义的完整性,1.并(Union),R和S具有相同的目n(即两个关系都有n个属性)相应的属性取自同一个域RS 仍为n目关系,由属于R或属于S的元组组成 RS=t|t Rt S,第二章 关系数据库,2.4 关系代数,第二章 关系数据库,2.差(Difference),R和S具有相同的目n相应的属性取自同一个域R-S 仍为n目关系,由属于R而不属于S的所有元组组成 R-S=t|tRtS,第二章 关系数据库,第二章 关系数据库,3.交(Intersection),R和S具有相同的目n相应的属性取自同一个域RS仍为n目关系,由既属于R又属于S的元组组成 RS=t|t Rt S RS=R(R-S),第二章 关系数据库,第二章 关系数据库,An Introduction to Database System,4.笛卡尔积(Cartesian Product),严格地讲应该是广义的笛卡尔积(Extended Cartesian Product)R:n目关系,k1个元组S:m目关系,k2个元组RS 列:(n+m)列元组的集合元组的前n列是关系R的一个元组后m列是关系S的一个元组行:k1k2个元组RS=tr ts|tr R tsS,第二章 关系数据库,An Introduction to Database System,第二章 关系数据库,An Introduction to Database System,2.4.2 专门的关系运算,先引入几个记号(1)R,tR,tAi 设关系模式为R(A1,A2,An)它的一个关系设为R tR表示t是R的一个元组 tAi则表示元组t中相应于属性Ai的一个分量,第二章 关系数据库,An Introduction to Database System,(2)A,tA,A 若A=Ai1,Ai2,Aik,其中Ai1,Ai2,Aik是A1,A2,An中的一部分,则A称为属性列或属性组。tA=(tAi1,tAi2,tAik)表示元组t在属性列A上诸分量的集合。A则表示A1,A2,An中去掉Ai1,Ai2,Aik后剩余的属性组。,第二章 关系数据库,An Introduction to Database System,(3)tr ts R为n目关系,S为m目关系。tr R,tsS,tr ts称为元组的连接。tr ts是一个n+m列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。,第二章 关系数据库,An Introduction to Database System,(4)象集Zx 给定一个关系R(X,Z),X和Z为属性组。当tX=x时,x在R中的象集(Images Set)为:Zx=tZ|t R,tX=x 它表示R中属性组X上值为x的诸元组在Z上分量的集合,第二章 关系数据库,x1在R中的象集 Zx1=Z1,Z2,Z3,x2在R中的象集 Zx2=Z2,Z3,x3在R中的象集 Zx3=Z1,Z3,象集举例,第二章 关系数据库,选择投影连接除,第二章 关系数据库,(a),Student,4)学生-课程数据库:学生关系Student、课程关系Course和选修关系SC,第二章 关系数据库,Course,(b),第二章 关系数据库,(c),SC,第二章 关系数据库,1.选择(Selection),1)选择又称为限制(Restriction)2)选择运算符的含义在关系R中选择满足给定条件的诸元组 F(R)=t|tRF(t)=真F:选择条件,是一个逻辑表达式,基本形式为:X1Y1,第二章 关系数据库,3)选择运算是从关系R中选取使逻辑表达式F为真的元组,是从行的角度进行的运算,第二章 关系数据库,例1 查询信息系(IS系)全体学生 Sdept=IS(Student)或 5=IS(Student)结果:,第二章 关系数据库,例2 查询年龄小于20岁的学生 Sage 20(Student)或 4 20(Student)结果:,第二章 关系数据库,2.投影(Projection),1)投影运算符的含义从R中选择出若干属性列组成新的关系 A(R)=tA|t R A:R中的属性列,第二章 关系数据库,2)投影操作主要是从列的角度进行运算但投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行),第二章 关系数据库,例3 查询学生的姓名和所在系即求Student关系上学生姓名和所在系两个属性上的投影 Sname,Sdept(Student)或 2,5(Student)结果:,第二章 关系数据库,第二章 关系数据库,例4 查询学生关系Student中都有哪些系 Sdept(Student)结果:,第二章 关系数据库,3.连接(Join),1)连接也称为连接2)连接运算的含义从两个关系的笛卡尔积中选取属性间满足一定条件的元组 R S=|tr Rts StrAtsB A和B:分别为R和S上度数相等且可比的属性组:比较运算符连接运算从R和S的广义笛卡尔积RS中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系的元组,第二章 关系数据库,3)两类常用连接运算等值连接(equijoin)什么是等值连接为“”的连接运算称为等值连接 等值连接的含义从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组,即等值连接为:R S=|tr Rts StrA=tsB,A=B,第二章 关系数据库,自然连接(Natural join)自然连接是一种特殊的等值连接两个关系中进行比较的分量必须是相同的属性组在结果中把重复的属性列去掉自然连接的含义R和S具有相同的属性组B R S=|tr Rts StrB=tsB,第二章 关系数据库,4)一般的连接操作是从行的角度进行运算。自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。,第二章 关系数据库,例5关系R和关系S 如下所示:,第二章 关系数据库,一般连接 R S的结果如下:,CE,第二章 关系数据库,等值连接 R S 的结果如下:,第二章 关系数据库,自然连接 R S的结果如下:,第二章 关系数据库,外连接如果把舍弃的元组也保存在结果关系中,而在其他属性上填空值(Null),这种连接就叫做外连接(OUTER JOIN)。左外连接如果只把左边关系R中要舍弃的元组保留就叫做左外连接(LEFT OUTER JOIN或LEFT JOIN)右外连接如果只把右边关系S中要舍弃的元组保留就叫做右外连接(RIGHT OUTER JOIN或RIGHT JOIN)。,第二章 关系数据库,An Introduction to Database System,下图是例5中关系R和关系S的外连接,第二章 关系数据库,图(b)是例5中关系R和关系S的左外连接,图(c)是右外连接,第二章 关系数据库,4.除(Division),给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在 X 属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合,记作:RS=tr X|tr RY(S)Yx Yx:x在R中的象集,x=trX,第二章 关系数据库,2)除操作是同时从行和列角度进行运算,第二章 关系数据库,例6设关系R、S分别为下图的(a)和(b),RS的结果为图(c),第二章 关系数据库,在关系R中,A可以取四个值a1,a2,a3,a4 a1的象集为(b1,c2),(b2,c3),(b2,c1)a2的象集为(b3,c7),(b2,c3)a3的象集为(b4,c6)a4的象集为(b6,c6)S在(B,C)上的投影为(b1,c2),(b2,c1),(b2,c3)只有a1的象集包含了S在(B,C)属性组上的投影 所以 RS=a1,第二章 关系数据库,以学生-课程数据库为例(P56)例7 查询至少选修1号课程和3号课程的学生号码首先建立一个临时关系K:然后求:Sno,Cno(SC)K,第二章 关系数据库,例 7续 Sno,Cno(SC)200215121象集1,2,3200215122象集2,3 K=1,3 于是:Sno,Cno(SC)K=200215121,第二章 关系数据库,例 8 查询选修了2号课程的学生的学号。Sno(Cno=2(SC)200215121,200215122,第二章 关系数据库,例9 查询至少选修了一门其直接先行课为5号课程的 的学生姓名 Sname(Cpno=5(Course SC Student)或 Sname(Cpno=5(Course)SC Sno,Sname(Student)或 Sname(Sno(Cpno=5(Course)SC)Sno,Sname(Student),第二章 关系数据库,An Introduction to Database System,例10 查询选修了全部课程的学生号码和姓名。Sno,Cno(SC)Cno(Course)Sno,Sname(Student),第二章 关系数据库,2.5 关系演算,第二章 关系数据库,元组关系演算语言 元组关系演算 域关系演算语言,返回,下一页,笛卡尔积:,关系:,示例2.1:笛卡尔积,表(Table)/关系(Relation),值域(Domain),列数据的取值范围,关系模式,学生成绩单(班级,课程,学号,姓名,成绩),列(Column)/字段(Field)/属性(Attribute)/数据项,列有名称,有值/数据,码(Key)/关键字,某一列或某几列的数据能惟一区分开每一行,班级 课程 学号,行(Row)/元组(Tuple)/记录(Record),返回,Database=table1,table2,tableN Head(tableI)=attribute1,attribute2,attributeM=attribute1 attribute2 attributeM,示例2.2:数据库及表各部分的名称,示例2.3:传统集合运算,A,B,C,a1,b1,c1,a1,b1,c1,a1,b1,c1,R X S,a1,b2,c2,A,B,C,a1,b2,c2,a1,b3,c2,a2,b2,c1,a1,b2,c2,a1,b2,c2,a1,b2,c2,a2,b2,c1,a2,b2,c1,a1,b3,c2,a2,b2,c1,a1,b2,c2,a1,b3,c2,a2,b2,c1,a2,b2,c1,A,B,C,a1,b2,c2,a2,b2,c2,R S,A,B,C,a1,b1,c1,R-S,