1、第第2章章 关系数据库关系数据库吉林大学珠海学院吉林大学珠海学院计算机科学与技术系计算机科学与技术系 数据库技术的发展在经历了层次模型、网数据库技术的发展在经历了层次模型、网状模型后,形成了今天较为成熟的关系模型。状模型后,形成了今天较为成熟的关系模型。19701970年美国年美国IBMIBM公司的研究员公司的研究员E.F.CoddE.F.Codd首首次提出了数据库系统的关系模型,开创了数据次提出了数据库系统的关系模型,开创了数据库关系方法和关系数据理论的研究,为数据库库关系方法和关系数据理论的研究,为数据库技术奠定了理论基础。技术奠定了理论基础。主要内容主要内容一一 关系数据库概述关系数据库
2、概述 l关系的定义关系的定义 l关系模式关系模式 l关系数据库关系数据库 l关系的完整性约束关系的完整性约束 二二 关系代数关系代数l传统的集合运算传统的集合运算 l专门的关系运算专门的关系运算 1关系的定义关系的定义l域(域(domaindomain)l笛卡尔积(笛卡尔积(Cartesian ProductCartesian Product)l关系(关系(relationrelation)(1)域(domain)定义定义2.1 2.1 域是一组具有相同数据类型的值的集合。域是一组具有相同数据类型的值的集合。l例如:姓名的域是指构成所有合法姓名的字符例如:姓名的域是指构成所有合法姓名的字符串集
3、合、性别的域是串集合、性别的域是男男,女女、成绩、成绩的域是介于的域是介于01000100的实数、出生年份的域是介的实数、出生年份的域是介于某个取值范围的日期等。于某个取值范围的日期等。(2)笛卡尔积()笛卡尔积(Cartesian Product)l定义定义2.2 2.2 给定一组域给定一组域D1D1,D2D2,DnDn,这些域,这些域中可以有相同的。中可以有相同的。D1D1,D2D2,DnDn的笛卡尔积的笛卡尔积为:为:D1D1D2D2DnDn(d1d1,d2d2,dndn)didi Di Di,i i1 1,2 2,n nl不能重复出现的所有域的所有取值的一个组合。不能重复出现的所有域的
4、所有取值的一个组合。l若若Di(i=1,2,n)为有限集,其基)为有限集,其基数(数(Cardinal Number,此域中所有可,此域中所有可取值的个数)为取值的个数)为mi(i=1,2,n),),则笛卡尔积的基数则笛卡尔积的基数M为:为:nii1mM例如:给出三个域:例如:给出三个域:D1=D1=性别性别=男,女男,女 (性别集合)(性别集合)D2=D2=专业专业=计算机专业,信息专业计算机专业,信息专业 (专业集合)(专业集合)D3=D3=姓名姓名=张静,刘敏,王一张静,刘敏,王一 (姓名集合)(姓名集合)基数:223=12 D1D1D2D2D3 D3 (男,计算机专业,张静男,计算机专
5、业,张静),(男,计算机专业,刘男,计算机专业,刘敏敏),(男,计算机专业,王一男,计算机专业,王一),(男,信息专业,张静男,信息专业,张静),(男,信息专业,男,信息专业,刘敏刘敏),(男,信息专业,王一男,信息专业,王一),(女,计算机专业,张静女,计算机专业,张静),(女,计算机专业,刘敏女,计算机专业,刘敏),(女,计算机专业,王一女,计算机专业,王一),(女,信息专业,张静女,信息专业,张静),(女,信息专业,女,信息专业,刘敏刘敏),(女,信息专业,王一女,信息专业,王一)(3)关系()关系(relation)l定义定义2.3 笛卡尔积笛卡尔积D1D2Dn的任的任一子集称为在域一
6、子集称为在域D1,D2,Dn上的上的关系,表示为关系,表示为R(D1,D2,Dn)。)。其中:其中:R表示关系的名字,表示关系的名字,n表示关系表示关系的目或度(的目或度(Degree)。)。l候选码(候选码(Candidate Key):能唯一表示关系):能唯一表示关系中元组的一个属性或属性集。称为候选码,也中元组的一个属性或属性集。称为候选码,也称候选关键字。称候选关键字。如:如:“学生关系学生关系”中学号能唯一标识每个学生,中学号能唯一标识每个学生,则属性则属性“学号学号”是学生关系的候选码。是学生关系的候选码。又如:在又如:在“选课关系选课关系”中,只有属性的组合中,只有属性的组合“学
7、号学号”+“课程号课程号”才能唯一标识每一条选才能唯一标识每一条选课记录,则属性集课记录,则属性集(学号,课程号学号,课程号)是选课关系是选课关系的候选码。的候选码。l主码(主码(Primary Key):如果一个关系中有多):如果一个关系中有多个候选码,可以从中选择一个作为查询、插入个候选码,可以从中选择一个作为查询、插入或删除元组的操作变量,被选中的候选码称为或删除元组的操作变量,被选中的候选码称为主关系码,或简称主码、主键、主关键字等。主关系码,或简称主码、主键、主关键字等。l每个关系必须有且仅有一个主码。每个关系必须有且仅有一个主码。l外码(外码(Foreign KeyForeign
8、Key):设):设F F是基本关系是基本关系R R的一的一个或一组属性,但不是关系个或一组属性,但不是关系R R的主码(或候选的主码(或候选码)。如果码)。如果F F与基本关系与基本关系S S的主码的主码K K相对应,则相对应,则称称F F是基本关系是基本关系R R的外部关系码,可简称外码。的外部关系码,可简称外码。“学生数据库学生数据库”中有中有“学生学生”和和“院系院系”两个关系,其关系模式如两个关系,其关系模式如下:下:学生(学生(学号学号、姓名、性别、年龄、姓名、性别、年龄、院院系编码系编码)假设假设“学号学号”为主码为主码院系(院系(院系编码院系编码,院系名称、电话),院系名称、电话
9、)假设假设“院系编码院系编码”为主码为主码 学生关系中的学生关系中的“院系编码院系编码”为外码。为外码。2关系模式关系模式l关系模式一般可简写为关系模式一般可简写为R(U)或)或R(A1,A2,An)。其中,)。其中,R为关系名,为关系名,A1,A2,An为属性名。为属性名。我们以学生信息管理系统的模型为例,其我们以学生信息管理系统的模型为例,其对应的部分关系模式如下:对应的部分关系模式如下:l学生(学号,姓名,曾用名,性别,年龄,籍贯,民学生(学号,姓名,曾用名,性别,年龄,籍贯,民族,入学时间,系别,专业)族,入学时间,系别,专业)l教师(教师工号,姓名,曾用名,性别,年龄,籍贯,教师(教
10、师工号,姓名,曾用名,性别,年龄,籍贯,政治面貌,参加工作时间,教研室号,职称)政治面貌,参加工作时间,教研室号,职称)l系(系别代码,系名称,办公室地址,电话)系(系别代码,系名称,办公室地址,电话)l课程(课程号,课程名,教师工号,学分,学期号,课程(课程号,课程名,教师工号,学分,学期号,课程类型)课程类型)l成绩(学号,课程号,成绩)成绩(学号,课程号,成绩)l教研室(教研室号,教研室名,办公室)教研室(教研室号,教研室名,办公室)关系模式与关系的区别:关系模式与关系的区别:1 1 在关系数据库中,关系模式是在关系数据库中,关系模式是型型,关系是,关系是值值,两者是有区别的。两者是有区
11、别的。2 2 一般来说,关系模式是相对稳定的,而关系一般来说,关系模式是相对稳定的,而关系的值是相对变化的,因此在有些文献中,称关的值是相对变化的,因此在有些文献中,称关系模式为关系的内涵(系模式为关系的内涵(intensionintension),关系的),关系的值为关系的外延(值为关系的外延(extensionextension)。)。3 3 在进行关系数据库的设计时,通常使用关系在进行关系数据库的设计时,通常使用关系模式来描述关系。模式来描述关系。3关系数据库关系数据库 l通常关系数据库模式与关系数据库的值统称为关系数通常关系数据库模式与关系数据库的值统称为关系数据库据库 例如,教学关系
12、数据库包含如下五个关系模式:例如,教学关系数据库包含如下五个关系模式:l教师(职工编码,姓名,职称,年龄,学历)教师(职工编码,姓名,职称,年龄,学历)l学生(学号,姓名,性别,年龄,籍贯,专业)学生(学号,姓名,性别,年龄,籍贯,专业)l课程类型(课程编码,课程名称,学分,课时,选修课程类型(课程编码,课程名称,学分,课时,选修课)课)l已开课程(开课编码,课程编码,主讲教师)已开课程(开课编码,课程编码,主讲教师)l选课(学号,开课编码,成绩)选课(学号,开课编码,成绩)在每个关系中,又有其相应的数据库在每个关系中,又有其相应的数据库的实例。例如,与学生关系模式对应的数的实例。例如,与学生
13、关系模式对应的数据库中的实例有如下据库中的实例有如下4个元组。个元组。学号学号姓名姓名性别性别年龄年龄籍贯籍贯专业专业080301080301王建王建男男1818吉林吉林计算机计算机080302080302田江晨田江晨男男1919长春长春计算机计算机080303080303苏畅苏畅女女1818哈尔滨哈尔滨工商工商080304080304李学明李学明男男1919沈阳沈阳机电机电关系模式关系值4 4关系的完整性约束关系的完整性约束 关系模型中允许定义三类完整性:实体关系模型中允许定义三类完整性:实体完整性、参照完整性和用户定义的完整性。完整性、参照完整性和用户定义的完整性。其中实体完整性和参照完整
14、性是关系模型其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,是由关系数据库必须满足的完整性约束条件,是由关系数据库系统自动支持的。而用户定义的完整性是应用系统自动支持的。而用户定义的完整性是应用领域需要遵循的条件,体现在具体领域中的语领域需要遵循的条件,体现在具体领域中的语义约束。义约束。实体完整性:实体完整性:l规则规则2.1 实体完整性规则:实体完整性规则:若属性若属性A是基本关系是基本关系R的主属性,则属性的主属性,则属性A不能取空值。不能取空值。l如:在学生档案表里,由于如:在学生档案表里,由于“学号学号”是基本关是基本关系的主属性,则系的主属性,则“学号学号”值不能为空
15、值,学生值不能为空值,学生的其他属性可以是空值,如的其他属性可以是空值,如“年龄年龄”值或值或“性性别别”值如果为空,则表明不清楚该学生的这些值如果为空,则表明不清楚该学生的这些特征值。特征值。参照完整性参照完整性:l规则规则2.2 参照完整性规则:参照完整性规则:若属性(属性组)若属性(属性组)F是基本关系是基本关系R的外码,它的外码,它与基本关系与基本关系S的主码的主码K相对应(基本关系相对应(基本关系R和和S不一定是不同的关系),则对于不一定是不同的关系),则对于R中每个元组中每个元组在在F上的值必须为:上的值必须为:(1)或者取空值()或者取空值(F的每个属性值均为空值);的每个属性值
16、均为空值);(2)或者等于)或者等于S中某个元组的主码值。中某个元组的主码值。例如,学生关系中的例如,学生关系中的“系院编码系院编码”为外码;那么依照参照完整性规则,为外码;那么依照参照完整性规则,在学生关系中,某一个学生在学生关系中,某一个学生“系院系院编码编码”要么取空值,表示该学生未要么取空值,表示该学生未被分配到指定系;要么等于系院关被分配到指定系;要么等于系院关系中某个元组的系中某个元组的“系院编码系院编码”,表,表示该学生隶属于指定系。示该学生隶属于指定系。用户定义的完整性用户定义的完整性l用户定义的完整性约束:用户定义的完整性约束:就是针对某一具体关系数据库的约束条件,就是针对某
17、一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足它反映某一具体应用所涉及的数据必须满足的语义要求。的语义要求。例如:在学生关系中,学生年龄分量的取值例如:在学生关系中,学生年龄分量的取值范围应该限定在范围应该限定在1830岁,学生考试的成绩岁,学生考试的成绩必须在必须在0100之间,学生的性别应该为男或之间,学生的性别应该为男或女等。女等。2.2 关系代数关系代数1.1.关系代数的运算分为传统集合运算和专门关系关系代数的运算分为传统集合运算和专门关系运算两类。运算两类。2.2.传统的集合运算:传统的集合运算:包括并、交、差、广义笛卡包括并、交、差、广义笛卡尔积;尔积;3.3.
18、专门关系运算包括:专门关系运算包括:选择、投影、连接和除操选择、投影、连接和除操作。作。4.4.此外,还涉及到两类辅助运算符:此外,还涉及到两类辅助运算符:5.5.比较运算符:比较运算符:大于、大于等于、小于、小于等大于、大于等于、小于、小于等于、等于、不等于;于、等于、不等于;6.6.逻辑运算符:逻辑运算符:非、与、或。非、与、或。(1 1)并()并(UnionUnion)设关系设关系R R和关系和关系S S具有相同的目具有相同的目n n(即两(即两个关系都有个关系都有n n个属性),且相应的属性取自个属性),且相应的属性取自同一个域,则关系同一个域,则关系R R与关系与关系S S的并由属于
19、的并由属于R R或或属于属于S S的元组组成。其结果关系仍为的元组组成。其结果关系仍为n n目关目关系。记作:系。记作:RS=t|RS=t|tRtStRtS 集合集合RSRSR RS SR=1R=1,2 2,33S=2S=2,3 3,44RSRS=1=1,2 2,3 3,44(2 2)交()交(IntersectionIntersection)设关系设关系R R和关系和关系S S具有相同的目具有相同的目n n,且,且相应的属性取自同一个域,则关系相应的属性取自同一个域,则关系R R与与关系关系S S的交由既属于的交由既属于R R又属于又属于S S的元组组的元组组成。其结果关系仍为成。其结果关系
20、仍为n n目关系。记作:目关系。记作:RS=t|RS=t|tRtStRtS 集合集合RSRS RSR=1R=1,2 2,33S=2S=2,3 3,44R R S S=2=2,33(3 3)差()差(DifferenceDifference)设关系设关系R R和关系和关系S S具有相同的目具有相同的目n n,且,且相应的属性取自同一个域,则关系相应的属性取自同一个域,则关系R R与与关系关系S S的差由属于的差由属于R R而不属于而不属于S S的所有元的所有元组组成。其结果关系仍为组组成。其结果关系仍为n n目关系。记目关系。记作:作:R RS=t|S=t|t t RtRt S S 集合集合R-
21、SR-S R SR=1R=1,2 2,33S=2S=2,3 3,44R-SR-S=1=1设有关系设有关系R和和S(如下表),计算(如下表),计算RS,RS,RS,RS。2.2.专门的关系运算专门的关系运算 专门的关系运算包括选择、投专门的关系运算包括选择、投影、连接和除运算。影、连接和除运算。1.(1)设关系模式为)设关系模式为R(A1,A2,An)。)。它的一个关系设为它的一个关系设为R。TR表示表示t是是R的一个的一个元组。元组。tAi则表示元组则表示元组t中属性中属性Ai上的一个上的一个分分量量。tr ts2.(2)R为为n目关系,目关系,S为为m目关系。目关系。TrR,3.TsS,Tr
22、 Ts称为元组的连接。它是一个称为元组的连接。它是一个n+m列的元组,前列的元组,前n个分量为个分量为R中的一个中的一个n元元组,后组,后m个分量为个分量为S中的一个中的一个m元组。元组的元组。元组的连接在笛卡儿积中曾用到过,在专门的关系连接在笛卡儿积中曾用到过,在专门的关系运算中连接运算也将用到。运算中连接运算也将用到。几个基本概念几个基本概念srtt几个基本概念几个基本概念1.(3)给定一个关系)给定一个关系R(X,Z),),X和和Z为为属性组。当属性组。当tX=x时,时,x在在R中的象集定中的象集定义为:义为:2.Zx=tZ|tR,tX=x3.它表示它表示R中属性组中属性组X上值为上值为
23、x的诸元组在的诸元组在Z上分量的集合。上分量的集合。X XZ Zx x1 1Z Z1 1x x2 2Z Z2 2x x2 2Z Z3 3x x3 3Z Z1 1x x3 3Z Z3 3l例如例如:x1在在R中的象集中的象集Zx1=Z1,x2在在R中的象集中的象集Zx2=Z2,Z3x3在在R中的象集中的象集Zx3=Z1,Z3R R设有一个学生课程数据库l学生关系学生关系Student学号学号姓名姓名性别性别年龄年龄籍贯籍贯专业专业080301080301王建王建男男1818吉林吉林计算机计算机080302080302田江晨田江晨男男1919长春长春计算机计算机080303080303苏畅苏畅女女
24、1818哈尔滨哈尔滨工商工商080304080304李学明李学明男男1919沈阳沈阳机电机电课程关系Course课程号课程号课程名课程名学分学分课程类型课程类型0101大学语文大学语文3 3必修必修0202计算机文化基础计算机文化基础4 4必修必修0303信息理论信息理论3 3必修必修0404C C程序设计程序设计3 3选修选修0505艺术鉴赏艺术鉴赏2 2选修选修0606网页设计网页设计2 2选修选修选课关系SC 学号学号课程号课程号成绩成绩080301049208030103850803010188080302029508030305900803030680(1 1)选择运算)选择运算 选
25、择又称为限制。它是在关系选择又称为限制。它是在关系R R中选择满中选择满足给定条件的诸元组,记作:足给定条件的诸元组,记作:F F(R)=t|(R)=t|tRtR F(tF(t)=)=真真。其中其中为选择运算符,为选择运算符,F F表示选择条件,表示选择条件,它是一个逻辑表达式,取逻辑值它是一个逻辑表达式,取逻辑值真真或或假假。选择运算是一种横向的操作。也称之为选择运算是一种横向的操作。也称之为行运算。行运算。例例2-3查询计算机专业全体学生。查询计算机专业全体学生。l专业专业=计算机计算机(Student)学号学号姓名姓名性别性别年年龄龄籍贯籍贯专业专业080301王建王建男男18吉林吉林计
26、算机计算机080302田江晨田江晨男男19长春长春计算机计算机例例2-4 查询学分在查询学分在3分以下的课程。分以下的课程。l学分学分3(Course)课程号课程号课程名课程名学分学分课程类型课程类型0505艺术鉴赏艺术鉴赏2 2选修选修0606网页设计网页设计2 2选修选修(2 2)投影运算)投影运算 关系关系R R上的投影是从上的投影是从R R中选择出若干属性中选择出若干属性列组成新的关系。记作:列组成新的关系。记作:A A(R)=(R)=tAtA|tRtR 。其中其中为投影运算符,为投影运算符,A A为为R R中的属性列。中的属性列。投影运算是一种纵向的操作。业称之为投影运算是一种纵向的
27、操作。业称之为列运算列运算.例例2-5 查询每个学生的姓名和籍贯。查询每个学生的姓名和籍贯。l姓名,籍贯姓名,籍贯(Student)或或2,5(Student)。姓名姓名籍贯籍贯王建王建吉林吉林田江晨田江晨长春长春苏畅苏畅哈尔滨哈尔滨李学明李学明沈阳沈阳例例2-6 查询都开设了哪些专业。查询都开设了哪些专业。l专业专业(Student)或或6(Student)。专业专业计算机计算机工商工商机电机电(3 3)连接运算)连接运算 连接也称为连接也称为连接。它是从两个连接。它是从两个关系的笛卡尔积中选取属性间满足一关系的笛卡尔积中选取属性间满足一定条件的元组。记作:定条件的元组。记作:其中其中A A
28、和和B B分别为分别为R R和和S S上度数相等上度数相等且可比的属性组。且可比的属性组。是比较运算符。是比较运算符。连接运算从连接运算从R R和和S S的笛卡尔积的笛卡尔积R RS S中选取(中选取(R R关系)在关系)在A A属性组上属性组上的值与(的值与(S S关系)在关系)在B B属性组上值满属性组上值满足比较关系足比较关系的元组。的元组。可实现两个关系的横向合并。可实现两个关系的横向合并。例.关系R和S如下,求R(BC)S。关系关系R R 关系关系S S ABA175A282A490ACDA18185A28270A38390RXS结果R(BC)S结果R.ABS.ACDA175A181
29、85A175A28270A175A38390A282A38390 连接运算中有两种最为重要也连接运算中有两种最为重要也最为常用的连接,一种是最为常用的连接,一种是等值连接等值连接(equiequi-join-join),另一种是),另一种是自然连接自然连接(Natural joinNatural join)。)。等值连接等值连接 l是是为为“”的连接运算。它是从关系的连接运算。它是从关系R与与S的笛卡尔积中选取的笛卡尔积中选取A、B属性值相等的那属性值相等的那些元组。些元组。即:即:关系关系R R与与S S的等值连接运算的等值连接运算R.A=S.AR.A=S.AR.ABS.ACDA175A18
30、185A282A28270自然连接自然连接 自然连接是一种特殊的等值连接,自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量它要求两个关系中进行比较的分量必须是相同的属性组,并且要在结必须是相同的属性组,并且要在结果中把重复的属性去掉。果中把重复的属性去掉。关系关系R R与与S S的自然连接运算的自然连接运算 ABCDA1758185A2828270(4 4)除操作)除操作 给定关系给定关系R(X,Y)R(X,Y)和和S(Y,Z)S(Y,Z),其中,其中X,Y,ZX,Y,Z为为属性组。属性组。R R中的中的Y Y与与S S中的中的Y Y可以有不同的属性名,可以有不同的属性名,但必须出
31、自相同的域集。但必须出自相同的域集。R R与与S S的除运算得到一的除运算得到一个新的关系个新的关系P(X)P(X),P P是是R R中满足下列条件的元组中满足下列条件的元组在在X X属性列上的投影:元组在属性列上的投影:元组在X X上分量值上分量值x x的像集的像集YxYx包含包含S S在在Y Y上投影的集合。记作:上投影的集合。记作:1.1.在求解在求解R RS S时,对时,对R R按按X X的值的分组,的值的分组,然后检查每一组,如某一组中的然后检查每一组,如某一组中的Y Y包含包含S S在在Y Y上投影,则取该组中的上投影,则取该组中的X X的值作为的值作为关系关系P P中的一个元组,
32、否则不取。中的一个元组,否则不取。2.2.按照除运算规则,我们不必关注按照除运算规则,我们不必关注Z Z。例.R S分析:1.X1.X相当于相当于A A;Y Y 相当于相当于B,CB,C;2.R2.R按按X X可分为三组可分为三组 a1 b1 c1 a2 b2 c1 a3 b4 c6a1 b1 c1 a2 b2 c1 a3 b4 c6 a1 b2 c1 a1 b2 c1 a1 b2 c3 a1 b2 c33.B3.B,C C(S S)包含三个元组:)包含三个元组:(b1b1,c1c1)()(b2b2,c1c1)()(b2b2,c3c3)4.4.取取R R中的中的a1a1的值作为关系的值作为关系P P中的一个元组。中的一个元组。P=RS