




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第四章 关系数据库,4.1 关系模型的基本概念 4.1.1 数学定义 定义4.1 域(Domain)是值的集合.,定义4.2 给定一组域D1,D2,Dn,这些域中可以有相同的 D1,D2,Dn的笛卡尔积(Cartesian Product)为 D1D2Dn=(d1,d2,dn)diDi,i=1,2,n 其中每一个元素(d1,d2,dn)叫作一个n元组,或简称 为元素,元素中每一个值di叫做一个分量.,若Di(i=1,2,n)为有限集,其基数为mi(i=1,2,n), 则D1D2Dn的基数为m=mi,n,i =1,定义4.3 D1D2Dn 的子集叫做在域D1,D2,Dn上的关系, 用R(D1,D
2、2,Dn)表示,这里R表示关系的名字,n是关系的目或度.,当n=1时,称为单元关系. 当n=2时,称为二元关系. 关系是一张二维表,表的每一行对应一个元组,表的每一列对应一个域.由于域可以相同,为了加以区分,对每列取一个名字,称为属性.n目关系必有n个属性.,在上述例子中取出笛卡尔积的一个子集来构造一个关系,这个关系的名字为FAMILY(家庭),属性名就取域名,即MAN,WOMAN与CHILD.这个关系可表示为FAMILY(MAN,WOMAN,CHILD).,MAN WOMAN CHILD 王 兵 丁 梅 王 一 李 平 吴 芳 李 一 李 平 吴 芳 李 二,FAMILY,在关系数据库中,我
3、们能否把关系FAMILY定义成如下的形式呢?,MAN WOMAN,CHILD FIRST SECOND,王兵 丁梅 王一 李平 吴芳 李一 李二,数据库中的关系有以下性质: 1、列是同性质的,即每一列中的分量是同一类型的数据,来自同一个域。 2、不同的列可出自同一个域,每一列称为属性,要给予不同的属性名。 3、列的顺序无所谓,即列的次序可以任意交换。 4、任意两个元组不能全同。 5、行的顺序无所谓,即行的次序可以任意交换。 6、每一分量必须是不可分的数据项。,4.1.2 关 系 模 型 一、单一的数据结构关系 1、码 (1). 候选码 (2). 主码、主属性,2、关系模式 关系的描述称为关系模
4、式。通常记为: R(A1,A2,An)。R为关系名, A1,A2,An为属性名.属性向域的映象常常直接说明为属性的类型、长度。,3、关系数据库 (1).关系数据库的型 (2).关系数据库的值,二、关系操作 关系模型给出了关系操作的能力和特点,但不对DBMS的语言给出具体的语法要求。关系语言的特点是高度非过程化。 关系模型中,关系操作的能力可用关系代数来表示。常用的几种如下: 1. 选择 2. 投影 3. 连接 4. 除 5. 并 6. 交 7. 差,三、关系模型的三类完整性 实体完整性、参照完整性和用户定义的完整性。 1、实体完整性 设属性A是基本关系R的主码组成成分(主属性),则属性A不能取
5、空值。 对实体完整性的4点说明:,2、参照完整性 若基本关系R中含有与另一个基本关系S的主码Ks相对应的属性组F,则对于R中每个元组在F上的值必须为:(1)取空值.(2)或者等于S中某个元组的主码值。 如职工关系EMP(ENO,ENAME,DNO)与 部门关系DEPT(DNO,DNAME),3、用户定义完整性,4.2 关系数据语言概述 关系的数据操纵语言按照表达查询的方式可分为两大类: 1. 用对关系的运算来表达查询的方式,称为关系代数. 2. 用谓词来表达查询要求的方式,称为关系演算. (1)元主关系演算 (2)域关系演算,关系代数和两种关系演算均是抽象的查询语言. 这三种语言在表达能力上是
6、彼此等价的.它们能用作评估实际系统中查询语言能力的标准或基础. 实际的查询语言除了提供关系代数的功能外,还提供了许多附加的功能,如库函数、关系赋值、算术运算等功能。,4.3 关 系 代 数 一、关系代数的运算的分类 1. 传统的集合运算 2. 专门的关系运算,关系代数的运算对象是关系.运算结果亦为关系。 二、关系代数用到的运算符 (1)集合运算符: (并),(差),(交),(广义笛卡尔积) (2)专门的关系运算符: (选择),(投影), (连接),(除) (3)算术比较符=, (4)逻辑运算符:, , ,4.3.1 传统的集合运算 设关系R和关系S具有相同的目n,且相应的属性取自同一个域,则可
7、以定义四种运算如下:,1. 并(Union) 关系R和关系S的并记为RS, 结果仍为n目关系.由属于R或属于S的元组组成. RS,2. 差(Difference) 关系R和关系S的差记为R-S.结果仍为n目关系.由属于R而不属于S的元组组成.,3. 交(Intersection) 关系R和关系S的交记为R S, 结果仍为n目关系.由既属于R有属于S的元组组成. 关系的交可由关系的差表示,即RS=R-(R-S).,4. 广义笛卡尔积(Extended cartesian product) 两个分别为n、m目阿关系R和S的广义笛卡尔积RS是一个(n+m)元组的集合.元组的前n个分量是R的一个元组,
8、后m个分量是S的一个元组.若R有k1个元组,S有k2个元组,则RS有k1k2个元组.,R,S,图 4-1 ( c )RS,图 4-1 ( e )RS,图 4-1 ( d ) R-S,( a ),( b ),4.3.2 专门的关系运算 一. 几个记号 1. 设关系模式为R(A1,A2,An). 它的一个关系设为R. TR表示t是R的一个元组。TAi则表示元组t中相应属于Ai的一个分量。 2.若A=Ai1,Ai2,Ai3,Aik,其中Ai1,Ai2,Ai3,Aik 是A1,A2,A3,An中的一部分,则A称为属性列或域列.A则表示A1,A2,A3,An中去掉Ai1,Ai2,Ai3,Aik后剩余的属
9、性组.tA=(tAi1,tAi2,tAik)表示元组t在属性列A上诸分量的集合.,3. R为n目关系,S为m目关系 tr R , ts S tr ts 称为元组的连串(Concatenation).这是一个(n+m)元组,前n个分量是R的一个n元组,后m个分量是S中的一个m元组. 4. 给定一个关系R(X , Z), X,Z为属性组. 我们定义当X=x时,x在R中的象集(Image Set)为: Zx=tz| tR,tX=x 表示R中属性组X上值为x的诸元组在Z上分量的集合.,二. 关系运算 1. 选择(Selection),亦称为限制(Restriction). 在关系R中选择满足给定条件的
10、诸元组,记为: F( R)=t|tRF(t)=真,F是一个公式,它的取值为真或假. F由逻辑运算符(,)连接各算术表达式组成. 选择运算是从关系R中选取使公式F为真的元组.这是从行的角度进行的运算. 举例说明选择运算:,设有学生课程关系数据库,学生关系S、课程关系C和学生选课关系SC,分别如图4-2 (a ), ( b ), ( c )所示,S,C,SC,( a ),( b ),( c ),图 4-2,例1. 求计算机科学系CS的学生,解: 在学生关系中找出SD为CS的学生. SD=CS(S)或3=CS(S),结果如图4-3.,图 4-3,例2. 求年龄大于或等于20的元组.,解: 在学生关系
11、中找出SA大于或等于20的学生. 即: SA20(S)或420(S),结果如图4-4,图 4-4,2. 投影(Projection) 关系R上的投影是从R中选择若干属性列组成新的关系.记作: A( R )=tA | t R A为R中的属性列.,例3. 求学生关系S在学生姓名和所在系这两个属性上的投影.,解: SN,SD( S )或2,3( S ) 结果如图4-5所示.,例4. 求学生选课关系SC在学号和成绩两个属性上的投影. 求学生选课关系SC在课程号和成绩两个属性上的投影.,解: . S#,G( SC )或1,3( SC ) 结果如图4-6 ( a ) . C#,G( SC )或2,3( S
12、C ) 结果如图4-6 ( b ),3. 连接(Join)亦称为连接 连接运算是从两个关系的笛卡尔积中选取属性间满足一定条件的元组.记作: RS = tr ts | trRtsS trA tsB,AB,自然连接(Natural join)是一种特殊而常用的连接.若R和S具有相同的属性组B,则自然连接定义如下: RS = tr tsB | trRtsS trB =tsB,例5. 设关系R,S分别为图4-7中的( a),(b ). RS 的结果如图4-7( c ). RS 自然连接的结果如图4-7( d ).,CE,4. 除(Division) 给定关系R(X,Y)与S(Y,Z), 其中X,Y,Z
13、为属性列,R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集.定义除法: RS=trX | trRYx r(S ) Yx为x在R中象集,x= trX . 除法结果是R中满足下列条件的元组在X属性列上的投影: 元组在X上分量值x的象集Yx包含S在Y上投影的集合.,例: 求至少选修C1,C3课程的学生的学号(图4-2P101) 解: 设一个临时关系K:,则所求结果为: S#,C#(SC)K=S1,4.4 关系演算 关系演算按谓词变元的不同可分为元组关系演算和域关系演算.我们首先介绍元组关系演算然后介绍域关系演算,都是先讨论抽象语言然后介绍一种实际语言。,4.4.1 元组关系演算 元组关系演
14、算用表达式 t | (t) 说明:应为小写,因计算机中无此符号 来表示.其中t为元组变量. (t)是由原子公式和运算符组成的公式.,一. 原子公式: 1. R(t).R是关系名,t是元组变量.R(t)表示t是R中的一个元组.即tR. 2. tiuj. t 和 u是元组变量, 是算术比较符. 3. tiC 或C ti. 表示“t的第i个分量与常量C之间满足比较关系”.,二. 公式可以递归定义 1. 每个原子公式是一个公式. 2. 设1和2是公式,则1,12,1 2也是公式. 3. 若是公式,t是元组变量.则( t ) ( t) 也是公式. 4. 公式中运算符的优先次序为: ( ) 算术比较符 量
15、词( 、 ) 5. 公只限于上述这些.,E,A,A E,元组关系表达式t | (t),表示使为真的元组集合. 三. 用关系演算表达式表示5种关系代数的基本运算: 1. 并 RS= t |R( t)S(t ),2. 差 R-S=t | R(t)S(t),3. 笛卡尔积 4. 投影 i1,i2,ik(R)=t | ( u)(R(u)t1=u(i1)tk=uik),(k),E,5. 选择 F(R)= t| R(t)F,四. 举例 例1 求计算机科学系CS的学生,SCS= t| S( t) t3=CS,例2. 求年龄大于或等于20的学生. S20= t| S( t) t420,例3. 求学生姓名及所在
16、的系 S1=t | ( u)(R(u)t1=u2)t2=u3),(2),E,五. 元组演算表达式的安全性 1、无限关系 t | R(t)表示所有不属于R的元组。 2、安全表达示 * 安全表达式 * 安全限制 * DOM()一个有限符号集,当满足下列条件时,元组演算表达式t | ( t)是安全的: 1. 如果t使( t)为真,则t的每个分量是DOM()中的元素. 2. 对于中每一个形如( u) (w(u)的子表达式,若u使w(u)为真,则u的每个分量是DOM()中的元素. 3. 对于中每一个形如( u) (w(u)的子表达式,若u使w(u)为假,则u的每个分量必属于DOM().换言之,若u的某一
17、分量不属于DOM(),则w(u)为真.,E,A,例. 设有关系R如图4-8( a),S=t | R( t),若不进行安全限制,则可能是一个无限关系.所以令 DOM()=A(R)B( R)C(R) =a1,a2,b1,b2,c1,c2 则S是DOM()中各元素的笛卡尔积与R的差集.结果如图4-8(b).,4.4.2 一种元组关系演算语言ALPHA ALPHA语言的基本格式 操作语句 工作空间名(表达式): 公式,各部分的具体说明: :=GET | PUT | HOLD | UPDATA | DELETE |DROP :=(, , ). :=|.|. 公式的基本元素是原子公式 :=| | | |
18、x | x | | :=关系算符| 关系算符,E,A,一. 检索操作 1. 简单检索 例1. 求所有被选修的课程的课程号码. GET W (SC.C#),例2. 求所有学生的数据. GET W (S),2. 限定的检索 例3. 求数学系(MA)中年龄小于20岁的学生的学号和年龄. GET W (S.S#,S.SA): S.SD=MAS.SA20,3. 带排序的检索 例4. 求计算机科学系(CS)的学生的学号和年龄,并按年龄降序排列. GET W (S.S#,S.SA): S.SD=CS DOWN S.SA,4. 带定额的检索 例5. 取出一个计算机科学系学生的学号. GET W (1) (S.
19、S#): S.SD=CS,5. 用元组变量的检索 例6. 求选修课程C2的学生的学号S#.,设学生选修课程的关系名不是SC,而是STUDENT-COURSE. RANGE STUDENT-COURSE X GET W (X.S#): X.C#=C2,6. 用存在量词的检索 例7.求选修课程C2的学生的名字. RANGE SC Y GET W (S.SN): x (X.S#=S.S#X.C# =C2),E,例8.求选修某课程的学生的学号,课程的条件是其直接先行课程是C1。 RANGE C XC GET W (SC.S#): CX (CX.C# =SC.C#CX.PC# =C1),E,(7) 带有
20、多个关系的表达式的检索. 例10.求成绩为A的学生的名字与课程名字. 查询的结果SN和CN分别在S和C两个关系中. RANGE SC SCX GET W (S.SN,C.CN): SCX (SCX.G=ASCX.S# =S.S#) C.C#=SCX.C#),E,(8) 用全称量词的检索 例11.求不选修课程C1的学生的名字. RANGE SC SCX GET W (S.SN): SCX (SCX.S#S.S#SCX.C# C1),A,(9) 用两种量词的检索 例12.求选修全部课程的学生的名字. RANGE C CX RANGE SC SCX GET W (S.SN): CX SCX (SCX
21、.S#=S.S#SCX.C# =CX.C#),E,A,(9) 用蕴函(Implication)的检索 例13.求最少选修S2所选的课程的学生的学号. RANGE C CX SC SCX SC SCY GET W (S.S#): CX( SCX (SCX.S#=S2SCX.C# =CX.C#) SCY (SCY.S#=S.S#SCY.C# =CX.C#),E,A,E,(11) 库函数(build-in function) 库函数也称集函数(Aggregation-function).常用的主要有: 对元组计数: COUNT 求和: TOTAL 最大值: MAX 最小值: MIN 平均值: AVG
22、,例14. 求学生所在系的数目 GET W (COUNT(S.SD),例15. 求计算机科学系学生的平均年龄. GET W (AVG(S.SA):S.SD=CS),二、存储操作 (1). 修改操作.操作语句为:UPDATE 例1. S2从数学系转到计算机科学系. 解: 应先将欲修改的数据读出来,然后修改,最后送回. HOLD W (S.S#,S.SD) :S.S# =S2 MOVE CS TO W.SD UPDATE W,(2). 插入操作.操作语句为:PUT 例1. 插入课程元组(C7,MIS,C4). 解: MOVE C7 TO W.C# MOVE MIS TO W.CN MOVE C4
23、TO W.PC# PUT W (C),(3). 删除操作.操作语句为:DELETE 例1. 删除全部学生: 解: HOLD W (S ) DELETE W HOLD W( SC) 相应地也应删除SC关系中的全部元组. DELETE,4.4.3 * 域关系演算 域演算利用与元组关系演算相同的运算符建立.主要区别是公式中的变量不是元组变量而是元组分量的变量,简称域变量. 一. 域演算表达的形式为:,x1,x2,xk|(x1,x2,xk ) 其中x1,x2,xk是域变量, 是由原子公式和运算符组成的公式.,二. 三类原子公式 1. R(x1,x2,xk ).R是K元关系,Xi是域变量或常量.R(x1,x2,xk )表示由分量x1,x2,xk组成的元组属于R. 2. xy x,y是域变量, 是算术比较符.表示x和y之间
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 事业编制人员管理办法
- 企业创业投资管理办法
- 人民银行支票管理办法
- 信息加分管理办法规定
- 2025年文化娱乐市场细分消费者行为与产业变革趋势实践案例深度报告
- 义乌救灾资金管理办法
- 中药免除药检管理办法
- 企业会所餐厅管理办法
- 2025年影视行业工业化生产流程质量控制与知识产权保护策略实施效果评估报告
- 人才引进高级管理办法
- 《震击器分类大全》
- 桥梁结构设计原理-课件
- 2023年简约黑板风2023高三复学开学第一课主题班会
- 2023上海市安全员《B证》考试题库
- 语文高考专题复习【知识精讲精析+能力拓展提升 】 诗化小说之红柯《麦子》
- 城市消防站建设标准
- 烟叶制丝操作工(中级)技能检定考试题库(附答案)
- 江苏省泰州市泰兴市招聘劳动保障协理员试题及答案解析
- 石灰窑风险辨识管控、各级隐患排查清单
- GB/T 714-2015桥梁用结构钢
- GB/T 4854.1-2004声学校准测听设备的基准零级第1部分:压耳式耳机纯音基准等效阈声压级
评论
0/150
提交评论