1、数据库系统原理数据库系统原理The Principle of Database System第第2章章 关系代数(关系代数(1)2第2章 关系数据库2.1 关系数据结构及形式化定义2.2 关系操作2.3 关系的完整性3第2章 关系数据库 1970年的6月,Edgar Frank Codd在 Communications of ACM 上发表了A Relational Model of Data for Large Shared Data Banks(大型共享数据库数据的关系模型)1973年IBM启动了System R的项目,研究关系型数据库的实际可行性 1979年,RSI发布了可用于DEC P
2、DP-11计算机上的商用ORACLE产品4第2章 关系数据库左起左起 Ed Oates、Bruce Scott、Bob Miner、Larry Ellison52.1关系数据结构及形式化定义 关系数据库系统 关系模型的组成支持关系模型的数据库系统关系数据结构关系操作集合关系完整性约束62.1关系数据结构及形式化定义2.1.1 关系2.1.2 关系模式2.1.3 关系数据库72.1.1 关系 单一的数据结构-关系现实世界的实体以及实体间的各种联系均用关系来表示 数据的逻辑结构-二维表从用户角度看,关系模型中数据的逻辑结构是一张二维表 82.1.1 关系 关系模型建立在集合代数的基础上 从集合论角
3、度给出关系数据结构的形式化定义域笛卡尔积关系9域(Domain)域是一组具有相同数据类型的值的集合。例如:整数、实数1,10之间的整数长度为8的字符串集合男,女介于2007年7月1日到2008年2月29日之间的日期10笛卡尔积(Cartesian Product)笛卡尔积域上面的一种集合运算。给定一组域给定一组域D D1 1,D D2 2,D Dn n,这些域中可以有相,这些域中可以有相同的。同的。D D1 1,D D2 2,D Dn n的笛卡尔积为:的笛卡尔积为:D D1 1D D2 2D Dn n(d d1 1,d d2 2,d dn n)d di i D Di i,i i1 1,2 2,
4、n n所有域的所有取值的一个组合所有域的所有取值的一个组合不能重复不能重复11给定一组域给定一组域D D1 1,D D2 2,D Dn n,这些域中可以有相同,这些域中可以有相同的。的。D D1 1,D D2 2,D Dn n的笛卡尔积为:的笛卡尔积为:D D1 1D D2 2D Dn n(d d1 1,d d2 2,d dn n)d di i D Di i,i i1 1,2 2,n n例:给出三个域例:给出三个域D1=SUPERVISOR=张清玫,刘逸张清玫,刘逸 D2=SPECIALITY=计算机专业,信息专业计算机专业,信息专业D3=POSTGRADUATE=李勇,刘晨,王敏李勇,刘晨,
5、王敏D1D2D3?笛卡尔积(Cartesian Product)12D1D2D3(张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨),(张清玫,计算机专业,王敏),(张清玫,信息专业,李勇),(张清玫,信息专业,刘晨),(张清玫,信息专业,王敏),(刘逸,计算机专业,李勇),(刘逸,计算机专业,刘晨),(刘逸,计算机专业,王敏),(刘逸,信息专业,李勇),(刘逸,信息专业,刘晨),(刘逸,信息专业,王敏)D1=SUPERVISOR=张清玫,刘逸张清玫,刘逸 D2=SPECIALITY=计算机专业,信息专业计算机专业,信息专业D3=POSTGRADUATE=李勇,刘晨,王敏李勇,刘晨,王敏
6、笛卡尔积(Cartesian Product)13 元组(Tuple)笛卡尔积中每一个元素(笛卡尔积中每一个元素(d1,d2,dn)叫作)叫作一个一个n元组(元组(n-tuple)或简称元组。)或简称元组。D1D2D3(张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨),(张清玫,计算机专业,王敏),(张清玫,信息专业,李勇),(张清玫,信息专业,刘晨),(张清玫,信息专业,王敏),笛卡尔积(Cartesian Product)14 分量(Component)笛卡尔积元素(笛卡尔积元素(d1,d2,dn)中的每一个值)中的每一个值di叫作一个分量。叫作一个分量。D1D2D3(张清玫,计算
7、机专业,李勇),(张清玫,计算机专业,刘晨),(张清玫,计算机专业,王敏),(张清玫,信息专业,李勇),(张清玫,信息专业,刘晨),(张清玫,信息专业,王敏),笛卡尔积(Cartesian Product)15 基数(Cardinal number)若若Di(i1,2,n)为有限集,其基数为)为有限集,其基数为mi(i1,2,n),则),则D1D2Dn的基数的基数M为:为:mMin1i笛卡尔积(Cartesian Product)16笛卡尔积(Cartesian Product)D1D2D3(张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨),(张清玫,计算机专业,王敏),(张清玫,信息
8、专业,李勇),(张清玫,信息专业,刘晨),(张清玫,信息专业,王敏),(刘逸,计算机专业,李勇),(刘逸,计算机专业,刘晨),(刘逸,计算机专业,王敏),(刘逸,信息专业,李勇),(刘逸,信息专业,刘晨),(刘逸,信息专业,王敏)D1=SUPERVISOR=张清玫,刘逸张清玫,刘逸 D2=SPECIALITY=计算机专业,信息专业计算机专业,信息专业D3=POSTGRADUATE=李勇,刘晨,王敏李勇,刘晨,王敏D1D2D3的基数:的基数:22312即共有即共有12个元组个元组17 笛卡尔积可表示为一个二维表。表中的每行对应一个元组,表中的每列对应一个域。笛卡尔积(Cartesian Prod
9、uct)18 笛卡尔积(Cartesian Product)19关系(Relation)关系 D1D2Dn的子集叫作在域的子集叫作在域D1,D2,Dn上的关系,表示为上的关系,表示为 R(D1,D2,Dn)R:关系名关系名n:关系的目或度(关系的目或度(Degree)20 关系(Relation)D1D2D3(张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨),(张清玫,计算机专业,王敏),(张清玫,信息专业,李勇),(张清玫,信息专业,刘晨),(张清玫,信息专业,王敏),(刘逸,计算机专业,李勇),(刘逸,计算机专业,刘晨),(刘逸,计算机专业,王敏),(刘逸,信息专业,李勇),(刘逸
10、,信息专业,刘晨),(刘逸,信息专业,王敏)从从D1D2D3中取出有实际中取出有实际意义的元组来构造关系:意义的元组来构造关系:SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE)假设:假设:导师与专业:导师与专业:1:1导师与研究生:导师与研究生:1:nSAP(张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨),(刘逸,信息专业,王敏)21关系(Relation)关系中的每个元素是关系中的元组,通常用t表示。关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。22关系中不同列可以对应相同的域,为了加以区分,必须对每列起一个名字,称为属性(Attrib
11、ute)。n目关系必有n个属性。关系(Relation)23关系(Relation)候选码(Candidate key)若一个关系有多个候选码,则选定其中一个为主若一个关系有多个候选码,则选定其中一个为主码(码(Primary key)在最简单的情况下,候选码只包含一个属性在最简单的情况下,候选码只包含一个属性在最极端的情况下,关系模式的所有属性组是在最极端的情况下,关系模式的所有属性组是这个关系模式的候选码,称为全码(这个关系模式的候选码,称为全码(All-key)候选码的诸属性称为主属性(候选码的诸属性称为主属性(Prime attribute)不包含在任何侯选码中的属性称为非码属性不包含
12、在任何侯选码中的属性称为非码属性(Non-key attribute)24关系(Relation)主码(Primary Key)若关系中的某一属性组的值能唯一地标识一个元若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码组,则称该属性组为候选码25关系(Relation)三类关系基本关系(基本表或基表)实际存在的表,是实际存储数据的逻辑表示实际存在的表,是实际存储数据的逻辑表示26关系(Relation)三类关系基本关系(基本表或基表)查询表查询结果对应的表查询结果对应的表27关系(Relation)三类关系基本关系(基本表或基表)查询表视图表由基本表或其他视图表导出的表,是虚
13、表,由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据不对应实际存储的数据28关系(Relation)无限关系在数据库系统中是无意义的。因此限定关系必须是有限集合。笛卡尔积不满足交换律,但关系满足交换律,即(d1,d2,di,dj,dn)=(d1,d2,dj,di,dn)(i,j=1,2,n)29关系(Relation)基本关系的性质列是同质的(Homogeneous)每一列中的分量是同一类型的数据,每一列中的分量是同一类型的数据,来自同一个域。来自同一个域。30关系(Relation)基本关系的性质不同的列可出自同一个域每一列称为一个属性。每一列称为一个属性。不同的属性要给予不同的属
14、性名。不同的属性要给予不同的属性名。31关系(Relation)两个域:两个域:人(人(PERSON)=张清玫,刘逸,李勇,刘晨,王敏张清玫,刘逸,李勇,刘晨,王敏专业(专业(SPECIALITY)=计算机专业,信息专业计算机专业,信息专业SAP关系的导师属性和研究生属性都从关系的导师属性和研究生属性都从PERSON域中取值为域中取值为了避免混淆,必须给这两个属性取不同的属性名,而不能直了避免混淆,必须给这两个属性取不同的属性名,而不能直接使用域名。接使用域名。定义:定义:导师属性名为导师属性名为SUPERVISOR-PERSON(或(或SUPERVISOR)研究生属性名为研究生属性名为POS
15、TGRADUATE-PERSON(或(或POSTGRADUATE)32关系(Relation)基本关系的性质列的顺序无所谓遵循这一性质的数据库产品遵循这一性质的数据库产品(如如ORACLE),增,增加新属性时,永远是插至最后一列。加新属性时,永远是插至最后一列。也有许多关系数据库产品没有遵循这一性质,也有许多关系数据库产品没有遵循这一性质,例如例如FoxPro仍然区分了属性顺序。仍然区分了属性顺序。33关系(Relation)基本关系的性质任意两个元组的候选码不能相同34关系(Relation)基本关系的性质行的顺序无所谓遵循这一性质的数据库产品遵循这一性质的数据库产品(如如ORACLE),插
16、,插入一个元组时永远插至最后一行。入一个元组时永远插至最后一行。但也有许多关系数据库产品没有遵循这一性但也有许多关系数据库产品没有遵循这一性质,例如质,例如FoxPro仍然区分了元组的顺序。仍然区分了元组的顺序。35关系(Relation)基本关系的性质分量必须取原子值每一个分量都必须是不可分的数据项。每一个分量都必须是不可分的数据项。362.1.2 关系模式 关系模式是型 关系是值372.1.2 关系模式 关系模式是对关系的描述元组集合的结构元组语义以及完整性约束条件属性间的数据依赖关系集合属性构成属性构成属性来自的域属性来自的域 属性与域之间的映象关系属性与域之间的映象关系382.1.2
17、关系模式关系模式可以形式化地表示为:关系模式可以形式化地表示为:R(U,D,DOM,F)R 关系名关系名U 组成该关系的属性名集合组成该关系的属性名集合D 属性组属性组U中属性所来自的域中属性所来自的域DOM 属性向域的映象集合属性向域的映象集合F 属性间的数据依赖关系集合属性间的数据依赖关系集合392.1.2 关系模式例:导师和研究生出自同一个域例:导师和研究生出自同一个域人人取不同的属性名,并在模式中定义属性向域取不同的属性名,并在模式中定义属性向域的映象,即说明它们分别出自哪个域。的映象,即说明它们分别出自哪个域。DOM(SUPERVISOR)=DOM(POSTGRADUATE)=PER
18、SON402.1.2 关系模式关系模式通常可以简记为关系模式通常可以简记为 R(U)或或 R(A1,A2,An)R 关系名关系名A1,A2,An 属性名属性名注:域名及属性向域的映象常常直接说明为注:域名及属性向域的映象常常直接说明为 属性的类型、长度属性的类型、长度412.1.3 关系数据库 在一个给定的应用领域中,所有实体及实体之间联系的关系的集合构成一个关系数据库。422.1.3 关系数据库 关系数据库也有型和值之分关系数据库的型称为关系数据库模式,是对关系数据库的描述。关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常简称为关系数据库。若干域的定义若干域的定义在这些域上定义的
19、若干关系模式在这些域上定义的若干关系模式432.2关系操作2.2.1 基本的关系操作2.2.2 关系数据语言的分类442.2.1基本的关系操作 查询选择、投影、连接、除、并、差、交、笛卡尔积等 数据更新插入、删除、修改查询的表达能力是其中最主要的部分查询的表达能力是其中最主要的部分45 关系操作的特点集合操作方式,即操作的对象和结果都是集合操作方式,即操作的对象和结果都是集合集合一次一集合一次一集合非关系数据模型的数据操作方式非关系数据模型的数据操作方式一次一记录一次一记录2.2.1基本的关系操作46 关系代数语言 关系演算语言元组关系演算语言域关系演算语言2.2.2关系数据语言的分类用对关系
20、的运算来表达查询要求用对关系的运算来表达查询要求用谓词来表达查询要求用谓词来表达查询要求47 具有关系代数和关系演算双重特点的语言典型代表:SQL(Structured Query Language)2.2.2关系数据语言的分类SQL不仅具有丰富的查询功能,而且具有不仅具有丰富的查询功能,而且具有数据定义和数据控制功能。数据定义和数据控制功能。482.3.1关系的三类完整性约束2.3.2实体完整性2.3.3参照完整性2.3.4用户定义的完整性2.3关系的完整性49 关系的完整性实体完整性参照完整性用户定义的完整性2.3.1关系的三类完整性约束关系模型的完整性规则对关系的某种约束条件关系模型的完
21、整性规则对关系的某种约束条件关系的两个不变性关系的两个不变性应用领域需要遵循应用领域需要遵循的约束条件的约束条件502.3.2 实体完整性 实体完整性规则(Entity Integrity)若属性(指一个或一组属性)若属性(指一个或一组属性)A是基本关系是基本关系R的主属性,则的主属性,则A不能取空值。不能取空值。空值(空值(null)表示)表示“不知道不知道”或或“不存在不存在”的的值。值。例如:例如:SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE)其中其中POSTGRADUATE为主属性(假设研究生不会重名),为主属性(假设研究生不会重名),因此不能取空值。因
22、此不能取空值。512.3.2 实体完整性 实体完整性规则规定基本关系的所有主属性都不能取空值。例如:例如:选修(学号,课程号,成绩)选修(学号,课程号,成绩)“学号、课程号学号、课程号”为主码中的主属性,因此这两为主码中的主属性,因此这两个属性都不能取空值。个属性都不能取空值。522.3.2 实体完整性 遵守实体完整性规则的原因:实体完整性规则是针对基本关系而言的。一个实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。基本表通常对应现实世界的一个实体集。现实世界中的实体是可区分的,即它们具有某现实世界中的实体是可区分的,即它们具有某种唯一性标识。种唯一性标识。相应地,
23、关系模型中以主码作为唯一性标识相应地,关系模型中以主码作为唯一性标识如果主属性取空值,就说明存在某个不可标识如果主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第(的实体,即存在不可区分的实体,这与第(2)点相矛盾,因此主属性不能取空值。点相矛盾,因此主属性不能取空值。53 在关系模型中实体及实体间的联系都是用关系来描述的,因此存在着关系与关系间的引用。例例1:学生实体与专业实体间的联系:学生实体与专业实体间的联系学生(学号,姓名,性别,学生(学号,姓名,性别,专业号专业号,年龄),年龄)专业(专业(专业号专业号,专业名),专业名)2.3.3参照完整性542.3.3参照完
24、整性55例例2:学生、课程、学生与课程之间的多对多联系:学生、课程、学生与课程之间的多对多联系学生(学生(学号学号,姓名,性别,专业号,年龄),姓名,性别,专业号,年龄)课程(课程(课程号课程号,课程名,学分),课程名,学分)选修(选修(学号学号,课程号课程号,成绩),成绩)2.3.3参照完整性56 2.3.3参照完整性57例例3:学生实体及其内部的领导联系:学生实体及其内部的领导联系学生(学生(学号学号,姓名,性别,专业号,年龄,姓名,性别,专业号,年龄,班长班长)2.3.3参照完整性58 外码(Foreign Key)设设F是基本关系是基本关系R的一个或一组属性,但不是关的一个或一组属性,
25、但不是关系系R的码。如果的码。如果F与基本关系与基本关系S的主码的主码Ks相对应,相对应,则称则称F是基本关系是基本关系R的的外码。外码。基本关系基本关系R称称为为参照关系参照关系(Referencing Relation)基本关系基本关系S称称为为被参照关系被参照关系(Referenced Relation)或或目标关系目标关系(Target Relation)2.3.3参照完整性59例例1:学生实体与专业实体间的联系:学生实体与专业实体间的联系学生(学号,姓名,性别,学生(学号,姓名,性别,专业号专业号,年龄),年龄)专业(专业(专业号专业号,专业名),专业名)2.3.3参照完整性例例2:
26、学生、课程、学生与课程之间的多对多联系:学生、课程、学生与课程之间的多对多联系学生(学生(学号学号,姓名,性别,专业号,年龄),姓名,性别,专业号,年龄)课程(课程(课程号课程号,课程名,学分),课程名,学分)选修(选修(学号学号,课程号课程号,成绩),成绩)例例3:学生实体及其内部的领导联系:学生实体及其内部的领导联系学生(学生(学号学号,姓名,性别,专业号,年龄,姓名,性别,专业号,年龄,班长班长)602.3.3参照完整性 外码(Foreign Key)目标关系S的主码Ks和参照关系的外码F必须定义在同一个(或一组)域上。外码并不一定要与相应的主码同名。但当外码与相应的主码属于不同关系时,
27、往往取相同的名字,以便于识别。612.3.3参照完整性 参照完整性规则若属性(或属性组)若属性(或属性组)F是基本关系是基本关系R的外码,它的外码,它与基本关系与基本关系S的主码的主码Ks相对应(基本关系相对应(基本关系R和和S不一定是不同的关系),则对于不一定是不同的关系),则对于R中每个元组中每个元组在在F上的值必须为:上的值必须为:或者取空值(或者取空值(F的每个属性值均为空值)的每个属性值均为空值)或者等于或者等于S中某个元组的主码值。中某个元组的主码值。622.3.3参照完整性学生关系中每个元组的学生关系中每个元组的“专业号专业号”属性只取下属性只取下面两类值:面两类值:(1)空值,
28、空值,表示尚未给该学生分配专业;表示尚未给该学生分配专业;(2)非空值,非空值,这时该值必须是专业关系中某个这时该值必须是专业关系中某个元组的元组的“专业号专业号”值,表示该学生不可能分配到值,表示该学生不可能分配到一个不存在的专业中。一个不存在的专业中。例例1:学生(学号,姓名,性别,学生(学号,姓名,性别,专业号专业号,年龄),年龄)专业(专业(专业号专业号,专业名),专业名)632.3.3参照完整性例例2:学生(学生(学号学号,姓名,性别,专业号,年龄),姓名,性别,专业号,年龄)课程(课程(课程号课程号,课程名,学分),课程名,学分)选修(选修(学号学号,课程号课程号,成绩),成绩)“
29、学号学号”和和“课程号课程号”是选修关系中的主属性,是选修关系中的主属性,只能取相应被参照关系中已经存在的主码值。只能取相应被参照关系中已经存在的主码值。642.3.3参照完整性例例3:学生(学生(学号学号,姓名,性别,专业号,年龄,姓名,性别,专业号,年龄,班长班长)(1)空值空值,表示该学生所在班级尚未选出班长;,表示该学生所在班级尚未选出班长;(2)非空值非空值,这时该值必须是本关系中某个元组,这时该值必须是本关系中某个元组的学号值。的学号值。“班长班长”属性值可以取两类值:属性值可以取两类值:652.3.4用户定义的完整性 用户定义的完整性是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。662.3.4用户定义的完整性例如:课程(课程号,课程名,学分)例如:课程(课程号,课程名,学分)用户定义的完整性规则:用户定义的完整性规则:“课程名课程名”属性必须取唯一值属性必须取唯一值“课程名课程名”属性也不能取空值属性也不能取空值“学分学分”属性只能取值属性只能取值1,2,3,4672.3.4用户定义的完整性 关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。68Congratulations!