




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章关系数据库
4.1关系模型及其定义4.1.1关系数据结构4.1.2关系操作概述
4.1.3关系的完整性
4.2关系代数4.2.1传统的集合运算
4.2.2专门的关系运算
4.2.3用关系代数表示检索的例子
4.1关系模型及其定义
4.1.1关系数据结构1.关系的数学定义1)域的定义:域是一组具有相同数据类型的值的集合。2)笛卡儿积(CartesianProduct)的定义:给定一组域D1,D2,…,Dn,这些域中可以有相同的部分,则笛卡儿积为:
D1×D2×…×Dn={(d1,d2,…dn)|di∈Di,i=1,2,…,n}.其中:每一个元素(d1,d2,…,dn
)称为一个n元组,简称元组。元素中的每一个值di称作一个分量)。
例如给出三个域:D1=姓名={王平,李丽,张晓刚};D2=性别={男,女};D3=年龄={19,20}.则D1,D2,D3的笛卡儿积为D1×D2×D3
姓名性别年龄王平男19王平男20王平女19王平女20李丽男19李丽男20李丽女19李丽女20张晓刚男19张晓刚男20张晓刚女19张晓刚女201.关系的数学定义3)关系(Relation)的定义:D1×D2×…×Dn的子集称作在域D1,D2,…,Dn上的关系,表示为:R(D1,D2,…,Dn).
这里:R表示关系的名字,n是关系的目或度。从D1×D2×D3中取出有用的元组,所构造的学生关系如表所示姓名性别年龄王平男20李丽女20张晓刚男192.关系中的基本名词
1)元组:关系表中的每一横行称作一个元组,组成元组的元素为分量。
2)属性:关系中的每一列称为一个属性。
3)候选码、主码:若关系中的某一属性组(或单个属性)的值能惟一地标识一个元组,则称该属性组(或属性)为候选码。若关系的候选码中只包含一个属性,则称它为单属性码;若候选码是由多个属性构成的,则称为它为多属性码。当一个关系有多个候选码时,应选定其中的一个候选码为主码。(如课程名,课程号在课程表中都是候选码)4)全码:若关系中只有一个候选码,且这个候选码中包括全部属性,则这种候选码为全码。
5)主属性和非主属性:关系中,候选码中的属性称为主属性,不包含在任何候选码中的属性称为非主属性。
3.数据库中关系的类型
1)基本表:关系数据库中实际存在的表,是实际存储数据的逻辑表示。
2)视图表:视图表是由基本表或其他视图表导出的表。
3)查询表:查询表是指查询结果表或查询中生成的临时表。
4.数据库中基本关系的性质
1)同一属性的数据具有同质性.
2)同一关系的属性名具有不能重复性。
3)关系中的列位置具有顺序无关性。
4)关系具有元组无冗余性。
5)关系中的元组位置具有顺序无关性。
6)关系中每一个分量都必须是不可分的数据项。5.关系模式的定义
形式化地表示为:R(U,D,Dom,F)
其中:R为关系名,它是关系的形式化表示;U为组成该关系的属性集合;D为属性组U中属性所来自的域;Dom为属性向域的映象的集合;F为属性间数据的依赖关系集合。
关系模式通常可以简单记为:
R(U)或R(A1,A2,…,An).
其中:R为关系名,A1,A2,…,An为属性名。6.关系数据库
在某一应用领域中,所有实体集及实体之间联系所形成关系的集合就构成了一个关系数据库。
4.1.2关系操作概述关系操作的基本内容
关系操作包括数据查询、数据维护和数据控制三大功能.
关系操作的数据查询和数据维护功能使用关系代数中的选择(Select)、投影(Project)、连接(Join)、除(Divide)、并(Union)、交(Intersection)、差(Difference)以及广义笛卡儿积(ExtendedCartesianProduct)8种操作。2.关系操作的特点(1)关系操作语言操作一体化关系语言具有数据定义、查询、更新、控制一体化的特点。(2)关系操作的方式是一次一集合方式(3)关系操作语言是高度非过程化的语言
3.关系操作语言的种类(1)关系代数语言
用对关系的运算来表达查询要求的语言。(2)关系演算语言
用查询得到的元组应满足的谓词条件来表达查询要求的语言。关系演算语言又可以分为元组演算语言和域演算语言两种:元组演算语言的谓词变元的基本对象是元组变量,例如APLHA语言;域演算语言的谓词变元的基本对象是域变量,QBE(QueryByExample)是典型的域演算语言。(3)基于映象的语言
具有关系代数和关系演算双重特点的语言。SQL是基于映象的语言。SQL包括数据定义、数据操作和数据控制三种功能,具有语言简洁,易学易用的特点,它是关系数据库的标准语言和主流语言。4.1.3关系的完整性1.关系模型的实体完整性(EntityIntegrity)
若属性A是基本关系R的主属性,则属性A的值(各分量)不能为空值。
说明如下:
1)实体完整性能够保证实体的唯一性。
2)实体完整性能够保证实体的可区分性。现有如下关系S(学号,姓名,性别,专业号,年龄)C(课程号,课程名,学分);SC(学号,课程号,成绩).
现有用户向数据库中输入如下记录,是否插入成功Insertintos(‘01’,’chen’,’女’,’07’,22)----successInsertintoc(‘’,’数据库原理及应用’,3)Insertintosc(’01’,’’,68)Insertintosc(’02’,’01’,90)2.关系模型的参照完整性
1)外码和参照关系
设F是基本关系R的一个或一组属性,但不是关系R的主码(或候选码)。如果F与基本关系S的主码相对应,则称F是R的外码,并称R为参照关系,S为被参照关系或目标关系。例如,“基层单位数据库”中有“职工”和“部门”两个关系,其关系模式如下:
职工(职工号,姓名,工资,性别,部门号);
部门(部门号,名称,领导人号).
其中:主码用下划线标出,外码用红色标出。再例,在学生课程库中,关系模式表示为:
学生(学号,姓名,性别,专业号,年龄);
课程(课程号,课程名,学分);
选修(学号,课程号,成绩).
其中:主码用下划线标出。2)参照完整性规则
若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须取空值(F的每个属性值均为空值)或者等于S中某个元组的主码值。学生(学号,姓名,性别,专业号,年龄)专业(专业号,专业名)学生关系中每个元组的”专业号”属性只能是下面的两类型值:1)空值:该学生未分配专业2)非空值:该值必须是专业关系中某个元组的”专业号”值。表示该学生分配到一个存在的专业中参照完整性S(学号,姓名,姓名,专业号,年龄)C(课程号,课程名,学分)SC(学号,课程号,成绩)INSERTINTOC(‘01’,’数据库原理’,3)成功INSERTINTOSC(‘01’,’02’,68)失败INSERTINTOSC(‘02’,’01’,90)失败违背实体完整性,没有违背参照完整性INSERTINTOSC(‘0’,’’,68)失败假设数据库中存在关系模式:Employee(职工号,领导者职工号,姓名)自参照完整性,Insertintoemployee(’01’,’01’,’chen’)insertintoemployee(’02’,’01’,’xia’)成功Insertintoemployee(’03’,’02’,’chen’)Insertintoemployee(’05’,’04’,’chen’)选修关系中成绩在1—100之间某个属性取值(如课程名)唯一值3用户定义的完整性。
用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。4.2关系代数1)集合运算符:∪(并运算),-(差运算),∩(交运算),×(广义笛卡儿积)。2)专门的关系运算符:σ(选择),π(投影),(连接),÷(除)。3)比较运算符:>(大于),≥(大于等于),<(小于),≤(小于等于),=(等于),≠(不等于)。4)逻辑运算符:(非),∧(与),∨(或)。
4.2.1传统的集合运算
设关系R和S具有相同的目n(即两个关系都有n个属性),且相应的属性取自同一个域。
1.并(Union)运算
R∪S={t|tR∨tS}.
R和S并的结果仍为n目关系,其数据由属于R或属于S的元组组成。
2.差(Difference)运算
R–S={t|tR∧tS}.
R和S差运算的结果关系仍为n目关系,其数据由属于R而不属于S的所有元组组成。
3.交(Intersection)运算
R∩S={t|tR∧tS}.
运算的结果关系仍为n目关系,其数据由既属于R同时又属于S的元组组成。交可用差来表示:
R∩S=R–(R–S)
.4.笛卡儿积运算
设n目和m目的关系R和S,它们的笛卡儿积是一个(n+m)目的元组集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡儿积应当有k1×k2个元组。R和S的笛卡儿积表示为:
R×S={trts|trR∧tsS}.传统集合运算的实例
ABC
ABC
ABCa1b1c1a1b2c2a1b1c1a1b2c2a1b3c2a1b2c2a2b2c1
a2b2c1
a1b3c2RSR∪S
ABC
R.AR.BR.CS.AS.BS.Ca1b1C1a1b1c1a1b2c2a2b2C1a1b1c1a1b3c2
R∩Sa1b2c2a1b2c2a1b2c2a1b3c2ABCa2b2c1a1b2c2a1b2C2a2b2c1a1b3c2R-SR×S
ABabcdecABdbdaacRSR-SR∪S4.2.2专门的关系运算1.记号说明
(1)关系模式、关系、元组和分量
设关系模式为R(A1,A2,…,An),它的一个关系设为R,tR表示t是R的一个元组,t[Ai]则表示元组t中相对于属性Ai的一个分量。
(2)域列和域列非
若A={Ai1,Ai2,…,Aik},其中Ai1,Ai2,…,Aik是A1,A2,…,An中的一部分,则A称为属性列或域列,t[A]={t[Ai1],t[Ai2],…,t[Aik]}表示元组t在属性列A上诸分量的集合。则表示{A1,A2,…,An}中去掉{Ai1,Ai2,…,Aik}后剩余的属性组,它称为A的域列非。(3)元组连串(Concatenation)
设R为n目关系,S为m目关系,且trR,tSS,则trtS称为元组的连串。连串是一个(n+m)列的元组,它的前n个分量是R中的一个n元组,后m个分量为S中的一个m元组。(4)属性的象集(ImagesSet)
给定一个关系R(X,Z),X和Z为属性组。定义当t[X]=x时,x在R中的象集为:
Zx={t[Z]|tR,t[X]=x}.
上式表示,x在R中的象集为R中Z属性对应分量的集合,而这些分量所对应的元组中的属性组X上的值应为x。2.专门关系运算的定义(1)选择(Selection)运算
选择运算又称为限制运算。选择运算指在关系R中选择满足给定条件的元组,记作:
σF(R)={t|tR∧F(t)=‘真’}.
其中:F表示选择条件,是一个逻辑表达式,取值为“真”或“假”。F由逻辑运算符﹁(非)、∧(与)和∨(或)连接各条件表达式组成。
条件表达式的基本形式为:X1θY1.
其中:θ是比较运算符,它可以是>、≥、<、≤、=、≠中的一种;X1和Y1是属性名、常量或简单函数;属性名也可以用它的序号来代替。选择操作是根据某些条件对关系做水平分割,即选取符合条件的元组例如,σ2>ˊ3ˊ(R)表示从R中挑选第2个分量值大于3的元组所构成的关系。书写时,为了与属性序号区别起见,常量用引号括起来,而属性序号或属性名不要用引号括起来。用关系代数表示下列操作
设学生课程数据库,其关系模式为:
学生(学生,姓名,年龄,所在系);
课程(课程号,课程名,学分);
选课(学号,课程号,成绩).【例4-1】用关系代数表示在学生课程数据库中查询计算机系的全体学生的操作。
σ所在系='计算机系'(学生)【例4-2】用关系代数表示在学生课程数据库中查询年龄小于20岁的学生的操作。
σ年龄<20(学生)(2)投影(Projection)运算
这个操作是对一个关系进行垂直分割,消去某些列,并重新安排列的顺序。
关系R上的投影是从R中选择出若干属性列组成新的关系,记作:
πA(R)={t[A]|tR}.【例4-3】在学生课程数据库中,查询学生的姓名和所在系。表示为:π姓名,所在系(学生)例如,π3,1(R)表示关系R中取第1、3列,组成新的关系,新关系中第1列为R的第3列,新关系的第2列为R的第1列。如果R的每列标上属性名,那么操作符π的下标处也可以用属性名表示。例如,关系R(A,B,C),那么πC,A(R)与π3,1(R)是等价的。(3)连接运算
连接是从两个关系的笛卡儿积中选取属性间满足一定条件的元组。记作:
RS={trts|trR∧tsS∧tr[A]θts[B]}.
AθB
其中:A和B分别为R和S上度数相等且可比的属性组,θ是比较运算符。等值连接表示为:
R
S={trts|trR∧tsS∧tr[A]=ts[B]}.
A=B
说明:1.
也可以写成。2.≡σ2<4(R×S)自然连接是一种特殊的等值连接:
RS={trts|trR∧tsS∧tr[A]=ts[A]}自然连接(naturaljoin)
两个关系R和S的自然连接操作具体计算过程如下:①计算R×S;②设R和S的公共属性是A1,…,AK,挑选R×S中满足R.A1=S.A1,…,R.AK=S.AK的那些元组;③去掉S.A1,…,S.AK这些列。定义:其中i1,…,im为R和S的全部属性,但公共属性只出现一次。
≡【例4-4】设学生和选课关系中的数据如下,学生与选课之间的笛卡儿积、等值连接和自然连接的结果如表所示。
学号姓名年龄所在系
学号课程名成绩98001张三20计算机系98001数据库6298005李四21数学系98001数据结构73
98005微积分80学生
选课学生.学号姓名年龄所在系选课.学号课名成绩980019800198001980059800598005张三张三张三李四李四李四202020212121计算机系计算机系计算机系数学系数学系数学系980019800198005980019800198005数据库数据结构微积分数据库数据结构微积分627380627380学生×选课
学生.学号姓名年龄所在系选课.学号课名成绩980019800198005张三张三李四202021计算机系计算机系数学系980019800198005数据库数据结构微积分627380学生.学号姓名年龄所在系课名成绩980019800198005张三张三李四202021计算机系计算机系数学系数据库数据结构微积分627380学生选课
学生.学号=选课.学号学生选课
ABCA1A1A2A2B1B2B3B456812BEB1B2B3B3B5371022关系R关系SAR.BCS.BEA1A1A1A1A2B1B1
B2
B2
B355668B2B3
B2
B3
B371071010一般连接RSC<EABCEA1A1A2A2B1B2B3B3568837102自然连接RSABCA1A1A2A2B1B2B3B456812BEB1B2B3B3B5371022关系R关系S两个关系R和S在做自然连接时,选择两个关系在公共属性上值相等的元组构成新的关系。此时,关系R中某些元组有可能在S中不存在公共属性上值相等的元组,从而造成R中这些元组在操作时被舍弃了,同样,S中某些元组也可能被舍弃。如果把舍弃的元组也保存在结果关系中,而在其他属性上填空值(Null),那么这种连接就叫做外连接(Outerjoin)。如果只把左边关系R中要舍弃的元组保留就叫做左外连接(Leftouterjoin或Leftjoin),如果只把右边关系S中要舍弃的元组保留就叫做右外连接(Rightouterjoin或Rightjoin)。ABCEa1a1a2a2a2NULLb1b2b3b3b4b5568812NULL37102NULL2ABCEa1a1a2a2a2b1b2b3b3b456881237102NULLABCEa1a1a2a2NULLb1b2b3b3b55688NULL371022ABCa1a1a2a2b1b2b3b456812BEb1b2b3b3b5371022关系R关系S外连接左外连接右外连接RSABCabcbafcbdABCbafdad
R1=R-S,R2=R∪S,R3=R∩S,R4=R×SRSABCa1b1c1a1b2c2a2b2c1ABCa1b2c2a2b2c1R1=R-S,R2=R∪S,R3=R∩S,R4=ПA,B(σB=‘b1’(R))RSTABadbeccABdabadcACbbccbdR1=R-S,R2=R∪S,R3=R∞T,R4=R∞T,R5=ПA(R),R6=σA=C(R×T)
A<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上的投影,即:
R÷S={tr[X]|tr
R∧πY(S)Yx}.
其中的Yx为x在R中的象集,x=tr[X]。
关系除法运算分下面4步进行:
1)将被除关系的属性分为象集属性和结果属性:与除关系相同的属性属于象集属性,不相同的属性属于结果属性。
2)在除关系中,对与被除关系相同的属性(象集属性)进行投影,得到除目标数据集。
3)将被除关系分组,原则是,结果属性值一样的元组分为一组。
4)逐一考察每个组,如果它的象集属性值中包括除目标数据集,则对应的结果属性值应属于该除法运算结果集。例关系做除法的例子。【例4-5】给出选课、选修课和必修课3个关系,它们的关系模式为:选课(学号,课号,成绩);选修课(课号,课名);必修课(课号,课名).选课选修课学号课号成绩
课号课名S1C1AC2计算机图形学S1C2B必修课S1C3BS2C1A课号科名S2C3BC1数据结构S3C1BC3操作系统S3C3B选课÷选修课S4C1AS4C2A学号成绩S5C2BS1BS5C3BS4AS5C1AS5B学号成绩
学号S3BS1
S2S3S5选课÷必修课π学号,课号(选课)÷必修课
4.2.3用关系代数表示检索的例子学生选课库的关系模式为:
学生(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教育类课题申报书分工
- 2018赣州课题申报书
- 合同范本剪辑制作
- 育人平台课题申报书
- 旅游教改课题申报书范本
- 教改研究课题申报书
- 下浮类合同范本
- 痛经课题申报书
- 单位全供货合同范本
- 合同范例软件全
- 2025届东北师大附属中学高考物理五模试卷含解析
- 父母买房在子女名下协议书范本
- 项目投资计算分析表系统(共有17张表格)excel格式
- 高危新生儿管理专家共识解读
- 广东省深圳市2024年重点中学小升初数学入学考试卷含解析
- 2023北师大版新教材高中数学必修第一册考前必背
- 2024年湖南省中考道德与法治试题卷(含答案解析)
- JB-T 14426-2023 往复式气液混输泵装置
- 2024核桃树承包合同
- 保险授权书格式模板
- 2024年GINA哮喘防治指南修订解读课件
评论
0/150
提交评论