4-1-2

来源:百度文库 编辑:神马文学网 时间:2024/04/28 07:37:04

概 述
在商用数据处理应用中,关系模型已经成为当今主要的数据模型。
关系模型有三个重要组成部分:数据结构,数据操纵,数据完整性规则。
',1)">
(1)数据结构:数据库中全部数据及其相互联系都被组织成“关系”(二维表格)的形式。关系模型基本的数据结构是关系。
(2)数据操纵:关系模型提供一组完备的高级关系运算,以支持对数据库的各种操作。关系运算分成关系代数、关系演算和关系逻辑等三类。
(3)数据完整性规则:数据库中数据必须满足实体完整性,参照完整性和用户定义的完整性等三类完整性规则。
关系数据库的数据操纵语言(DML)的语句分成查询语句和更新语句两大类。查询语句用于描述用户的各种检索要求;更新语句用于描述用户进行插入、删除、修改等操作。从计算机语言角度看,后者是在前者的基础上工作,前者比后者复杂。但是前者有理论基础,是主要研究对象。关于查询的理论称为“关系运算理论”。
关系查询语言根据其理论基础的不同分成两类:
(1)关系代数语言:查询操作是以集合操作为基础的运算。
(2)关系演算语言:查询操作是以谓词演算为基础的运算。
4.1.1 关系代数的五个基本操作
关系代数中的操作可以分为两类:
·传统的集合操作:并、差、交、笛卡儿积(乘法),笛卡儿积的逆运算(除法)。
·扩充的关系操作:对关系进行垂直分割(投影)、水平分割(选择)、关系的结合(连接、自然连接)等。
1.并(Union)
',2)">
(1)描述
设关系R和S具有相同的关系模式,R和S的并是由属于R或属于S的元组构成的集合,记为R∪S。
(2)形式定义
R∪S≡{t | t∈R∨t∈S},t是元组变量,R和S的元数相同。
2.差(Difference)
',3)">
(1)描述
设关系R和S具有相同的关系模式,R和S的差是由属于R但不属于S的元组构成的集合,记为R-S。
(2)形式定义
R-S≡{ t | t∈R∧tS},R和S的元数相同。
3.笛卡儿积(Cartesian Product)
',4)">
(1)描述
设关系R和S的元数分别为r和s,定义R和S的笛卡儿积是一个(r+s)元的元组集合,每个元组的前r个分量(属性值)来自R的一个元组,后s个分量来自S的一个元组,记为R×S。
(2)形式定义
①R×S≡{ t | t= ∧ tr∈R ∧ ts∈S }
②此处tr、ts中r,s为上标。若R有m个元组,S有n个元组,则R×S有m×n个元组。
4.投影(Projection)
',5)">
(1)描述
①这个操作是对一个关系进行垂直分割,消去某些列,并重新安排列的顺序。
②设关系R是k元关系,R在其分量Ai1,…,Aim(m≤k,i1,…,im为1到k间的整数)上的投影用πi1,…,im(R)表示,它是一个m元元组集合。
(2)形式定义
πi1,…,im(R)≡{ t | t=〈ti1,…,tim〉∧〈t1,…,tk〉∈R }
(3)例如
π3,1(R)表示其结果关系中第1列为关系R的第3列,第2列为R的第1列。如果R的每列标上属性名,那么操作符π的下标处也可以用属性名表示。例如,关系R(A,B,C),那么πC,A(R)与π3,1(R)是等价的。
5.选择(Selection)
',6)">
(1)描述
选择操作是根据某些条件对关系做水平分割,即选取符合条件的元组。条件可用命题公式(即计算机语言中的条件表达式)F表示。
(2)F中的两种成分
①运算对象:常数(用引号括起来),元组分量(属性名或列的序号)。
②运算符:算术比较运算符(<,≤,>,≥,=,≠,也称为θ符),逻辑运算符(∧,∨,┐)。
(3)形式定义
①σF(R)={ t | t∈R ∧ F(t)= true }
②σ为选择运算符,σF(R)表示从R中挑选满足公式F为真的元组所构成的关系。
(4)说明
σ2>'3'(R)表示从R中挑选第2个分量值大于3的元组所构成的关系。书写时,为了与属性序号区别起见,常量用引号括起来,而属性序号或属性名不要用引号括起来。
6.实例
',7)">
',8)">
',9)">
已知有两个关系R和S,求R∪S、R-S、R×S、πC,A(R)和σB>'4'(R)。
4.1.2 关系代数的四个组合操作
1.交(intersection)
',10)">
(1)描述
关系R和S的交是由属于R又属于S的元组构成的集合,记为R∩S,这里要求R和S定义在相同的关系模式上。
(2)形式定义
①R∩S≡{t︱t∈R ∧ t∈S},R和S的元数相同。
②由于R∩S = R-(R-S),或R∩S = S-(S-R),因此交操作不是一个独立的操作。
2.连接(join)
',11)">
(1)描述
连接是从关系R和S的笛卡儿积中选取属性值满足某一θ操作的元组,记为RS,这里i和j分别是关系R和S中的第i个、第j个属性的序号。
(2)形式定义
①RS≡{t︱t= ∧ tr∈R ∧ ts∈S ∧tir θtjs}
②此处,tir、tjs分别表示元组tr的第i个分量、元组ts的第j个分量,tir θtjs表示这两个分量值满足θ操作。
(3)说明
①显然,连接是由笛卡儿积和选择操作组合而成。设关系R的元数为r,那么连接操作的定义等价于:RS≡σiθ(r+j)(R×S)
②该式表示连接是在关系R和S的笛卡儿积中挑选第i个分量和第(r+j)个分量满足θ操作的元组。
③如果θ是等号“=”,该连接操作称为“等值连接”。
(4)实例
',12)">
已知关系R和S,求RS
3.自然连接(natural join)
',13)">
(1)自然连接的具体计算过程
①计算R×S;
②设R和S的公共属性是A1,…,AK,挑选R×S中满足R.A1=S.A1,…,R.AK=S.AK的那些元组;
③去掉S.A1,…,S.AK这些列。
(2)自然连接的定义
RS≡πi1,…,im(σR.A1=S.A1∧...∧R.AK=S.AK(R×S)),其中i1,…,im为R和S的全部属性,但公共属性只出现一次。
(3)实例:求关系R和S的自然连接
',14)">
(4)说明
①一般自然连接使用在R和S有公共属性的情况中。
②如果两个关系没有公共属性,那么其自然连接就转化为笛卡儿积操作。
4.除法(division)
',15)">
(1)除法的定义
①设关系R和S的元数分别为r和s(设r>s>0),那么R÷S是一个(r-s)元的元组的集合。
②(R÷S)是满足下列条件的最大关系:其中每个元组t与S中每个元组u组成的新元组必在关系R中。为方便起见,我们假设S的属性为R中后s个属性。
(2)除法的具体计算过程
①T =π1,2,…,r-s(R)
②W =(T×S)-R (计算T×S中不在R的元组)
③V =π1,2,…,r-s(W)
④R÷S = T-V
⑤即R÷S≡π1,2,…,r-s(R)-π1,2,…,r-s((π1,2,…,r-s(R)×S)-R)
(3)实例:除法操作的例子

