关系数据库基本理论计算机软件技术基础教程教学.ppt
《关系数据库基本理论计算机软件技术基础教程教学.ppt》由会员分享,可在线阅读,更多相关《关系数据库基本理论计算机软件技术基础教程教学.ppt(138页珍藏版)》请在三一办公上搜索。
1、17.1 基本概念17.2 关系运算17.3 关系数据库语言17.4 关系模式规范化,第17章 关系数据库基本理论,返回主目录,第17章 关系数据库基本理论,17.1 基 本 概 念 由于关系模型与其他模型(层次或网状)相比,不仅能直观地利用人们所熟悉的表格来描述数据库中的数据,而且能够利用先进的数学工具关系代数来对这些表格进行任意的分割和组装,随机地产生出用户所需的各种新表格,从而为关系数据库的发展提供了基础和保证。从数学的角度而言,关系是集合论中的一个概念,下面给出它的定义。定义17.1 给定一组集合D1,D2,Dn,它们可以是相同的,若R是这样一个有序n元组:(d1,d2,dn)|diD
2、i,i=1,2,n,则称R是对于这n个集合的一个关系,并称集合D1,D2,Dn为关系R的域,称n为关系的度。这里的域是值的集合,它可以是整数集合、字符串集合、实数集合由于n元组(也简称为元组)可以看成是从属性名到属性的域中的值的映射,从而可用映射的集合来定义关系,即有以下定义。定义17.2 关系是命名属性集合下元组的有限集合,其中每一元组是命名属性集合到各对应值域中的值的映射。例17.1(学号,姓名,出生年月,性别,班级)构成命名属性集合,粗略地说,以上给定的命名属性集合(属性名集合)给出了一个关系模式。关系模式就是二维表的表框架,相当于记录型。设关系名取REL,其属性为A1,A2,Ak,关系
3、模式记为REL(A1,A2,Ak),则以上学生关系模式为,粗略地说,以上给定的命名属性集合(属性名集合)给出了一个关系模式。关系模式就是二维表的表框架,相当于记录型。设关系名取REL,其属性为A1,A2,Ak,关系模式记为REL(A1,A2,Ak),则以上学生关系模式为,学生(学号,姓名,出生年月,性别,班级)实际上,关系模式除了上述的属性名集外,还有其他内容。它应该是结构的描述或对关系特性的表征。这些特性包括描述关系的各种属性、属性值的限制、各属性间的数据依赖性以及对关系的一些强制性的限制,即通常所说的完整性约束条件。下面以数学形式给出关系模式的定义。定义17.3 关系模式是一个多元组 RE
4、L(U,D,DOM,I,F)其中,REL表示关系名,U是组成REL的有限属性名集,D是U中属性的值域,DOM是属性列到域的映射,I是一组完整性约束条件,F是属性间的一组依赖关系。,关系模式和关系是关系数据库中密切相关但又有所区别的两个概念。关系模式描述了关系的信息结构以及语义约束,是关系的“型”。而关系则是关系模式在某一时刻的“当前值”,它是现实世界某一时刻的状态的真实反映。所有关系的当前值构成(关系)数据库。关系是随时间变化而变化的,但这种变化不改变属性的特性和属性间的联系。关系数据库的逻辑设计主要是关系模式的设计,因此,常称关系模式是关系数据库的结构和关系的框架或内涵,而把关系称为关系模式
5、的实例或外延。在关系模型中所使用的术语与其他模型中的术语有些不同,但它们之间存在对应关系。在关系模型中,将能够惟一识别元组的属性或最小属性组称为关系的候选关键字。而选定的用于识别元组的属性或最小属性组称为关系的主关键字,也称为主码。,关系的每一列称为一个域,它包含了一个属性的所有取值。关系中的列的数目称为阶数,行的数目称为基数。关系模型中的术语与数据世界中的术语的对应关系见表17.1。,17.2 关 系 运 算,在关系模型中,实体以及实体间的联系采用了单一数据结构关系来表示。对数据的操作就是对关系的运算。关系运算的形式可分为两大类:(1)关系代数:把关系看作集合,以关系为运算对象的关系运算。(
6、2)关系演算:使用数理逻辑谓词演算概念的关系运算。按运算对象不同可分为元组关系演算和域关系演算。1.关系代数 关系代数是以集合代数为基础发展而来的,它以关系为运算对象。,关系代数的运算可分为两类:传统的集合运算和专门的关系运算。1)传统的集合运算 传统的集合运算包括并、交、差和笛卡尔积。(1)并:设R和S为同类关系,即具有相同的度和相应属性在相同的域中取值,但并不要求属性名一致,则关系R和S的并由属于R或属于S的所有元组构成,记作RS。设t表示元组,则其数学表达形式为(2)交:设R和S为同类关系,则关系R和S的交由属于R同时属于S的所有元组构成,记作RS,其数学表达形式为,(2)交:设R和S为
7、同类关系,则关系R和S的交由属于R同时属于S的所有元组构成,记作RS,其数学表达形式为(3)差:设R和S为同类关系,则关系R和S的差由属于R但不属于S的所有元组构成,记作RS,其数学表达形式为 RS=t|tRtS 图17.1给出了关系R和S的并、交和差的图表表示。(4)笛卡尔积:设R为k1元关系,S为k2元关系,则R和S的笛卡尔积是一个(k1+k2)元的关系,其中每个元组的前k1个分量取自R中的一个元组,后k2个分量取自S中的一个元组,记作RS,其数学表达式为 图17.2给出了一个笛卡尔积的实例。,图17.1 同类关系R和S的并、交、差运算,图17.2 R和S的笛卡尔积,2)专门的关系运算 专
8、门的关系运算包括投影、选择、连接、自然连接和除。(1)投影:对关系的投影运算,是从关系中取出所指定的属性列,并且除去重复元组来构成新的关系的运算。设R是一个k元关系,Ai1,Ai2,Aim分别是它的第i1,i2,im个属性,则关系R在Ai1,Ai2,Aim上的投影是一个m元关系,其属性为Ai1,Ai2,Aim,记作 其中,A表示R属性的子集Ai1,Ai2,Aim;tA表示R中元组对应于A的分量。图17.3给出一个选择的实例。,其中,是选择运算符,F是限定条件布尔表达式。F由三部分组成:运算对象:列号、常数或属性名;算术比较符:、;逻辑运算符:(NOT)、(AND)、(OR)。图17.4给出了一
9、个选择的实例。F(R)的选择是在行的方向上进行的。(3)连接:连接运算把两个关系的共同的域按某种条件约束结合在一起形成新的关系。设R是k1元关系,S是k2元关系,算术比较符是。则关系R的第i列和关系S的第j列的连接定义为,图17.4 R的选择运算,(3)连接:连接运算把两个关系的共同的域按某种条件约束结合在一起形成新的关系。设R是k1元关系,S是k2元关系,算术比较符是。则关系R的第i列和关系S的第j列的连接定义为(i和j中的i、j若是属性名时,可省略)从定义中可以看出,连接运算是从两个关系的笛卡尔积中选取满足一定连接条件的元组集合,连接的结果是一个(k1+k2)元的关系。图17.5给出了一个
10、连接的实例。,图17.5 连接实例,(4)自然连接:当两个关系R和S的某些列具有相同的属性名时,可利用这些同名属性列中的相同值作为连接条件将两个关系连接起来,构成自然连接。在连接后的关系中,不仅含有R与S不同的属性列,而且含有相同的属性列,其元组的数目由相同属性列中的相同值决定。设R是属性名组为(A1,A2,Am,Ak1)的k1元关系,S是属性名组为(A1,A2,Am,Bm+1,Bk2)的k2元关系,其中A1,A2,Am是同名属性列,则R和S的自然连接定义为 进行自然连接的步骤如下:计算RS;,选择AiR=AiS的所有元组;去掉重复属性。自然连接是关系间最重要的一种连接,一般无特殊说明的连接指
11、的是自然连接。图17.6给出了一个自然连接的实例。(5)除:除运算是指用一个(m+n)度的关系R除以一个n度关系S,运算结果生成一个m元的新关系。这里R的第(m+i)个属性和S的第i个属性(i=1,n)必须是在相同的域上定义。当把R的前m个属性看作一个组合属性x,后n个属性看作一个组合属性y,则S也可类似地看成有一个组合属性y。这样以S中的y值来对R进行分组,当组中含有y值时,则组中的x值便构成了R除以S的一个元组。R除以S的数学表达式为,图17.6 R和S的自然连接,其中为关系R中除去与S关系相同的其余属性。图17.7给出了除运算的实例。上面我们对关系代数的九种运算分别进行了介绍,在这九种运
12、算中,并、差、笛卡尔积、投影、选择称为基本关系代数运算,其他的运算可由这五种运算推导而来。用关系代数运算可完成对数据的检索、删除和插入操作。这些操作是通过将关系代数运算经有限次复合而成。关系代数对数据库的数据操作是完备的,也就是说利用关系代数可实现一切数据操作。下面我们将以一个学生课程数据库为例说明如何用关系代数来实现数据操作。,图17.7 除运算,上面我们对关系代数的九种运算分别进行了介绍,在这九种运算中,并、差、笛卡尔积、投影、选择称为基本关系代数运算,其他的运算可由这五种运算推导而来。用关系代数运算可完成对数据的检索、删除和插入操作。这些操作是通过将关系代数运算经有限次复合而成。关系代数
13、对数据库的数据操作是完备的,也就是说利用关系代数可实现一切数据操作。下面我们将以一个学生课程数据库为例说明如何用关系代数来实现数据操作。一个简单的学生课程数据库由三个关系组成,如图17.8所示。例17.2 检索出选择C101课程的学生名。解:首先从SC表中选择C#为C101的元组,然后将STU与选择后构成的表进行自然连接,最后从自然连接形成表中对SN投影,即得所求。整个运算为,图17.8 简单的学生课程数据库,例17.3 检索选修全部课程的学生名。解:首先从C表中对C#投影得到全部课程代号,然后用SC表对S#和C#投影所得的表除以全部课程代号,即可得到相应的S#,最后用S#与STU表作自然连接
14、,并从自然连接形成的表中对SN投影,即得所求。整个运算为 例17.4 将学号为19205的学生选修的课程代号为C401的所得成绩B插入关系SC。解:这个操作只需利用并运算即可完成。整个运算为SC19205,C401,B,例17.5 删除学生王凡所选修的课程代号为C201的所得成绩。解:首先从STU表中选择SN为王凡的元组,并对选择后构成的表进行S#投影,得到王凡的学号。通过对SC表中选择C#为C201的元组,得到所有选择了C201的SC元组。将所选择的SC元组与王凡的学号自然连接得到王凡选修C201课程的SC元组。最后,使用从SC表中减去王凡选修C201课程的SC元组,即得所求。整个运算为 2
15、.元组关系演算 元组关系演算使用元组作为变量、关系演算公式作为约束条件,来产生所需的元组集合。这个元组集合构成了一个演算结果关系。元组关系演算表达式可用以下形式表示为 t:(t),其中,t表示元组变量,它的取值范围是它所属于的整个关系;(t)表示作为约束条件的关系演算公式,它由原子公式和运算符构成。原子公式是指只含有算术比较运算符的关系演算公式,共分为三类:(1)R(u)。R表示关系名;u表示元组变量;R(u)表示u是关系R中的元组。(2)tiSj。t和S表示元组变量;表示算术比较运算符,它包括=,,,;tiSj表示t的第i个分量与S的第j个分量应满足条件。例如t1S2表示t的第1个分量小于S
16、的第2个分量。(3)tiC。C表示常量。这个原子公式表示t的第i个分量和C满足条件。,除了以上所使用的算术运算符外,关系演算还使用以下逻辑运算符和量词运算符:(1)逻辑运算符包括(逻辑与)、(逻辑或)和(逻辑非)三种。(2)量词运算符包括(存在量词)、(全称量词)两种。存在量词和全称量词使用在元组变量前面,表示了对该元组变量的一种约束关系。例如:t(t)表示若存在一个t使得(t)为真时,则 t(t)为真,否则为假;t(t)表示,仅当所有的t都使(t)为真时,才使 t(t)为真。当有存在量词或全称量词出现在元组变量前时,该元组变量称为“约束”变量,否则为“自由”变量。自由变量和约束变量的概念相当
17、于程序设计语言中的全局变量和局部变量的概念。,在关系演算中,演算执行的先后顺序为括号、算术运算符、量词运算符、逻辑运算符、。关系代数中的五种基本运算都可以用元组关系演算来表示,所以元组关系演算对数据库的操作也是完备的。下面给出关系代数中的五种基本运算的元组关系演算形式。(1)关系R和S的并集RS可表示为 t:RS(2)关系R和S的差集R-S可表示为 t:R S(3)关系R和S的笛卡尔积RS可表示为,t(r+s):(u(r)(v(s)(R(u)S(v)t1=u1tr=urtr+1=v1tr+s=vs)其中,t(r+s)表示t元组具有r+s元,u(r)表示u元组有r元,v(s)表示v元组有s元。(
18、4)关系R的投影运算i1,i2,ik(R)可表示为 t(k)u(R(u)t1=ui1 tk=uik)其中,i1,i2,ik是R的元组中属性的编号。(5)关系R的选择运算F(R)可表示为 t:R(t)F(t)其中,F(t)表示选择条件公式,由元组t的各分量表示ti和算术运算符以及逻辑运算符构成。,下面给出关系代数中的四个例子的元组关系演算表达式,来说明元组关系演算的具体应用。(1)例17.2的元组关系演算表达式为 t2:STU(t)u(SC(u)t1=u1u2=C101)(2)例17.3的元组关系演算表达式为 t2:STU(t)u(c(u)v(SC(v)u1=v2v1=t1)(3)例17.4的元
19、组关系演算表达式为 t:SC(t)t1=19205t2=C401t3=B(4)例17.5的元组关系演算表达式为 t:SC(t)(u(STU(u)u2=王凡t1=u1)v(C(v)v1=C201v1=t2),3.域关系演算 域关系演算是以元组的分量为变量(又称域变量)的关系演算。这种关系演算与元组关系演算的主要区别有两点:用域变量代替了元组变量;域变量的取值范围是某个值域而不是整个关系。与元组演算表达式类似,域关系演算表达式的形式为 t1,t2,tk|(t1,t2,tk)其中,t1,t2,tk是域变量;(t)为约束条件的关系演算公式,它由原子公式和运算符构成。域关系演算中的原子公式分为两类:(1
20、)R(Ai:Vj|i,j=1,2,)。其中,Ai是关系R中的属性名,Vj是域变量或常量。,例如C(C#:t1,CN:电子线路)表示课程名为电子线路的课程代号。(2)xy。其中,x,y或都为域变量,或一个为域变量而另一个为常量。是算术运算符。xy表示x和y满足条件。在域关系演算中使用的运算符和运算的执行顺序都与元组关系演算中的规定相同。关系代数运算中的五种基本运算也可用域关系演算来表示,所以域关系演算对数据库的操作也是完备的。下面给出关系代数中的五种基本运算的域关系演算表达式。(1)关系R和S的并集RS可表示为,t1,t2,tk|R(A1:t1,A2:t2,Ak:tk)S(A1:t1,A2:t2
21、,Ak:tk)(2)关系R和S的差集RS可表示为 t1,t2,tk|R(A1:t1,A2:t2,Ak:tk)S(A1:t1,A2:t2,Ak:tk)(3)关系R和S的笛卡尔积RS可表示为 t1,t2,tr,tr+1,tr+s|(u1)(u2)(ur)(v1)(v2)(vr)(R(A1:u1,A2:u2,Ar:ur)S(B1:v1,B2:v2,Bs:vs)t1=u1t2=u2tr=urtr+1=v1tr+2=v2tr+s=vs)(4)关系R的投影运算i1,i2,ik(R)可表示为 t1,t2,tk|(u1)(u2)(um)(R(A1:u1,A2:u2,Am:um)t1=ui1t2=ui2tik=
22、uik),(5)关系R的选择运算F(R)可表示为 t1,t2,tk|R(A1:t1,A2:t2,Ak:tk)F(A1:t1,A2:t2,Ak:tk)其中,F(A1:t1,A2:t2,Ak:tk)表示选择条件公式,由原子公式和运算符构成。元组关系演算表达式与域关系演算表达式的相互转换是容易的。由元组关系演算表达式到域关系演算表达式的转换遵循以下两条规则:(1)如果t是k元的,则引入k个域变量t1,t2,tk来替换t,用ti替换t元组的第i个分量ti。(2)对于量词(u)或(u),若u是m元的,则引入m个域变量u1,u2,um,并用(u1)(u2)(um)替代(u)和用(u1)(u2)(um)替代
23、(u)。,(1)例17.2的域关系演算表达式为 t2|STU(S#:t1,SN:t2)(u1)(u2)(SC(S#:u1,C#:C101)t1=u1)(2)例17.3的域关系演算表达式为 t2|STU(S#:t1,SN:t2)(u1)(C(C#:u1)(v1)(v2)(SC(S#:v1,C#:v2)u1=v2v1=t1)(3)例17.4的域关系演算表达式为 t1,t2,t3|SC(S#:t1,C#:t2,G:t3)t1=19205t2=C401t3=B(4)例17.5的域关系演算表达式为 t1,t2,t3|SC(S#:t1,C#:t2,G:t3)(u1)(u2)(STU(S#:u1,SN:王凡
24、),t1=u1)(v1)(C(C#:v1)v1=C201v1=t2)从以上例子可以看出在域关系演算表达式中,如果一个元组中的有些域没有使用,则可以省略。4.关系演算的安全限制 在我们给出关系的定义时,就强调指出关系是命名属性集合下元组的有限集合。这样就要求对关系施加关系运算后所得到的关系也应是有限集合。对于关系代数,由于它是在给定的关系上定义的,只要给定关系是有限的,则经关系代数运算后的关系仍然是一个有限的集合,所以关系代数运算是安全的。对于关系演算,由于它包含了逻辑非、存在量词和全称量词运算,这样可能使运算结果出现无限关系和无穷验证过程。下面我们就以元组关系演算为例来进行说明,域关系演算的情
25、况类似。,例如,t:R(t)表示集合是由不在关系R中的元组组成。当关系R的某个域是无限的,则t:R(t)是一个无限集合。由无限集合构成的关系需要使用具有无限存储容量的计算机,这是无法实现的。另外,若要判断(t)(t)和(t)(t)的真和假时,如果t的取值为无限,则要进行无穷次验证。显然这在实际中既无法实现又毫无意义。因此,必须采取一定的措施来防止关系演算出现上述情况。我们把所采取的措施称为安全限制 安全限制就是对关系演算施加限制条件,使关系演算表达式的变量在一个规定的范围内取值,从而避免无限关系和无穷次验证现象的发生。安全限制的关键在于定义一个与有关的有限符号集DOM(),使(t)的t的取值范
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 关系 数据库 基本理论 计算机软件 技术 基础教程 教学
链接地址:https://www.31ppt.com/p-6040839.html