第2章 关系数据库系统模型.ppt
1第第2章章 关系数据库系统模型关系数据库系统模型2.1 关系模型关系模型2.2 关系代数关系代数2.3 SQL介绍介绍数据库原理与应用(基于MySQL)22.1 2.1 关系模型关系模型关系数据库系统采用关系模型作为数据的组织方式,关系模型由关系数据结构、关系操作和关系完整性三部分组成。2.1.1 关系数据结构关系数据结构1)域(Domain)定义定义2.1 域是一组具有相同数据类型的值的集合。例如,整数、正整数、实数、大于等于0且小于等于100的正整数、0,1,2,3,4等都可以是域。2.)笛卡尔积(CartesianProduct)定定义义2.2 设定一组域D1,D2,Dn,在这组域中可以是相同的域。定义D1,D2,Dn,的笛卡尔积为D1D2Dn=(d1,d2,dn)|diDi,i=1,2,n其中每一个元素(d1,d2,dn)叫做一个n元组(n-tuple)或简称元组(Tuple),元素中的每个值di(i=1,2,n)叫做一个分量(Component)。数据库原理与应用(基于MySQL)32.1 2.1 关系模型关系模型如果Di(i=1,2,n)为有限集,其基数(Cardinalnumber)为mi(i=1,2,n),则D1D2Dn 的基数为笛卡尔积可以表示为一个二维表,表中每一行对应一个元组,每一列的值来自一个域。【例2.1】笛卡尔积举例给出3个域:D1=学号集合sno=191001,191002D2=姓名集合sname=刘清泉,张慧玲D3=性别集合speciality=计算机,通信则D1,D2,D3 的笛卡尔积为:D1D2 D3 =(191001,刘清泉,计算机),(191001,刘清泉,通信),(191001,张慧玲,计算机),(191001,张慧玲,通信),(191002,刘清泉,计算机),(191002,刘清泉,通信),(191002,张慧玲,计算机),(191002,张慧玲,通信)数据库原理与应用(基于MySQL)42.1 2.1 关系模型关系模型其中(191001,刘清泉,计算机),(191001,刘清泉,通信),(191001,张慧玲,计算机),(191001,张慧玲,通信)等都是元组,191001,191002,刘清泉,张慧玲,计算机,通信等都是分量,这个笛卡尔积的基数是222=8,即共有8个元组,可列成一张二维表,如表2.1所示。数据库原理与应用(基于MySQL)表2.1 D1 D2 D3 的笛卡尔积52.1 2.1 关系模型关系模型3.)关系(Relation)定定义义2.3 笛卡尔积D1D2Dn 的子集称为D1,D2,Dn 上的关系,表示为 R(D1,D2,Dn)这里的R 表示关系的名称,n 是关系的目或度(Degree)。当n=1时,称该关系为单元关系或一元关系。当n=2时,称该关系为二元关系。当n=m 时,称该关系为m元关系。关系中的每个元素是关系中的元组,通常用t 表示。在一般情况下,D1,D2,Dn 的笛卡尔积是没有实际意义的,只有它的某个子集才有实际意义,举例如下。【例2.2】关系举例在例2.1的笛卡尔积中,许多元组是没有意义的,因为一个学号只标识一个学生的姓名,一个学生只有一个性别,表2.1的一个子集才有意义,才可以表示学生关系,将学生关系取名为S,表示为S(sno,sname,speciality),列成二维表如表2.2所示。数据库原理与应用(基于MySQL)62.1 2.1 关系模型关系模型(1)关系的元组、属性和候选码关系是笛卡尔积的有限子集,所以关系也是一个二维表。元组(Tuple)表的每一行,对应一个元组。属性(Attribute)表的每一列,对应一个域,由于域可以相同,为了加以区分,必须对每一列起一个唯一的名字,称为属性。候选码(Candidatekey)若关系中某一属性组的值能唯一地标识一个元组,则称该属性组为候选码。数据库原理与应用(基于MySQL)表2.2 S 关系72.1 2.1 关系模型关系模型候选键码中的诸属性称为为主属性(Primeattribute),不包含在任何候选码中的属性称为非主属性(Non-primeattribute)或非码属性(Non-keyattribute)。在最简单的情况下,候选码只包含一个属性,在最极端的情况下,关系模式的所有属性组成这个关系模式的候选码,称为全码(All-key)。主码(Primarykey)在一个关系中有多个候选码,从中选定一个作为主码。(2)关系的类型关系有3种类型:基本关系(又称基本表或基表)、查询表和视图表。基本关系:实际存在的表,是实际存储数据的逻辑表示查询表:查询结果对应的表视图表:由基本表或其它视图标导出的表,是虚表,不对应实际存储的数据数据库原理与应用(基于MySQL)82.1 2.1 关系模型关系模型(3)关系的性质关系具有以下的性质:列的同质性:每一列中的分量是同一类型的数据,来自同一个域。列名唯一性:每一列具有不同的属性名,但不同列的值可以来自同一个域。元组相异性:关系中任意两个元组的候选码不能相同。行序的无关性:行的次序可以互换。列序的无关性:列的次序可以互换。分量原子性:分量值是原子的,即每一个分量都必须是不可分的数据项。(4)规范化关系模型要求关系必须是规范化(normalization)的,规范化要求关系必须满足一定的规范条件,而在规范条件中最基本的一条是每一个分量必须是不可分的数据项。规范化的关系简称为范式(NormalForm)。数据库原理与应用(基于MySQL)92.1 2.1 关系模型关系模型例如,表2.3所示的关系就是不规范的,存在”表中有表”的现象。2.关系模式关系模式在关系数据库中,关系模式是型,关系是值。关系是元组的集合,关系模式是对关系的描述,所以关系模式必须指出这个元组集合的结构,即它由哪些属性构成,这些属性来自哪些域。定义定义2.4关系模式(RelationSchema)可以形式化地表示为 R(U,D,DOM,F)其中:R 是关系名,U 是组成该关系的属性名集合,D 是属性所来自的域,DOM是属性向域的映象集合,F 是属性间的数据依赖关系集合。数据库原理与应用(基于MySQL)表2.3非规范化关系102.1 2.1 关系模型关系模型关系模式通常可以简记为 R(U)或R(A1,A2,An)其中,R是关系名,A1,A2,An 为属性名。关系是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。在实际应用中,我们常常把关系模式和关系统称为关系。3.关系数据库关系数据库在一个给定的应用领域中,所有实体及实体之间联系的关系的集合构成一个关系数据库。关系数据库的型称为关系数据库模式,是对关系数据库的描述,包括若干域的定义和在这些域上定义的若干关系模式。关系数据库的值是这些关系模式在某一时刻对应的关系的集合。数据库原理与应用(基于MySQL)112.1 2.1 关系模型关系模型2.1.2关系操作关系操作1.基本的关系操作基本的关系操作关系操作包括查询(Query)操作和插入(Insert)、删除(Delete)、修改(Update)操作两大部分。查询操作是关系操作最重要的部分,可分为选择(Select)、投影(Project)、连 接(Join)、除(Devide)、并(Union)、差(Except)、交(Intersection)、笛卡尔积等。其中的5种基本操作是并、差、笛卡尔积,选择、投影,其它操作可由基本操作来定义和导出。关系操作的特点是集合操作方式,即操作的对象与结果都是集合。这种操作方式亦称为一次一集合(set-at-a-time)方式,相应地,非关系模型的数据操作方式则为一次一记录(record-at-a-time)方式。2.关系操作语言关系操作语言关系操作语言是数据库管理系统提供的用户接口,是用户用来操作数据库的工具,关系操作语言灵活方便,表达能力强大,可分为关系代数语言、关系演算语言和结构化查询语言三类。数据库原理与应用(基于MySQL)122.1 2.1 关系模型关系模型(1)关系代数语言用对关系的运算来表达查询要求的语言,如ISBL。(2)关系演算语言用谓词来表达查询要求的语言,又分为元组关系演算语言和域关系演算语言,前者如ALPHA,后者QBE。(3)结构化查询语言介于关系代数和关系运算之间,具有关系代数和关系演算双重特点,如SQL。以上三种语言,在表达能力上是完全等价的。关系操作语言是一章高度非过程化语言,存取路径的选择由数据库管理系统的优化机制自动完成。2.1.3 关系的完整性关系的完整性关系模型的完整性规则是对关系的某种约束条件。关系的值在不断变化,为了维护数据库中的数据与现实世界的一致性,任何关系在任何时刻都应满足这些约束条件。数据库原理与应用(基于MySQL)132.1 2.1 关系模型关系模型关系模型的三种完整性约束为:实体完整性,参照完整性和用户定义完整性。任何关系数据库都应支持实体完整性和参照完整性,此外,不同关系数据库系统根据实际情况需要一些特殊约束条件形成用户定义完整性。1.实体完整性实体完整性(Entity Integrity)规规则则2.1 实实体体完完整整性性规规则则 若属性(一个或一组属性)A是基本关系R的主属性,则A不能取空值。空值(nullvalue)指”不知道”或”不存在”的值。例如,在学生关系S(sno,sname,speciality)中,学号sno是这个关系的主码,则sno不能取空值。又如在选课关系选课(学号,课程号,分数)中,”学号,课程号”为主码,则”学号”和”课程号”两个属性都不能取空值。实体完整性规则说明如下:(1)实体完整性规则是针对基本关系而言。一个基本表通常对应现实世界的一个实体集。数据库原理与应用(基于MySQL)142.1 2.1 关系模型关系模型(2)现实世界中的实体是可区分的,即它们具有某种唯一性标识。(3)相应地,关系模型中以主码作为唯一性标识。(4)主码中的属性即主属性不能取空值。2.参照完整性参照完整性(Referential Integrity)在现实世界中实体之间存在的联系,在关系模型中都是用关系来描述,自然存在关系与关系间的引用,参照完整性一般指多个实体之间的联系,一般用外码实现,举例如下。【例2.3】学生实体与学院实体可用以下关系表示,其中的主码用下划线标识。学生(学号,姓名,性别,出生日期,专业,总学分,学院号)学院(学院号,学院名,院长)这两个关系存在属性的引用,学生关系引用了学院关系的主码”学院号”,学生关系”学院号”必须是确实存在的学院的学院号,即学院关系有该学院的记录。数据库原理与应用(基于MySQL)152.1 2.1 关系模型关系模型【例2.4】学生、课程、学生与课程之间的联系可用以下3个关系表示,其中的主码用下划线标识。学生(学号,姓名,性别,出生日期,专业,总学分)课程(课程号,课程名,学分)选课(学号,课程号,分数)这3个关系存在属性的引用,选课关系引用了学生关系的主码”学号”和课程关系的主码”课程号”,选课关系”学号”和”课程号”的取值需要参照学生关系的”学号”取值和课程关系的”课程号”取值。【例2.5】学生关系的内部属性之间存在引用关系,其中的主码用下划线标识。学生(学号,姓名,性别,出生日期,专业,总学分,班长学号)在该关系中,”学号”属性是主码,”班长学号”属性是所在班级班长的学号,它引用了本关系”学号”属性,即”班长学号”必须是确实存在的学生学号。数据库原理与应用(基于MySQL)162.1 2.1 关系模型关系模型定定义义2.5 设F 是基本关系R 的一个或一组属性,但不是关系R 的码,Ks 是基本关系S 的主码。如果F 与Ks 相对应,则称F 是R 的外码(ForeignKey)。并称基本关系R 为参照关系(ReferencingRelation),基本关系S 为被参照关系(ReferencedRelation)或目标关系(TargetRelation)。关系R 和S 不一定是不同的关系。在例2.3中,学生关系的”学院号”与学院关系的主码”学院号”相对应,所以,”学院号”属性是学生关系的外码,学生关系是参照关系,学院关系是被参照关系。在例2.4中,选课关系”学号”和学生关系的主码”学号”相对应,选课关系”课程号”和课程关系的主码”课程号”相对应,所以,”学号”属性和”课程号”属性是选课关系的外码,选课关系是参照关系,学生关系和课程关系都是被参照关系。在例2.5中,”班长学号”属性与本身的主码”学号”属性相对应,所以,”班长学号”属性是学生关系的外码,学生关系既是参照关系,也是被参照关系。数据库原理与应用(基于MySQL)172.1 2.1 关系模型关系模型外码不一定要与相应的主码同名,在例2.5中,学生关系的主码名是”学号”,外码名是”班长学号”。但在实际应用中,为了便于识别,当外码与相应的主码属于不同的关系时,往往取相同的名字。参照完整性规则就是定义外码与主码之间的引用规则。规规则则2.2 参参照照完完整整性性规规则则 若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为或者取空值(F的每个属性值均为空值);或者等于S 中某个元组的主码值。在例2.3中,学生关系每个元组的”学院号”属性只能取下面两类值:(1)空值,表示尚未给该学生分配学院;(2)非空值,被参照关系”学院号”中一定存在一个元组,它的主码值等于该参照关系”学院号”中的外码值。数据库原理与应用(基于MySQL)182.1 2.1 关系模型关系模型3.用户定义完整性用户定义完整性(User-defined Integrity)用户定义的完整性是针对某一具体关系数据库的约束条件,使某一具体应用涉及数据必须满足语义要求。用户定义的完整性数据也称为域完整性或语义完整性,通过这些规则限制数据库只接受符合完整性约束条件的数据值,不接受违反约束条件的数据,从而保证数据库的中数据的有效性和可靠性。按应用语义,属性数据有:(1)类型与长度限制。(2)取值范围限制。例如,学生关系中”性别”数据只能是男或女,选课关系中”成绩”数据为1到100之间,等等。数据库原理与应用(基于MySQL)192.2 2.2 关系代数关系代数关系代数是一种抽象的查询语言,它用对关系的运算来表达查询。关系代数是施加于关系上的一组集合代数运算,是基于关系代数的数据操作语言,称为关系代数语言,简称关系代数。任何一种运算都是将一定的运算符作用于某运算对象上,得到预期的运算结果,故运算符、运算对象及运算结果是关系代数运算的三要素。关系代数运算的运算对象是关系,运算结果也是关系,用到的运算符包括集合运算符、专门的关系运算符、比较运算符、和逻辑运算符等。关系代数中的操作可以分为两类:(1)传统的集合运算,如并、交、差、笛卡儿积。这类运算将关系看成元组的集合,运算时从行的角度进行。(2)专门的关系运算,如选择、投影、连接、除。这些运算不仅涉及行而且也涉及到列。数据库原理与应用(基于MySQL)202.2 2.2 关系代数关系代数关系代数使用的运算符:(1)传统的集合操作:(并)、(差)、(交)、(笛卡儿积)。(2)专门的关系操作:(选择)、(投影)、(连接)、(除)。(3)比较运算符:(大于)、(大于等于)、(小于)、(小于等于)、(等于)、(不等于)。(4)逻辑运算符:(与)、(或)、(非)。2.2.1 传统的集合运算传统的集合运算传统的集合运算有并、差、交和笛卡尔积运算,它们都是二目运算。传统的集合运算用于关系运算时,要求参与运算的两个关系必须是相容的,即两个关系的列数相同,且对应的属性列都出自同一个域。数据库原理与应用(基于MySQL)212.2 2.2 关系代数关系代数设关系R 和关系S 具有相同的n 目(即两个关系都有n 个属性),且相应的属性取自同一个域,t 是元组变量,t R表示t 是R 的一个元组。以下定义并、差、交和笛卡尔积运算。1.并并(Union)关系R和关系S的并记为RS,即R S=t|t R t s其结果仍为n目关系,由属于R或属于S的元组组成。2.差差(Except)关系R 和关系S 的差记为R S,即 R S=t|t R t s其结果仍为n目关系,由属于R且不属于S的所有元组组成。数据库原理与应用(基于MySQL)222.2 2.2 关系代数关系代数数据库原理与应用(基于MySQL)232.2 2.2 关系代数关系代数【例2.6】有2个关系R、S,如图2.1所示,求以下各传统的集合运算的结果。(1)R S(2)R S(3)R S(4)R S解:解:(1)RS 由属于R 和属于S 的所有不重复的元组组成。(2)R S 由属于R 且不属于S 的所有元组组成。(3)R S 由既属于R 又属于S 的元组组成。数据库原理与应用(基于MySQL)242.2 2.2 关系代数关系代数数据库原理与应用(基于MySQL)(4)RS 为R 和S 的笛卡儿积,共有33=9个元组传统的集合运算结果如图2.2所示。252.2 2.2 关系代数关系代数数据库原理与应用(基于MySQL)262.2 2.2 关系代数关系代数数据库原理与应用(基于MySQL)272.2 2.2 关系代数关系代数解:解:在关系R中,X可取值(a,b),(b,c),(c,a)。(a,b)的象集为(m,n),(n,p),(m,p)(b,c)的象集为(r,n)(c,a)的象集为(s,t),(p,m)1.选择选择(Selection)在关系R中选出满足给定条件的诸元组称为选择,选择是从行的角度进行的运算,表示为数据库原理与应用(基于MySQL)282.2 2.2 关系代数关系代数F(R)=t|t R F(t)=真其中F是一个逻辑表达式,表示选择条件,取逻辑值”真”或”假”,t表示R中的元组,F(t)表示R中满足F 条件的元组。逻辑表达式F的基本形式是X1Y1其中由比较运算符(、)和逻辑运算符(、)组成,X1,Y1等是属性名、常量或简单函数,属性名也可用它的序号来代替。2.投影投影(Projection)在关系R中选出若干属性列组成新的关系称为投影,投影是从列的角度进行的运算,表示为 A(R)=tA|tR其中A 为R 的属性列。数据库原理与应用(基于MySQL)292.2 2.2 关系代数关系代数【例2.8】关系R如图2.4所示,求以下选择和投影运算的结果。(1)C=8(R)(2)A,B(R)解:解:(1)C=8(R)由R的C属性值为8的元组组成。(2)A,B(R)由R的A、B属性列组成。选择和投影运算结果如图2.5所示。数据库原理与应用(基于MySQL)302.2 2.2 关系代数关系代数数据库原理与应用(基于MySQL)312.2 2.2 关系代数关系代数数据库原理与应用(基于MySQL)322.2 2.2 关系代数关系代数等值连接不把重复的属性去掉,而自然连接要把重复属性去掉。一般连接是从行的角度进行计算,而自然连接要取消重复列,它同时从行和列的角度进行计算。(3)外连接(Outerjoin)两个关系R和S在做自然连接时,关系R中某些元组可能在S中不存在公共属性上值相等的元组,造成R中这些元组被舍弃,同样,S中某些元组也可能被舍弃。如果把舍弃的元组保存在结果关系中,而在其它属性上填空值(Null),这种连接称为全外连接(FullOuterJoin),符号为RS。如果只把左边关系R中舍弃的元组保留,这种连接称为左外连接(LeftOuterjoin或Leftjoin),符号为RS。如果只把右边关系S中舍弃的元组保留,这种连接称为右外连接(RightOuterjoin或Rightjoin),符号为RS。数据库原理与应用(基于MySQL)332.2 2.2 关系代数关系代数【例2.9】关系R、S如图2.6所示,求以下各个连接运算的结果。(1)R S(2)R S(3)R S(4)R S(5)R S(6)R S数据库原理与应用(基于MySQL)CDR.B=S.B342.2 2.2 关系代数关系代数解:解:(1)R S 该连接由R的C属性值大于S的D属性值的元组连接组成。(2)R S 该等值连接由R的B属性值等于S的B属性值的元组连接组成。(3)R S 该自然连接由R的B属性值等于S的B属性值的元组连接组成,并去掉重复列。(4)R S 该左外连接取出左边关系R中舍弃的所有元组,用空值填充右边关系S中的属性,再把产生的元组添加到自然连接结果中。(5)R S 该右外连接取出右边关系S中舍弃的所有元组,用空值填充左边关系R中的属性,再把产生的元组添加到自然连接结果中。(6)R S 该全外连接既做左外连接又做右外连接,并把产生的元组添加到自然连接结果中。数据库原理与应用(基于MySQL)CDR.B=S.B352.2 2.2 关系代数关系代数各个连接运算的结果如图2.7所示。数据库原理与应用(基于MySQL)362.2 2.2 关系代数关系代数4.除除(Division)给定关系R(X,Y)和S(Y,Z),其中X、Y、Z 为属性组。R 中的Y与S 中的Y 可以有不同的属性名,但必须出自相同的域集。R 与S 的除运算得到一个新的关系P(X),P 是R 中满足下列条件的元组在X 属性列上的投影:元组在X 上的分量值x 的象集Yx 包含S 在Y 上投影的集合。记作 R S=tr X|tr R Y(S)Yx其中的Yx 为x 在R 中的象集,x=trX。除运算是同时从行和列的角度进行的运算。【例2.10】关系R,S如图2.8所示,求RS。数据库原理与应用(基于MySQL)372.2 2.2 关系代数关系代数数据库原理与应用(基于MySQL)382.3 SQL2.3 SQL介绍介绍SQL(StructuredQueryLanguage)语言,即结构化查询语言,是关系数据库的标准语言,是一种高级的非过程化编程语言,SQL语言是通用的、功能极强的关系数据库语言,包括数据定义、数据操纵、数据查询、数据控制等功能。2.3.1 SQL语言分类语言分类通常将SQL语言分为以下4类。(1)数据定义语言(DataDefinitionLanguage,DDL)用于定义数据库对象,对数据库、数据库中的表、视图、索引等数据库对象进行建立和删除,DDL包括CREATE、ALTER、DROP等语句。(2)数据操纵语言(DataManipulationLanguage,DML)用于对数据库中的数据进行插入、修改、删除等操作,DML包括INSERT、UPDATE、DELETE等语句。数据库原理与应用(基于MySQL)392.3 SQL2.3 SQL介绍介绍(3)数据查询语言(DataQueryLanguage,DQL)用于对数据库中的数据进行查询操作,例如用SELECT语句进行查询操作。(4)数据控制语言(DataControlLanguage,DCL)用于控制用户对数据库的操作权限,DCL包括GRANT、REVOKE等语句。2.3.2 SQL语言的特点语言的特点SQL语言具有高度非过程化、应用于数据库的语言、面向集合的操作方式、既是自含式语言又是嵌入式语言、综合统一、语言简洁和易学易用等特点。数据库原理与应用(基于MySQL)402.3 SQL2.3 SQL介绍介绍(1)高度非过程化SQL语言是非过程化语言,进行数据操作,只要提出“做什么”,而无须指明“怎么做”,因此无需说明具体处理过程和存取路径,处理过程和存取路径由系统自动完成。(2)面向集合的操作方式SQL语言采用集合操作方式,不仅操作对象、查找结果可以是记录的集合,而且一次插入、删除、更新操作的对象也可以是记录的集合。数据库原理与应用(基于MySQL)412.3 SQL2.3 SQL介绍介绍(3)既是自含式语言、又是嵌入式语言SQL语言作为自含式语言,它能够用于联机交互的使用方式,用户可以在终端键盘上直接键入SQL命令对数据库进行操作;作为嵌入式语言,SQL语句能够嵌入到高级语言(例如C,C+,Java)程序中,供程序员设计程序时使用。在两种不同的使用方式下,SQL语言的语法结构基本上是一致的,提供了极大的灵活性与方便性。(4)综合统一SQL语言集数据查询(DataQuery)、数据操纵(DataManipulation)、数据定义(DataDefinition)和数据控制(DataControl)功能于一体。(5)语言简洁,易学易用SQL语言接近英语口语,易学使用,功能很强,由于设计巧妙,语言简洁,完成核心功能只用了9个动词,如表2.4所示。数据库原理与应用(基于MySQL)422.3 SQL2.3 SQL介绍介绍数据库原理与应用(基于MySQL)表2.4SQL语言的动词