1.基本概念2.关系运算3.关系数据库语言4.关系模式规范化第十七章关系数据库基本理论关系模型把数据看成二维表中的数据,使用二维表格来描述实体及其相互关系。每一个二维表称为一个关系,二维表格中的每一列对应实体的一个属性和相应的属性值,每一行形成一个由多种属性组成的多元组,与一个特定的实体相对应。对于实体集之间的联系通过在不同的二维表格中保留某些共同的属性列来实现。1)关系模型的优势:(1)直观地利用人们所熟悉的二维表格来描述数据库的数据;(2)能够利用先进的数学工具--关系代数来对这些表格进行任意的分割和组合,随机产生出用户所需的各种新表格,从而为关系数据库的发展提供了基础和保证。1.基本概念2)关系的数学定义给定一组集合D1,D2,…,Dn,它们可以是相同的,若R是这样一个有序n元组:{(d1,d2,…,dn)|di∈Di,i=1,2,…,n}则称R是对于这n个集合的一个关系,并称集合D1,D2,…,Dn为关系R的域,称n为关系的度。这里的域是值的集合,可以是整数集合、字符串集合、实数集合等。姓名性别年龄张珊女19李思男20王武男20属性元组D1D2D31.基本概念3)关系的映射定义关系是命名属性集合下元组的有限集合,其中每一个元组是命名属性集合到各对应值域中的值的映射。命名属性集合给出了一个关系模式。关系模式就是二维表的表框架,相当于记录型。设关系名取REL,其属性为A1,A2,…,Ak,关系模式记为REL(A1,A2,…,Ak),上例中学生关系模式可以记为:学生(学号,姓名,课程、教室,时间)学号姓名课程教室时间001张珊数学11000900001张珊英语13001400002李思数学11000900002李思英语13001400构成命名属性集合构成一个关系1.基本概念4)关系模式的定义关系模式是一个多元组REL(U,D,DOM,I,F)其中REL表示关系名,U表示组成REL的有限属性名集,D是U中属性的值域,DOM是属性列到域的映射,I是一组完整性约束条件,F是一组依赖条件。1.基本概念5)关系模式与关系区别与联系(1)关系模式描述了关系的信息结构以及语义约束,是关系的型,而关系则是关系模式在某一时刻的当前值,是现实世界某一时刻的状态的真实反映。所有关系的当前值构成了关系数据库。(2)关系是随着时间变化而变化的,但这种变化不改变属性的特征和属性间的联系。(3)关系数据库的逻辑设计主要是关系模式的设计,因此常称关系模式是关系数据库的结构和关系的框架或内涵,而把关系称为关系模式的实例或外延。1.基本概念6)关系模型和数据世界的术语对照在关系模型中,能够唯一标识元组的属性或最小属性组称为关系的候选关键字。而选定的用于识别元组的属性或最小属性组称为关系的主关键字,也称为主码。关系中的列的数目称为阶数,行的数目称为基数。关系模型数据世界元组记录关系模型数据模型属性数据项(字段)属性值数据项的具体取值域数据项的取值范围关系模式记录型关系文件候选关键字候选关键字次关键字次关键字主关键字主关键字1.基本概念1.基本概念2.关系运算3.关系数据库语言4.关系模式规范化第十七章关系数据库基本理论关系运算的按形式分类:(1)关系代数:把关系看出集合,以关系为运算对象的关系运算。(2)关系演算:使用数理逻辑谓词演算概念的关系运算。按运算对象的不同分为元组关系演算和域关系运算。关系运算关系代数关系演算元组关系演算域关系演算2.关系运算1)关系代数关系代数以集合代数为基础发展而来的,它以关系为运算对象。关系代数的运算分为两类:传统的集合运算和专门的关系运算。关系代数传统的集合运算专门的关系运算并交差笛卡尔积投影选择连接自然连接除2.关系运算1)并(union)假设有n元关系R和n元关系S,它们相应的属性值取自同一个域,则它们的并仍然是一个n元关系,它由属于关系R或属于关系S的元组组成,并记为R∪S。R∪S={t|t∈R∨t∈S}并运算满足交换律,即R∪S与S∪R是相等的。传统的集合运算R∪SSR2.关系运算2.关系运算2)交(intersection)假设有n元关系R和n元关系S,它们相应的属性值取自同一个域,则它们的交仍然是一个n元关系,它由属于关系R且又属于关系S的元组组成,并记为R∩S。R∩S={t|t∈R∧t∈S}交运算满足交换律,即R∩S与S∩R是相等的。R∩SSR2.关系运算2.关系运算3)差(difference)假设有n元关系R和n元关系S,它们相应的属性值取自同一个域,则n元关系R和n元关系S的差仍然是一个n元关系,它由属于关系R而不属于关系S的元组组成,并记为R-S。R-S={t|t∈R∧t∈S}差运算不满足交换律,即R-S与S-R是不相等的。R-SSR2.关系运算2.关系运算4)笛卡尔积(Cartesianproduct)设有m元关系R和n元关系S,则R与S的笛卡尔积记为R×S,它是一个m+n元组的集合(即m+n元关系),其中每个元组的前m个分量是R的一个元组,后n个分量是S的一个元组。R×S是所有具备这种条件的元组组成的集合。在实际进行组合时,可以从R的第一个元组开始到最后一个元组,依次与S的所有元组组合,最后得到R×S的全部元组。设R有k个元组,S有f个元组,R和S的笛卡尔R×S共有k×f个元组。2.关系运算1.R×S的度为n+m,本例中为2+3=5(即有5个属性)。2.R×S的元组个数为R的元组个数乘以S的元组个数,本例中为3x2=6。2.关系运算1)投影(projection)投影运算是在给定关系的某些域上进行的运算。通过投影运算可以从一个关系中选择出所需要的属性成分,并且按要求排列成一个新的关系,而新关系的各个属性值来自原关系中相应的属性值。投影就是从给定关系中挑选出指定的属性而组成的一个新关系。通俗地说,投影是对原关系的垂直分解。注意以下三点:1)新关系删除了原关系中的某些属性;2)新关系中的重复元组将被自动删除;3)投影可能改变属性的排列次序。专门的关系运算}|.{)()(,...,,21RtAtRRAiiim2.关系运算投影的例子。学生关系及其在姓名和性别上的投影如下:学生姓名性别年龄成绩张珊女1886李思男2095王武男2078赵柳女1992陈奇男1989李思男1877学生1姓名性别张珊女李思男王武男赵柳女陈奇男()π姓名,性别学生2.关系运算2)选择(selection)选择运算是在指定的关系中选取所有满足给定条件的元组,构成一个新的关系,而这个新的关系是原关系的一个子集。选择运算用公式表示为其中的σ为选择运算符;R是关系名;F为限定条件布尔表达式,F由三部分构成:逻辑运算符:∧或and(与)、∨或or(或)、┐或not(非)算术比较符:有=、≠、>、≥、<、≤,运算对象为常量、或者是属性名、或者是简单函数。)}(|{)(tFRttRF2.关系运算选择的例子。下面的表达式表示从学生关系中选取满足性别=“男”并且成绩≥80的元组组成一个新的关系。新关系如下:学生1姓名性别年龄成绩李思男2095陈奇男1989学生姓名性别年龄成绩张珊女1886李思男2095王武男2078赵柳女1992陈奇男1989李思男1877()s性别=男∧成绩≥80学生2.关系运算3)连接(join)连接运算是对两个关系进行的运算,其意义是从两个关系的笛卡尔积中选出满足给定属性间一定条件的那些元组。设m元关系R和n元关系S,则R和S两个关系的联接运算用公式表示为)(SRSRjSiR][][ji2.关系运算运算的结果为m+n元关系。其中:是连接运算符;θ为算术比较符;[i]与[j]分别表示关系R中第i个属性的属性名和关系S中第j个属性的属性名,它们之间应具有可比性。这个式子的意思是:在关系R和关系S的笛卡尔积中,找出关系R的第i个属性和关系S的第j个属性之间满足θ关系的所有元组。连接的操作过程:求笛卡儿积,选择满足条件的元组比较符θ有以下三种情况:当θ为“=”时,称为等值联接;当θ为“<”时,称为小于联接;当θ为“>”时,称为大于联接。2.关系运算连接的例子。可以看出:不满足条件的元组将不会出现在结果中;写结果时只需写出相匹配的元组即可。结果中有重复的属性。若在m个相同属性上进行等值连接,则结果中有m个冗余属性姓名性别级别张珊女1李思男3王武男2赵柳女3陈奇男3学生级别金额150023003100奖学金姓名性别级别级别金额张珊女11500李思男33100王武男22300赵柳女33100陈奇男33100学生.级别=奖学金.级别学生奖学金2.关系运算4)自然连接(Naturaljoin)设关系R和关系S具有公共的属性,则关系R和关系S的自然连接的结果,是从它们的笛卡尔积R×S中选出公共属性值相等的那些元组。如果关系R和关系S具有相同的属性名A1,A2,…,Ak,则它们的自然联接是从笛卡尔积R×S中选出R·A1=S·A1∧R·A2=S·A2∧…∧R·Ak=S·Ak的所有元组,并去掉重复属性的元组集合,记为RS2.关系运算其中R·A1,R·A2,…,R·Ak表示R×S中对应于关系R中的属性A1,A2,…,Ak的属性名;同样,S·A1,S·A2,…,S·Ak表示R×S中对应于关系S中的属性A1,A2,…,Ak的属性名。如果用j1,j2,…,jm来表示R×S中除去S·A1,S·A2,…,S·Ak以后按顺序列出的所有其他分量的序号,则根据自然连接的定义,可以用选择运算和投影运算来表示自然连接:RS=πj1,j2,…,jm(σR·A1=S·A1∧R·A2=S·A2∧…∧R·Ak=S·Ak(R×S))上式表明,自然连接运算分以下三步进行:(1)计算笛卡尔积R×S;(2)选出同时满足R·Ai=S·Ai(Ai为R和S的公共属性)的所有元组;(3)去掉重复属性。2.关系运算自然连接的例子。姓名性别级别张珊女1李思男3王武男2赵柳女3陈奇男3学生级别金额150023003100奖学金姓名性别级别金额张珊女1500李思男3100王武男2300赵柳女3100陈奇男3100学生奖学金2.关系运算5)除(Division)用一个(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的一个元组。))(()(RSRRSR2.关系运算其中,α为R中的属性除去S中的属性所得的属性除运算的例子。课程C++数据库网络姓名课程张珊C++李思C++王武C++李思数据库王武数据库李思网络课程选修姓名李思选修÷课程本例的实际含义是:找出选修了所有课程的学生。从结果可以看出,李思选修了所有三门课程。÷2.关系运算关系代数小结:并、差、笛卡尔积、投影、选择是基本关系代数运算,其它的运算可由这五种运算推导出来。用关系代数运算可完成对数据的检索、删除和插入操作。这些操作是通过将关系代数经有限次复合而成。关系代数对数据库的数据操作是完备的,也就是说利用关系代数运算可实现一切数据操作。2.关系运算学号S#姓名SN年龄SA系别SD007xxx19JD课程代号C#课程名CN先修课程PCC101yyyzzz学号S#课程代号C#成绩G007C101Aa.学生(STU)c.选课(SC)b.课程(C)例1:检索出选择C101课程的学生名。首先从SC表中选择C#为C101的元组,这些元组都包含学号S#;然后将STU与选择后的表进行自然连接,这些元组都包含姓名SN;最后从自然连接形成的表中对SN投影。))(('101'#STUSCCCSN2.关系运算)('101'#SCCCSTUSCCC)('101'#学号S#姓名SN年龄SA系别SD007xxx19JD课程代号C#课程名CN先修课程PCC101yyyzzz学号S#课程代号C#成绩G007C101