第2章 关系数据库_第1页
第2章 关系数据库_第2页
第2章 关系数据库_第3页
第2章 关系数据库_第4页
第2章 关系数据库_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

第2章关系数据库 2.1关系模型的基本概念 2.2关系代数和关系演算 2.3关系的完整性

2.1关系模型的基本概念2.1.1数学定义 2.1.2关系数据结构 2.1.1数学定义(1)

1.域定义2.1域是一组具有相同数据类型的值的集合。2.笛卡儿积定义2.2给定一组域Dl,D2,…,Dn,Dl,D2,…,Dn的笛卡儿积为:D1×D2×…×Dn={(d1,d2,…dn)|di∈Di,i=1,2,…,n}其中,每一个元素(d1,d2,…,dn)叫作一个元组,元素中的每一个值di叫作一个分量。3.关系定义2.3Dl×D2×…×Dn的子集叫作在域Dl,D2,…,Dn上的关系,用R(Dl,D2,…,Dn)来表示。2.1.1数学定义(2)

4.关系的性质(1)列是同质的,即每一列中的分量是同一类型的数据,来自同一个域。(2)不同的列可出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。(3)列的顺序无要求,即列的次序可以任意交换。(4)任意两个元组不能完全相同。(5)行的顺序无要求,即行的次序可以任意交换。(6)分量必须取原子值,即每一个分量都必须是不可再分的数据项。2.2关系代数和关系演算2.2.1传统的集合运算 2.2.2专门的关系运算2.2.3关系演算

2.2.1传统的集合运算(1)

传统的集合运算是二目运算,包括并、交、差和广义笛卡儿积4种运算。1.并关系R与关系S的并由属于R或属于S的元组组成,其结果关系仍为n目关系。记作R∪S。2.交关系R与关系S的交由既属于R又属于S的元组组成,其结果关系仍为n目关系。记作R∩S。3.差关系R与关系S的差由属于R而不属于S的所有元组组成。其结果关系仍为n目关系。记作R-S。4.广义笛卡儿积两个分别为n目和m目的关系R和S的广义笛卡儿积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有A1个元组,S有A2个元组,则关系R和关系S的广义笛卡儿积有Al×A2个元组,记作R×S。2.2.1传统的集合运算(2)

【例2-2】有关系R、S,如(a)、(b)所示,则R∪S、R∩S、R-S、R×S的结果分别为(c)、(d)、(e)、(f)所示。

(f)2.2.1传统的集合运算(3)2.2.2专门的关系运算(1-1)专门的关系运算包括选择、投影、连接和除等。1.选择选择是在关系R中选择满足给定条件的诸元组,记作:

σF(R)={t|t∈R∧F(t)='真'}其中F表示选择条件,它是一个逻辑表达式,取逻辑值“真”或“假”。因此,选择运算实际上是从关系R中选取使逻辑表达式F为真的元组。这是从行的角度进行的运算。设有一个学生-课程关系数据库,包括学生关系S、课程关系C和选修关系SC,对这3个关系进行运算。2.2.2专门的关系运算(1-2)

2.2.2专门的关系运算(1-3)

【例2-3】查询数学系学生的信息。sSD=’数学系’(S)或s5=’数学系’(S)结果如表2-6所示。

表2-6查询数学系学生的信息学号S#姓名SN性别SS年龄SA所在系SD000102王博女19数学系020101范伟男19数学系2.2.2专门的关系运算(1-4)

【例2-4】查询年龄小于20的学生的信息。sSA<20(S)或s4<20(S)结果如表2-7所示。表2-7查询年龄小于20的学生的信息学号S#姓名SN性别SS年龄SA所在系SD000101李晨男18信息系000102王博女19数学系010101刘思思女18信息系020101范伟男19数学系2.2.2专门的关系运算(2-1)2.投影关系R上的投影是从R中选择出若干属性列组成新的关系。记作:ПA(R)={t[A]|t∈R}

其中,A为R中的属性列。投影操作是从列的角度进行的运算。投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组,因为取消了某些属性列后,就可能出现重复行,应取消这些完全相同的行。【例2-5】查询学生的学号和姓名。ПS#,SN(S)或П1,2(S)结果如表2-8所示。表2-8查询学生的学号和姓名学号S#姓名SN000101李晨000102王博010101刘思思010102王国美020101范伟2.2.2专门的关系运算(2-2)【例2-6】查询学生的所在系,即查询学生关系S在所在系属性上的投影。ÏSD(S)或Ï5(S)结果如表2-9所示。表2-9查询结果所在系SD信息系数学系物理系2.2.2专门的关系运算(3-1)3.连接它是从两个关系的笛卡儿积中选取属性间满足一定条件的元组。

