《数据库原理与设计课件:第3章 关系数据库》由会员分享,可在线阅读,更多相关《数据库原理与设计课件:第3章 关系数据库(102页珍藏版)》请在金锄头文库上搜索。
1、第第3 3章章 关系数据库关系数据库2*第第3 3章章 关系数据库关系数据库n关系数据库系统是支持关系模型的数据库系统n关系模型的组成 数据模型通常由数据结构、数据操作和完整性约束三个要素组成 关系数据结构、关系操作集合、关系完整性约束n关系数据库是以集合论中关系的概念为基础发展起来的。它运用数学方法研究数据库的结构和定义对数据的操作。n本章将详细论述关系数据库涉及的基本概念及对关系的各种运算3*第第3 3章章 关系数据库关系数据库n3.1 关系模型的基本概念n3.2 关系代数n3.3 元组关系演算n3.4 域关系演算n3.5 小结4*3.13.1关系模型的基本概念关系模型的基本概念n3.1.
2、1关系的定义 1.笛卡尔积(CartesianProduct) 2.域(Domain) 3.关系(Relation)n3.1.2关系模式和关系数据库n3.1.3键n3.1.4完整性约束5*3.1.1 3.1.1 关系的定义关系的定义n关系模型中,数据是以二维表的形式存在的,这个二维表就叫做关系。单一的数据结构-关系现实世界的实体以及实体间的各种联系均用关系来表示 数据的逻辑结构-二维表关系模型用二维表格结构来表示实体及实体之间联系的模型关系模型是各个关系的框架的集合,即关系模型是一些表格的格式,其中包括关系名、属性名、关键字等。n在关系理论是以集合代数理论为基础的,因此,我们可以用集合代数给出
3、二维表的“关系”定义。6*3.1.1 3.1.1 关系的定义关系的定义n为了从集合论的角度给出关系的定义,我们先引入域和笛卡尔积的概念。n1.域(Domain) 域是一组具有相同数据类型的值的集合自然数、整数、男、女、0、1 关系中用域表示属性的取值范围,例如D1=李丽,王平,刘伟D2=男,女D3=47,28,30其中D1,D2,D3为域名,分别表示教师关系中姓名、性别、年龄的集合7*2. 2. 笛卡尔积笛卡尔积(Cartesian Product)(Cartesian Product)n1)笛卡尔积 定义3.1给定一组集合D1,D2,Dn,它们可以是相同的。D1,D2,Dn的笛卡尔积为:D1
4、D2Dn=(d1,d2,dn)|diDi,i=1,2,n 所有域的所有值的一个组合,不能重复8*2.2.笛卡尔积笛卡尔积(Cartesian Product)(Cartesian Product)例给出域:D1=SUPERVISOR=张清玫,刘逸D2=SPECIALITY=计算机专业,信息专业 D3=POSTGRADUATE=李勇,刘晨,王敏则D1D2D3(张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨),(张清玫,计算机专业,王敏),(张清玫,信息专业,李勇),(张清玫,信息专业,刘晨),(张清玫,信息专业,王敏),(刘逸,计算机专业,李勇),(刘逸,计算机专业,刘晨),(刘逸,计算
5、机专业,王敏),(刘逸,信息专业,李勇),(刘逸,信息专业,刘晨),(刘逸,信息专业,王敏)9*2. 2. 笛卡尔积笛卡尔积(Cartesian Product)(Cartesian Product)n2)元组(Tuple) 笛卡尔积中每一个元素(d1,d2,dn)叫做一个n元组(n-tuple)或简称元组 例(张清玫,计算机专业,李勇)、(张清玫,计算机专业,刘晨)是元组n3)分量(Component) 笛卡尔积元素(d1,d2,dn)中的每一个值di叫做一个分量 例张清玫,计算机专业,李勇,刘晨是分量10*3 3 关系关系n1)关系 定义3.2 D1D2Dn的任一个子集称为D1,D2,Dn
6、上的一个关系。N叫做关系的目或度(degree)n2)元组和属性 关系中的每一行对应一个元组,通常用t表示 每一列对应一个域。关系中的列称为属性,每一列用属性名表示。tAi表示元组t在属性Ai上的值n3)一元关系与二元关系 当n=1时,称该关系为一元关系(Unaryrelation) 当n=2时,称该关系为二元关系(Binaryrelation)11*3. 3. 关系关系n例如在上例的笛卡尔积中取出有实际意义的元组来构造关系SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE)n假设 导师与专业:1:1(即一个导师只能对一个专业) 导师与研究生:1:n(一个研究生只能遵
7、从一个导师)n于是:SAP关系可以包含三个元组12*3. 3. 关系关系n严格地说,关系是一种规范化了的二维表中行的集合, 按照定义,关系可以是一个无限集合 由于笛卡尔积不满足交换律,所以(d1,di,dj,dn)(d1,dj,di,dn),n当关系作为关系代数数据模型的数据结构时,需要作出补充和限定。 无限关系在数据库中是无意义的,因此限定关系代数数据模型中的关系必须是有限集合。 通过为关系的每列增加一个属性名的方法取消元组的有序性,即(d1,di,dj,dn)=(d1,dj,di,dn),(i,j=1,2,n)。13*规范化的关系的性质规范化的关系的性质列是同质的(Homogeneous)
8、 每一列中的分量是同一类型的数据,来自同一个域不同的列可出自同一个域 其中的每一列称为一个属性,不同的属性要给予不同的属性名列的顺序无所谓 列的次序可以任意交换 遵循这一性质的数据库产品(如ORACLE),增加新属性时,永远是插至最后一列 但也有许多关系数据库产品没有遵循这一性质,例如FoxPro仍然区分了属性顺序14*规范化的关系的性质规范化的关系的性质( (续续) )各个元组是不同的,即关系中不允许出现重复元组 有些数据库允许关系表中存在两个完全相同的元组行的顺序无所谓,即行的次序可以任意交换 遵循这一性质的数据库产品(如ORACLE),插入一个元组时永远插至最后一行 但也有许多关系数据库
9、产品没有遵循这一性质,例如FoxPro仍然区分了元组的顺序分量必须取原子值 每一个分量都必须是不可分的数据项。 这是规范条件中最基本的一条15*3.1.2 3.1.2 关系模式和关系数据库关系模式和关系数据库n关系的型称为关系模式(RelationSchema) 关系模式是对关系的描述,该描述包括关系名、属性名、属性的类型和长度,以及属性间固有的数据关联关系 关系模式一般简记为关系名和属性名的集合R(A1,A2,An),或仅用关系名R表示。 如图书关系模式可描述为:图书(书号,书名,作者,单价,出版社)n关系的值是元组的集合,称为关系 关系是对现实世界中事物在某一时刻状态的反映,关系的值是随时
10、间在不断变化的n关系模式和关系统称为关系,通过上下文加以区别16*3.1.2 3.1.2 关系模式和关系数据库关系模式和关系数据库n关系数据库 关系模式的集合称为关系数据库模式,是对数据库中所有数据逻辑结构的描述,表示为 R=R1,R2,Rp。 关系数据库模式中的每个关系模式上的关系的集合称为关系数据库17*3.1.33.1.3 键键n为了区分不同元组,用其中一个或多个属性值标识,能够惟一标识元组的属性或属性组称为关系的键n关系中能够起标识作用的键称为候选键 在一个关系中,如果有多个候选键,选其中的一个键作为主键(primarykey) 若关系的键由多个属性组成,称为联合键 关系的所有属性构成
11、该关系的键,称为全键18*3.1.43.1.4完整性约束完整性约束n关系模型的完整性规则是对关系的某种约束条件n为了维护数据库中数据与现实世界的一致性,对关系数据库的插入、删除和修改操作必须有一定的约束条件,这就是关系模型的三类完整性: 实体完整性通常由关系系统自动支持 参照完整性通常由关系系统自动支持 用户定义的完整性反映应用领域需要遵循的约束条件,体现了具体领域中的语义约束用户定义后由系统支持关系的两个不变性,应该由关系系统自动支持19*3.1.43.1.4完整性约束完整性约束n1.实体完整性约束(EntityIntegrityConstraint) 实体完整性是指主键的值不能为空或部分为
12、空实体完整性规则 若属性(指一个或一组属性)A是基本关系R的主属性,则属性A不能取空值 如果一个元组的键为空值,或部分为空,该元组将不可标识,不能表示任何实体,因而无意义20*n关系模型必须遵守实体完整性规则的原因 (1)实体完整性规则是针对基本关系而言的一个基本表通常对应现实世界的一个实体集或多对多联系 (2)现实世界中的实体和实体是可区分的,即它们具有某种唯一性标识。 (3)相应地,关系模型中以主键作为唯一性标识。 (4)主键中的属性即主属性不能取空值。主属性取空值,说明存在某个不可标识的实体,即存在不可区分的实体,这与(2)相矛盾n因此这个规则称为实体完整性。21*2. 2. 参照完整性
13、约束参照完整性约束n参照完整性约束(ReferenceIntegrityConstraint)是对关系中作为外键的值的约束,规定: 如果关系R1中属性A是另一个关系R2中的主键,则对于关系R1中的任一个元组在属性A上的值或者为空值,或者为另一个关系R2中某个元组的主键的值n设F是基本关系R的一个或一组属性,但不是关系R的键(码)。如果F与基本关系S的主键Ks相对应,则称F是基本关系R的外码(外键) 基本关系R称为参照关系(Referencing Relation),基本关系S称为被参照关系(ReferencedRelation)或目标关系n说明 关系R和S不一定是不同的关系 S的主键Ks和R的
14、外键F必须定义在同一个或组域上 外键并不一定要与相应的主键同名。22*2. 2. 参照完整性约束参照完整性约束n用关系来描述实体及实体间的联系,因此关系模型中存在着关系与关系间的引用n学生关系中每个元组的“专业号”属性只取下面两类值:(1)空值,表示尚未给该学生分配专业(2)非空值,该值必须是专业关系中某个元组的“专业号”值,表示该学生不可能分配到不存在的专业中即学生关系中的某个属性的取值需要参照专业关系中的属性取值23*关系间的引用关系间的引用n选修(学号,课程号,成绩) “学号”和“课程号”是选修关系中的主属性 按照实体完整性和参照完整性规则,它们只能取相应被参照关系中已经存在的主键值24
15、*关系间的引用关系间的引用例学生实体及其内部的领导联系(一对多)学生(学号,姓名,性别,专业号,年龄,班长)“班长”属性值可以取两类值:(1)空值,表示该学生所在班级尚未选出班长,或该学生本人即是班长;(2)非空值,这时该值必须是本关系中某个元组的学号值25*3. 3. 用户定义的完整性用户定义的完整性n不同的关系数据库系统由于应用环境的不同,往往还需要一些特殊的约束条件,这就是用户定义完整性(User-definedIntegrity)。n用户定义的完整性是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。 例如,属性值根据实际需要,要具备一些约束条件:如选课
16、关系中成绩不能为负数;某些数据的输入格式要有一些限制等 关系模型应该提供定义和检验这类完整性的机制,以便用统一的、系统的方法处理它们,而不要由应用程序承担这一功能。26*第第3 3章章 关系数据库关系数据库n3.1 关系模型的基本概念n3.2 关系代数n3.3 元组关系演算n3.4 域关系演算n3.5 小结27*3.23.2 关系代数关系代数n3.2.0关系代数概述n3.2.1传统的集合运算 并、差、交、广义笛卡尔积n3.2.2专门的关系运算 选择、投影、连接、除法n3.2.3扩充的关系运算 属性重命名、外连接n3.2.4举例n3.2.5ISBL语言(略)28*3.2.0 3.2.0 关系代数关系代数概述概述n1.关系代数 一种抽象的查询语言,用对关系的运算来表达查询n2关系代数运算的三个要素 运算对象:关系 运算结果:关系 运算符29*3.2.0 3.2.0 关系代数关系代数概述概述3按运算符的不同,关系代数运算的分类: 传统的集合运算并、差、交、广义笛卡尔积把关系看成元组的集合,以元组作为集合中元素来进行运算,其运算是从关系的“水平”方向即行的角度进行的 专门的关系运算选择、投影、