4.1.3 关系代数运算的应用实例
1.有四个关系模式T、C、S和SC
(1)教师关系T(T#,TNAME,TITLE)。
(2)课程关系C(C#,CNAME,T#)。
(3)学生关系S(S#,SNAME,AGE,SEX)。
(4)选课关系SC(S#,C#,SCORE)。
2.用关系代数表达式表达每个查询语句
(1)检索学习课程号为C2课程的学生学号与成绩。
πS#,SCORE(σC#='C2'(SC))
π1,3(σ2='C2'(SC))
(2)检索学习课程号为C2课程的学生学号与姓名。
πS#,SNAME(σC#='C2'(SSC))
πS#,SNAME(σC#='C2'(SC)S)
(3)检索至少选修LIU老师所授课程中一门课程的学生学号与姓名。
πS#,SNAME(σTNAME='LIU'(SSCCT))
πS#,SNAME(πS#(ΠC#(σTNAME='LIU'(T)C)SC)S)
(4)检索选修课程号为C2或C4的学生学号。
πS#(σC#='C2'∨C#='C4'(SC))
(5)检索至少选修课程号为C2和C4的学生学号。
π1(σ1=4∧2='C2'∧5='C4'(SC×SC))
πS#,C#(SC)÷πC#(σC#='C2'∨C#='C4'(C))
(6)检索不学C2课的学生姓名与年龄。
πSNAME,AGE(S)-πSNAME,AGE(σC#='C2'(SSC))
πSNAME,AGE(S)-πSNAME,AGE(σC#='C2'(SC)S)
(7)检索学习全部课程的学生姓名。
πSNAME(S(ΠS#,C#(SC)÷πC#(C)))
(8)检索所学课程包含学生S3所学课程的学生学号。
πS#,C#(SC)÷πC#(σS#='S3'(SC))
4.1.4 关系代数的两个扩充操作
1.外连接(outer join)
(1)缘由
①在关系R和S做自然连接时,我们选择两个关系在公共属性上值相等的元组构成新关系的元组。
②此时,关系R中某些元组有可能在S中不存在公共属性上值相等的元组,造成R中这些元组的值在操作时被舍弃。由于同样的原因,S中某些元组也有可能被舍弃。
③为了在操作时能保存这些将被舍弃的元组,提出“外连接”操作。
(2)定义

1.外连接:如果R和S做自然连接时,把原该舍弃的元组也保留在新关系中,同时在这些元组新增加的属性上填上空值(null),这种操作称为“外连接”操作,用符号RS表示。
2.左外连接:如果R和S做自然连接时,只把R中原该舍弃的元组放到新关系中,那么这种操作称为“左外连接”操作,用符号RS表示。
3.右外连接:如果R和S做自然连接时,只把S中原该舍弃的元组放到新关系中,那么这种操作称为“右外连接”操作,用符号RS表示。


(3)实例:自然连接和外连接的例子

2.外部并(outer union)
(1)定义
①前面定义两个关系的并操作时,要求R和S具有相同的关系模式。
②如果R和S的关系模式不同,构成的新关系的属性由R和S的所有属性组成(公共属性只取一次),
③新关系的元组由属于R或属于S的元组构成,
④同时元组在新增加的属性上填上空值,
⑤那么这种操作称为“外部并”操作。
(2)实例:外部并的例子