={trts|tr∈R∧ts∈S∧tr[A]θts[B]}连接运算从R和S的笛卡儿积R×S中选取(R关系)在A属性组上的值与(S关系)在B属性组上的值满足比较关系θ的元组。θ为“=”的连接运算称为等值连接。

={trts|tr∈R∧ts∈S∧tr[A]=ts[B]}若A、B是相同的属性组,就可以在结果中把重复的属性去掉。这种在相同的属性组间进行比较并去掉了重复的属性的等值连接称为自然连接。

={trts|tr∈R∧ts∈S∧tr[A]=ts[B]}2.2.2专门的关系运算(3-2)2.2.2专门的关系运算(4-1)4.除R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影。(1)关系R(X,Y)和S(Y,Z),其中X、Y、Z为属性组(R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集)。(2)元组在X上分量值x的象集Yx包含S在Y上的投影。除操作是同时从行和列角度进行运算的。2.2.2专门的关系运算(4-2)【例2-8】R(A,B,C)和S(B,C,D)两个关系如表2-13所示,求R÷S。R

S

ABC

BCDa1b1c2

b1c2d1a2b3c7

b2c1d1a3b4c6

b2c3d2a1b2c3

(b)

a4b6c6

a2b2c3

a1b2c1

(a)表2-13

关系表R和S2.2.2专门的关系运算(4-3)则R÷S运算如下: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)属性组上的投影,故R÷S={a1}除运算结果如表2-14所示。Aa1

表2-14

除运算结果2.2.2专门的关系运算(5)可以使用选择、投影、连接和除4种操作来编辑复杂的查询。以前面的学生-课程数据库中的3个表为例,举例说明它们的综合用法。【例2-9】查询选修了2号课程的学生的学号。【例2-10】查询选修了3号课程的学生的姓名。

【例2-11】查询选修了数学课的学生的姓名和成绩。

∏SN,G(σCN='数学'

)2.2.3关系演算(1-1)

