关系代数和数据依赖概念
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二讲关系代数和数据依赖概念
1 关系代数
1970年IBM公司的E.F.Cood博士在论文“一个通用关系式数据库系统的模型”中首先提出了关系模型,它提供了格式化数据库系统难以做到的数据独立性和数据相容性。此模型后来又由Codd加以改进,被许多人认为是一切数据库系统的未来。
关系数据库之所以发展如此之快,因为关系数据库的模型简明,便于用户理解使用方便等等特点,更重要的是,关系数据库有着网状和层次数据库没有的数学基础----关系代数,可以利用关系代数对表格进行任意的分割和组装,随机地产生用户所需要的各种新表,这为关系数据的发展提供了基础和保证。
1.1 基本概念
术语
定义给定一组集合D1,D2,...,D n,它们可以是相同的,若R是这样一个有序n元组:
则称R是对于这n个集合的一个关系,并称集合D1,D2,...,D n为关系R的域,称n为关系的度。
1.2 关系运算
在关系模型中,实体以及实体间的联系采用了单一数据结构----关系来表示。对数据的操作就是对关系的运算。关系运算的形式可分为两大类:
(1)关系代数:把关系看作集合,以关系为运算对象的关系运算。
(2)关系演算:使用数理逻辑谓词演算概念的关系运算。
1.2.1 并(Union)
设R和S为同类关系,即具有相同的度和相应属性在相同的域中取值,但并不要求属性名一致,则关系R和S的并由属于R或属于S的所有元组构成,记作R S。
例:
SQL语句: Select * from R Union Select * from S
1.2.2 交(Intersection)
设R和S为同类关系,则关系R和S的交由属于R同时属于S的所有元组构成,记作R S。
例:
SQL语句: Select R.A,R.B,R.C from R,S where R.A=S.A and R.B=S.B and R.C=S.C
1.2.3 差(Difference)
设R和S为同类关系,则关系R和S的差由属于R但不属于S的所有元组构成,记作R-S。
例:
1.2.4 笛卡尔积(Cartesian Product)
设R为k1元关系,S为k2元关系,则关系R和S的笛卡尔积是一个(k1+k2)元的关系,其中每个元组的前k1个分量取自R中的一个元组,后k2个分量取自S 中的一个元组,记作R⨯S。
例:
SQL语句: Select * from R,S
1.2.5 投影(Projection)
设R为k元关系,A i1,A i2,...,A im分别是它的第i1,i2,...,im个属性,则关系R在A i1,A i2,...,A im上的投影是一个m元关系,其属性为A i1,A i2,...,A im,记作:
πi1,i2,…,im(R)
投影的基本思想是从一个关系中选择我们需要的属性成分,并按要求排列组成一个新的关系,新的关系的各属性值来自原来关系中相应的属性值,并去掉重复元组。
(R),得
例:对关系R,做投影π
3,1
SQL语句: Select Distinct C, A from R
1.2.6 选择(Selection)
设F是一个命名公式,则在关系R上的F选择是在R中挑选满足F的所有元
(R)
组,组成一个新的关系,这个新的关系是R的一个子集,记为:σ
F
其中F由下列三部分组成:运算对象、算术比较符、逻辑运算符。
(R),得
例:对关系R,做选择σ
[1]=a V [3]=f
SQL语句: Select * into R1 from R where A='a' or C='f'
1.2.7 连接(Join)
连接运算把两个关系的共同的域按某种条件约束结合在一起形成新的关系。设R为k1元关系,S为k2元关系,算术比较符是θ。则关系R的第i列和关系S 的第j列的连接定义为:
从定义可以看出,连接运算是从两个关系的笛卡尔积中选取满足一定连接条件的元组的集合,连接的结果是一个(k1+k2)元的关系。也称为一般连接。
例:
SQL语句:(c)Select * from R, S where R.A < S.D
(d)Select * from R, S where R.C = S.C
1.2.8 自然连接(Natural Join)
当两个关系R和S的某些列具有相同的属性名时,可利用这些同名属性列总的相同值作为连接条件将两个关系连接起来,构成自然连接。在连接后的关系中,不仅含有R与S不同的属性列,而且含有相同的属性列,其元组的数目由相同属性列中的相同值决定。
设R是属性名组为(A1,A2,...,A m,...,A k1)的k1元关系,S是属性名组为(A1,A2,...,A m,B m+1,...,B k2)的k2元关系,其中A1,A2,...,A m是同名属性列,则R和S的自然连接定义为...。
进行自然连接的步骤如下:(1)计算R⨯S;(2)选择A i∙R=A i∙S的所有元组;(3)去掉重复属性。
可以看出,如果两个关系没有公共属性,自然连接就是笛卡尔积。
例:
SQL语句: Select Distinct R.A, R.B, R.C, S.D from R,S where R.B=S.B and R.C=S.C
1.2.9 除(Division)
除运算是指用一个(m+n)度的关系R除以一个n度关系S,运算结果生成一个m元的新关系。这里R的第(m+i)个属性和S的第i个属性(i=1,...,n)必须是在相同的域上定义。当把R的前m个属性看作一个组合属性x,后n个属性看成一个组合属性y,则S也可类似地看成一个组合属性y。这样以S中的y