您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > 02关系数据库理论基础
第2章关系数据库的理论基础学习目标了解域、笛卡儿积、关系、关系模式的数学定义,了解关系的基本性质。掌握关系的3个完整性:实体完整性、参照完整性和用户定义的完整性,及关系的完整性在实际应用中的意义。掌握关系代数的传统集合运算方法,重点掌握专门的关系运算方法,并能够用关系代数表达式实现查询功能。2.1关系数据结构2.2关系的完整性2.3关系代数2.4小结第2章关系数据库的理论基础2.1.1关系的数学定义1.域作用域(domain)是数学中的一个概念,在表示实际数据时,可以用域来明确指出数据取值的可选范围。定义定义2.1域是具有相同数据类型的一组值的集合,一般用D表示。例子(1)如果规定年龄域必须是0-100之间的整数值的集合,用D年龄={0,1,2,…,100}表示,那么在表示年龄数据时,年龄可以取此年龄域中的任何值,非年龄域中的值可视为不合法数据。(2)性别域可以用D性别={男,女}表示,那么在表示性别数据时,性别值必须是“男”或“女”,非性别域中的值都是不合法数据。2、笛卡儿积作用笛卡儿积(cartesianproduct)是一个纯粹的数学算法,但在实际的数据查询中会经常用到,通常用于两个表的连接查询。定义定义2.2给定一组域D1,D2,…,Dn,这些域可以完全不同,也可以部分相同或全部相同,那么D1,D2,…,Dn的笛卡儿积为D1×D2×…×Dn={(d1,d2,…,dn)|di∈Dj,j=1,2,…,n}元组概念:其中每一个元素(d1,d2,…,dn)称作一个n元组,或简称元组。分量概念:元组中的每一个值di叫做一个分量。若Di为有限集,有限集中的元素个数称为基数,用mi表示,则D1×D2×…×Dn的基数可用m表示为笛卡儿积可表示成一个二维表。表中的每一行对应于一个元组,表中的每一列对应于一个域。niimm1【例2.1】假设在学生选课系统中有3个域D1、D2、D3,分别表示学生姓名集合、班级名称集合和课程名称集合,其数据域为D1={赵明,杨仪,马力}、D2={计061班,软061班}、D3={计算机语言,数据结构,数据库},求:D1×D2×D3的值,并计算其基数,将结果用二维表表示出来。解:根据笛卡儿积的定义可得D1×D2×D3={(赵明,计061班,计算机语言),(赵明,计061班,数据结构),(赵明,计061班,数据库),(赵明,软061班,计算机语言),(赵明,软061班,数据结构),(赵明,软061班,数据库),(杨仪,计061班,计算机语言),(杨仪,计061班,数据结构),(杨仪,计061班,数据库),(杨仪,软061班,计算机语言),(杨仪,软061班,数据结构),(杨仪,软061班,数据库),(马力,计061班,计算机语言),(马力,计061班,数据结构),(马力,计061班,数据库),(马力,软061班,计算机语言),(马力,软061班,数据结构),(马力,软061班,数据库)}此笛卡儿积的基数:3×2×3=18,即共有18个元组,各元组有3个分量,共有54个分量。表2.1例2.1笛卡儿积的二维表赵明计061班计算机语言赵明计061班数据结构赵明计061班数据库赵明软061班计算机语言赵明软061班数据结构赵明软061班数据库杨仪计061班计算机语言杨仪计061班数据结构杨仪计061班数据库杨仪软061班计算机语言杨仪软061班数据结构杨仪软061班数据库马力计061班计算机语言马力计061班数据结构马力计061班数据库马力软061班计算机语言马力软061班数据结构马力软061班数据库3.关系作用关系(relation)是数学中的一个概念,在实际应用中,关系把来自多个域的数据集中在一起,以表示一个完整的意义,其常见形式是一张二维表。定义定义D1×D2×…×Dn的子集称为域D1×D2×…×Dn上的关系,用R(D1,D2,…,Dn)表示。其中,R表示关系的名称,n称为关系的目,又称为关系的度或关系的元数。关系中的每一列称为属性,列名是属性名。如果一个关系是n目关系,那么这个关系必定有n个属性。n值为1的关系称为单元关系。n值为2的关系称为二元关系,……,以此类推。例子从表2.1中抽取一个有意义的子集,组成一个具有实际意义的关系,如表2.2所示。姓名班级课程赵明计061班计算机语言赵明计061班数据库杨仪软061班数据结构杨仪软061班数据库马力计061班计算机语言马力计061班数据库表2.2学生选课表表2.2表示学生姓名、班级和课程之间的一种选课关系。此关系共有6个元组,3个属性列,属性名分别是“姓名”、“班级”和“课程”,这是一个3目关系。关系的码关系的码就是可以唯一确定关系中各元组的一个属性或一组属性。(实体集的码对应于关系的码)。候选码在实际应用中,一个关系可以有多个候选码(即多组属性可分别作为关系的码),此时,可以选定其中一个为主码(PrimaryKey)。主属性与非主属性候选码所涉及的诸属性称为主属性,不包含在任何候选码中的属性称为非主属性。全码在最简单的情况下,候选码只包含一个属性。在最极端的情况下,关系中的所有属性都是这个关系的候选码,称为全码(All-key)。例子(1)在学生(学号,姓名,性别,出生日期,入学成绩,附加分,班级号)关系模式中,候选码只有“学号”,关系“学生”的主码就只能是“学号”,因此,“学号”是这个关系的主属性,其他属性是非主属性。(2)对于关系R(演奏者,作品,听众),假设一名演奏者可以演奏多部作品,某一作品可被多名演奏者演奏。听众可以欣赏不同演奏者演绎的不同作品。这个关系的码是(演奏者,作品,听众),即全码,3个属性都是主属性。2.1.2关系模式与关系数据库1.关系模式定义关系模式是对关系的一种描述。组成关系模式通常包括关系名、组成此关系的诸属性名、域名、属性与域之间的映像等4部分。关系模式可以简记为R(D1,D2,…,Dn)其中,R是关系名,D1,D2,…,Dn是属性名。属性与域之间的映像常用属性的数据类型、长度来说明。例子对于表2.2中的关系,采用关系模式可以表示为选课(姓名,班级,课程)其中“选课”是关系名,“姓名”、“班级”、“课程”是属性名。关系模式是型,关系是其取值。在实际应用,常常把关系模式和关系统称为关系。2.关系数据库定义关系模式是对关系的一种描述,所有关系模式的集合就组成关系数据库。对于关系数据库,要分清“型”和“值”的概念。关系数据库的型也可称为关系数据库模式,是对关系数据库的整体描述,包括若干域的定义以及其上所定义的若干关系模式。关系数据库的值也可称为关系数据库,是这些关系模式在某一时刻所对应的关系的集合。关系数据库模式与关系数据库通常称为关系数据库。关系模式是稳定的,而关系是随时间在不断变化的,因为数据库中的数据处于不断更新之中。2.1.3关系的性质基本性质在关系数据库中,关系模型要求关系必须是规范化的,即关系模式必须满足一定的规范条件。这些规范条件中最基本的一条就是,关系的每一个分量必须是一个不可分割的数据项。如果关系的每一个分量都是一个不可分割的数据项,那么称这一关系是规范化的。如果关系中的某些分量可以取多个值,则称这样的关系是非规范化的,而非规范化的关系在关系数据库中是不允许出现的。数据库中的关系具有以下一些性质。(1)每一列中的分量是数据类型相同的数据,来自同一个域。(2)不同的列可出自同一个域,列称为属性,要对其赋予不同的属性名。(3)可以任意交换列的顺序,也可以任意交换行的顺序。(4)关系中的任意两个元组均不能完全相同。(5)每一分量必须是不可分割的数据项。2.2关系的完整性2.2.1实体完整性2.2.2参照完整性2.2.3用户定义的完整性2.2.1实体完整性定义实体完整性(EntityIntegrity):若属性A是基本关系R的主属性,则属性A不能取空值。解释实体完整性要求关系中的元组在组成码的属性上不能存在为空的值。因为在一个关系中,主码是候选码之一,是用来唯一标识元组的,因而也唯一标识此元组所表示的现实世界事物的某个实体。例子在关系学生(学号,姓名,性别,出生日期,入学成绩,附加分,班级号)中,“学号”是主码,那么根据实体完整性的要求,属性“学号”不能取空值,即此关系对应的的二维表中“学号”列数据不能有空值。2.2.2参照完整性关系的引用例子【例2.2】学生实体和班级实体可以用下面的关系来表示,其中主码用下划线标识:学生(学号,姓名,性别,出生日期,入学成绩,附加分,班级号)班级(班级号,班级名称,所属系部,入学时间,系别)解释:这两个关系之间存在着属性的引用,即“学生”关系引用“班级”关系的主码“班级号”。显然,“学生”关系中的“班级号”取值必须是确实存在的班级的班级号,即“班级”关系中有相应班级的记录。这也就是说,“学生”关系中的某个属性的取值需要参照“班级”关系的相关属性取值。关系的引用例子【例2.3】学生、课程、学生与课程之间的多对多联系可以用以下3个关系表示:学生(学号,姓名,性别,出生日期,入学成绩,附加分,班级号)课程(课程号,课程名称,学分)选修(学号,课程号,成绩)解释:这3个关系之间也存在着属性的引用,即“选修”关系引用了“学生”关系的主码“学号”和“课程”关系的主码“课程号”。同样,“选修”关系中的“学号”取值必须是确实存在的学生的学号,即“学生”关系中有此学生的记录;“选修”关系中的“课程号”取值也必须是确实存在的课程的课程号,即“课程”关系中有此课程的记录。总之,“选修”关系中某些属性的取值需要参照其他关系中的相关属性取值。定义参照完整性(ReferentialIntegrity):若某个属性或属性组不是关系A的主码,但它是另一关系B的主码,则此属性或属性组称为关系A的外码。在关系A中,如果存在外码,那么外码可取空值或者等于关系B中某个元组的主码值。例子(1)在例2.2中,由于“学生”关系的主码是“学号”,“班级”关系的主码是“班级号”,所以“班级号”是“学生”关系的外码。按照参照完整性,“学生”关系中的外码(即“班级号”)的取值有以下两种可能:1)取空值,表明此学生尚未被分配到任何班级。2)取“班级”关系中某个元组的班级号的值,表明此学生是一个业已存在班级中的成员。(2)在例2.3中,“学号”和“课程号”是“选修”关系的外码,因此,它们可以取空值或取被引用关系中主码的值,因为“学号”和“课程号”又是“选修”关系的主码,所以二者不能取空值。2.2.3用户定义的完整性定义用户定义的完整性(User_definedIntegrity):是指由应用环境决定的、针对某一具体关系数据库而制定的约束条件。例子某个属性必须取唯一值,某些属性值之间需要满足一定的函数关系,学生的年龄定义为两位正整数且取值范围在15~30之间,性别只接受取值“男”或“女”,等等。在关系的完整性规则中,实体完整性和参照完整性是关系模型必须满足的约束条件。2.3关系代数关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式,是用针对关系的运算来表达查询操作的。关系代数的运算对象是关系,运算结果亦为关系。关系代数所使用的运算符包括4类:传统的集合运算符、专门的关系运算符、算术比较符和逻辑运算符,如表2.3所示。运算符分类运算符含义运算符分类运算符含义集合运算符∪并运算逻辑运算符┐非运算-差运算∧与运算∩交运算∨或运算专门的关系运算符×笛卡儿积≠>大于σ选择运算≥大于等于π投影运算<小于∞连接运算≤小于等于÷除法运算=等于不等于表2.3关系代数运算符2.3关系代数2.3.1传统的集合运算2.3.2专门的关系运算2.3.1传统的集合运算1.并作用并(Union)运算在实际的数据查询中可以将两个数据表中的元组进行追加查询,即将两个表中的数据都查询出来,但要消除完全相同的元组。定义设关系R和关系S具有相同的关系模式(即两个关系都有相同的属性),且相应的属性值取自同一个域,即关系R和关系S都是n目关系,则关系R和关系S的“并”是由属于关系R或关系S的元组所构成的集合,记为R∪S,其结果仍然是n目关系。2.差作
本文标题:02关系数据库理论基础
链接地址:https://www.777doc.com/doc-3922231 .html