关系演算是以数理逻辑中的谓词演算为基础的。按谓词变元的不同,关系演算可分为元组关系演算和域关系演算。1元组关系演算语言—ALPHA元组关系演算以元组变量作为谓词变元的基本对象。操作语句工作空间名(表达式):操作条件其中操作语句主要有GET、PUT、HOLD、UPDATE、DELETE和DROP六条语句。表达式用于指定语句的操作对象,它可以是关系名或属性名,一条语句可以同时操作多个关系或多个属性。2.2.3关系演算(1-2)仍以学生—课程数据库中的3个表为例。1.检索操作检索操作用GET语句实现。(1)简单检索(即不带条件的检索)。【例2-12】查询所有学生的姓名。GETW(S.SN)【例2-13】查询所有学生的信息。GETW(S)(2)带条件的检索。【例2-14】查询信息系学生的学号和年龄。GETW(S.S#,S.SA):S.SD='信息系'【例2-15】查询数学系年龄小于20的学生的姓名和年龄。GETW(S.SN,S.SA):S.SD='数学系'∧S.SA<202.2.3关系演算(1-3)(3)带排序的检索。【例2-16】查询计算机科学系学生的学号、姓名,并按年龄降序排序。GETW(S.S#,S.SN):S.SD='计算机科学系'DOWNS.SA(4)指定元组个数的检索【例2-17】取出一个数学系学生的姓名。 GETW(1)(S.SN):S.SD='数学系'【例2-18】查询信息系年龄最大的3个学生的学号及其年龄。GETW(3)(S.S#,S.SA):S.SD='信息系'DOWNS.SA2.更新操作(1)插入操作。插入操作用PUT语句实现,其步骤如下:①

用宿主语言在工作空间中建立新元组。②

用PUT语句把该元组存入指定的关系中。2.2.3关系演算(1-4)【例2-19】插入一学号为020302、姓名为刘青的18岁女生到计算机系。MOVE020302TOW.S#MOVE'刘青'TOW.SNMOVE'女'TOW.SSMOVE18TOW.SAMOVE'计算机系'TOW.SDPUTW(S)

(2)删除操作。删除操作用DELETE语句实现。其步骤如下:①用HOLD语句把要删除的元组从数据库中读到工作空间中。②用DELETE语句删除该元组。【例2-20】删除学号为020302的学生。HOLDW(S):S.S#='020302'DELETEW【例2-21】删除全部学生。HOLDW(S)DELETEW(3)修改操作。2.2.3关系演算(1-5)①用HOLD语句将要修改的元组从数据库中读到工作空间中。②用宿主语言修改工作空间中元组的属性。③用UPDATE语句将修改后的元组送回数据库中。【例2-22】将020101的姓名改为孟伟。HOLDW(S.S#,S.SN):S.S#='020101'MOVE'孟伟'TOW.SNUPDATEW

【例2-23】将020101的学号改为030201。HOLDW(S):S.S#='020101'DELETEWMOVE'030201'TOW.S#MOVE'孟伟'TOW.SNMOVE'男'TOW.SSMOVE'19'TOW.SAMOVE'数学系'TOW.SDPUTW(S)2.2.3关系演算(2-1)2域关系演算语言QBE域关系演算以元组变量的分量,即域变量作为谓词变元的基本对象。QBE(QueryByExample)用示例元素来表示查询结果可能的例子。下面仍以学生—课程数据库为例,说明QBE的用法。1.检索操作(1)简单查询。【例2-24】查询全体学生的姓名。操作步骤如下:①用户提出要求。②屏幕显示空白表格

2.2.3关系演算(2-2)③用户在最左边一栏输入关系名S

④显示该关系的栏名SS#SNSSSASD

用户构造查询要求SS#SNSSSASD

P.T

这里T是示例元素,即域变量。QBE要求示例元素下面一定要加下划线。“P.”是操作符,表示打印(Print),就是显示。示例元素是这个域中可能的一个值,它不必是查询结果中的元素。2.2.3关系演算(2-3)⑥

屏幕显示查询结果SS#SNSSSASD

李晨王博刘思思王国美

2.2.3关系演算(2-4)【例2-25】查询全体学生的信息SS#SNSSSASD

P.000101P.李晨P.男P.18P.信息系显示全部数据也可以简单地把“P.”操作符作用在关系名上。SS#SNSSSASDP.

(2)条件查询。【例2-26】求信息系全体学生的姓名SS#SNSSSASD

P.李晨

信息系信息系是查询条件,不必加横线。2.2.3关系演算(2-5)【例2-28】查询数学系或者年龄大于19岁的学生的学号。SS#SNSSSASD

P.000101P.000102

>19

数学系(3)查询结果排序。【例2-29】查询信息系学生的姓名,要求查询结果按年龄升序排序,对年龄相同的学生按性别降序排序。SS#SNSSSASD

P.李晨DO(2)AO(1)信息系2.2.3关系演算(2-7)2.更新操作(1)插入操作。插入操作符为“I.”,新插入的元组必须具有码值,其他属性值可以为空。【例2-30】把学号为000103,姓名张兰,年龄17岁的信息系女生插入表S.SS#SNSSSASDI.000103张兰女17信息系(2)删除操作。

删除操作符为“D.”。【例2-31】删除学号为000103的学生.SS#SNSSSASDD.000103

2.2.3关系演算(2-8)(3)修改操作。修改操作符为“U.”。关系的主码不允许修改,如果需要修改某个元组的主码,需首先删除该元组,然后再插入新的主码的元组。【例2-32】把000101的年龄改为19岁。SS#SNSSSASD

000101

U.19

SS#SNSSSASDU.000101

19

或【例2-33】把所有学生的年龄增加1岁。SS#SNSSSASD

U.000101000101

XX+12.3关系的完整性2.3.1实体完整性 2.3.2参照完整性 2.3.3用户定义的完整性2.3.1实体完整性规则2.1实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值。例如,在学生关系S(S#,SN,SS,SA,SD)中,S#属性为主码,则S#不能取空值。实体完整性规则规定,基本关系的所有主属性都不能取空值,而不仅是主码整体不能取空值。例如,学生选课关系SC(S#,C#,G),(S#,C#)为主码,则S#和C#两属性都不能取空值。2.3.2参照完整性现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体间的联系都是用关系来描述的。这样就自然存在着关系与关系间的引用。学生(学号,姓名,性别,年龄,所在系)课程(课程号,课程名,学分)选修(学号,课程号,成绩)这三个关系之间存在着属性的引用,即选修关系引用了学生关系的主码“学号”和课程关系的主码“课程号”选修关系中的学号值必须是确实存在的学生的学号,即学生关系中有该学生的记录。选修关系中的课程号值也必须是确实存在的课程号,即课程关系中有该课程的记录。不仅两个或两个以上的关系间可以存在引用关系,同一关系内部属性间也可能存在引用关系。2.3.2参照完

温馨提示

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

评论

0/150

提交评论