《《关系数据模型》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《关系数据模型》PPT课件.ppt(69页珍藏版)》请在三一办公上搜索。
1、第二章 关系数据模型,数据库原理、方法与应用,关系模型的数据结构并、交、差和笛卡尔积四种传统的集合运算选择、投影、连接三种专门的关系运算关系的实体完整性规则和参照完整性规则关系系统的定义和分类,本章主要讲述了关系模型的数据结构、数据操纵和完整性约束以及关系系统的定义和分类。通过本章的学习,同学们应该掌握以下内容:,本章重难点:,第二章 关系数据模型,2.1 关系(Relation)2.2 码(Key)2.3 关系数据库的联系2.4 关系完整性规则2.5 数据字典与系统目录2.6 关系代数2.7 关系运算的组合2.8 用关系代数表示查询,2.1 关系(Relation),1)关系在关系模型中,数
2、据是以二维表的形式存在的,这个行与列交叉的二维表就叫做关系。每个关系有一个关系名。在计算机里,一个关系可以存储为一个文件,如FoxPro中的.dbf文件。2)元组表中的行称为元组。一行为一个元组,对应存储文件中的一个记录值。,3)属性表中的列称为属性,每一列有一个属性名。属性值相当于记录中的数据项或者字段值。4)属性域属性的取值范围,即不同元组对同一个属性的值所限定的范围。例如,逻辑型属性只能从逻辑值真(如.T.)或逻辑假(如.F.)两个值中取值。,5)关系模式对关系的描述称为关系模式,格式为:关系名(属性名1,属性名2,属性名n)例如:学生关系可表示为:学生(学号,姓名,性别,出生年月,系编
3、号)一个关系数据库中通常包含一组关系,例如,学校数据库中有系、学生、课程、教师、教室等多个关系。,举例,图2.1 学生关系,属性名,属性值,表2.1 在关系数据模型术语之间的对照表,一个表要成为关系,必须具有下列性质:列是同质的,即每一列中所有数据都是同一类型,来自同一个域每一列都有惟一的列名;列在表中的顺序无关紧要,即列的次序可以任意交换;表中任意两行不能完全相同;行在表中的顺序也无关紧要,即行的次序可以任意交换;每一个行与列的交叉点上必须是单值的(不能有一组值)。,属性的数据类型,绝大多数数据库系统都至少支持的几种数据类型:数值:可以进行算术运算的数据。字符:字符型数据也叫做字符串,它是由
4、任何字符或符号组成的文字串。例如姓名、地址、专业都是字符型属性。日期:日期型属性是按照特定格式存储的日期数据,可以对日期型数据进行特殊的数学运算。例如一个日期减去另一个日期就可以求出两个日期之间的天数。逻辑:逻辑型数据只能有真(T)或假(F)两个值。例如,婚否属性只有两种状态,就可以定义成逻辑型。,2.2 码(Key),码(关键字)码:属性或属性组合,其值能够惟一地标识一个元组。码细分为:超码、候选码和主码。超码能够惟一标识一个元组的属性或属性组,称为超码。候选码候选码是最小超码,它的任意真子集都不能成为超码。主码在一个关系中可能有多个候选码,从中选择一个用为主码。主码在关系中用来作为插入、删
5、除、检索元组的操作变量。,超码、候选码和主码三者之间是一种包含关系,主码是候选码的子集,候选码又是超码的子集,如图2.4所示。,举例,图2.3 职工关系的主码,图2.2 学号是候选码,2.3 关系数据库的联系,实现数据之间的联系的方法在关系模型中,利用“在一个关系中包含另一个关系的属性”的方法来实现数据之间的联系。外码是关系数据库实现数据之间联系的方法外码设F是关系R的一个或一组属性,但不是关系R的码。如果F与关系S的主码Ks相对应,则称F是基本关系R的外码关系R称为参照关系关系S称为被参照关系或目标关系,举例1,关系数据库由一组关系构成,关系之间的逻辑联系,通过表与表之间的公共属性(外码)实
6、现的。,“系编号”实现联系,举例2,举例3,例 学生关系、专业关系学生(学号,姓名,性别,专业号,年龄)专业(专业号,专业名),主码,主码,练习一,关系模式:购买情况(顾客号,产品号,购买时间,购买数量),若允许一个顾客在不同时间对同一个产品购买多次,则此关系模式的主码是 _。A顾客号 B产品号 C(顾客号,产品号)D(顾客号、产品号、购买时间),练习二,已知系(系编号,系名称,系主任,电话,地点)和学生(学号,姓名,性别,入学日期,专业,系编号)两个关系,系关系的主码是_,系关系的外码是_,学生关系的主码是_,学生关系的外码是_。答案 系编号 没有 学号 系编号,2.4 关系完整性规则,关系
7、完整性关系完整性是为保证数据库中数据的正确性和相容性,对关系模型提出的某种约束条件或规则。数据完整性由关系完整性规则来维护,关系完整性规则通常包括实体完整性和参照完整性,是关系模型必须满足的完整性约束条件。,实体完整性,实体:现实世界中客观存在并可以被区别的事物。比如“一个学生”、“一本书”、“一门课”等等。值得强调的是这里所说的“事物”不仅仅是看得见摸得着的“东西”,它也可以是虚拟的,不如说“老师与学校的关系”。实体完整性-主码非空主码的值必须是惟一的和确定的,才能有效地标识一个元组。主码不能取空值(NULL)。空值不是0,也不是空字符串,而是没有值。空值是不确定的值,所以,主码非空是关系的
8、一个完整性约束条件。,参照完整性-不含无效外码参照完整性是确保数据库中不含有无效外码。参照完整性定义是:外码必须是被参照关系主码的有效值或是“空值”。如果外码存在一个值,则这个值必须是被参照关系中主码的有效值。换句话说,外码可以没有值,但不允许是一个无效值。,参照完整性实例,练习三,外码的作用是_。A.不限制外码列的取值范围 B.限制引用列的取值范围 C.限制所引用的列的取值范围在外码列的已有值范围内 D.限制外码列的取值范围在所引用的列的已有值范围内 定义外码的用处主要是_。A.提高查询效率 B.维护数据的实体完整性 C.增加数据的安全性 D.维护数据的参照完整性,2.5 数据字典与系统目录
9、,数据字典包括数据库中表的结构信息、索引、用户、完整性约束、安全性约束。系统目录 系统目录类似于数据字典,它比数据字典更加详细地描述数据库中表的名称、每个表中列数、每一列的列名、列的数据类型、列的宽度、表的创建者、建表的时间、索引文件名称、索引的创建者、授权的用户、存取的许可权等信息。数据字典和系统目录是同义词。系统目录实际上是为系统建立的数据库,系统目录也是用表来存储的。因此,对系统目录的操作方法与其他表的操作方法相同。,实例,2.6 关系代数,关系代数关系代数是施加于关系上的一组集合代数运算,每个运算都以一个或多个关系作为运算对象,并生成另外一个关系作为该关系运算的结果。运算的三要素运算对
10、象(一元运算,二元运算)运算符运算结果,关系运算,关系代数运算符,关系代数运算符,关系代数运算符(续),关系代数运算符(续),关系代数的运算,关系代数的基本运算:选择、投影、并、差、积。其它的主要运算:交、自然连接、除运算。,1.选择(Select),选择运算的含义从关系中选择某些满足条件的元组构成一个新的关系。表示方法(R),R是一个关系,条件表达式中可使用比较运算符和逻辑运算符构成复杂的条件表达式。,选择运算实例,例如,要从学生关系中选择的元组写成:性别=女(学生),实例(续),有一保险单关系:保险单(保险单号,投保人姓名,被保险人姓名,险种,保险金额,保险费)例2.1 要找出险种为“意外
11、伤害”,并且保险费超过2000元的客户信息 关系代数表达式:险种=意外伤害保险费=2000(保险单)例2.2 找出投保人和被保险人是同一个人的客户。关系代数表达式:投保人姓名=被投保人姓名(保险单),2.投影(project),投影运算的含义从关系中选择某些属性列构成一个新的关系。投影的结果将消除重复元组。表示方法 A,B(R),其中A和B是属性名,R是一个关系。,投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行),投影运算实例,例2.3 列出学生的姓名和专业,其投影运算表达式应写成:姓名,专业(学生)或写成:2,4(学生),3.并(union),并运算的含义设关系R和S
12、的属性数目(n列)相同,且相应的属性取自同一个域,则关系R与S的并是由属于R或属于S的元组组成的新关系。其结果是具有n个属性的关系,且消除重复元组。表示方法RS,R,S,RS,并运算实例,例2.4 假设如图2.13所示,有学生和新生关系如下学生(学号,姓名,性别),新生(学号,姓名,性别),4.差(difference),差运算的含义设关系R和S具有相同数目的属性(n列),且相应的属性取自同一个域,则关系R与S的差是由属于R而不属于S的元组构成的新关系。表示方法R-S,差运算实例,例2.5 假设如图2.14所示,有学生和毕业生关系如下:学生(学号,姓名)毕业生(学号,姓名),5.笛卡儿积(Ca
13、rtesian Product),关系R与关系S的笛卡儿积记成:RS若R有m个属性,S有n个属性,则RS是一个具有(m+n)个属性的关系,且RS元组的前m列是R的一个元组,后n列是S的一个元组。如果R有i个元组,S有j个元组,则RS有(ij)个元组。,笛卡儿积实例,笛卡儿积执行过程,笛卡儿积的执行过程首先是学生关系的第一个元组与必修课的第一个元组组合,生成学习关系的第一个元组;接着是学生关系的第一个元组与必修课的第二个元组组合,生成学习关系的第二个元组;然后,学生关系的第一个元组与必修课的第三个元组组合,生成学习关系的第三个元组;依此类推,学生关系的第二个元组与必修课的3个元组组合,生成学习关
14、系的后面3个元组。,6.交(intersect),R和S具有相同数目属性(n列)相应的属性取自同一个域RS仍为具有n个属性的关系,由既属于R又属于S的元组组成的新关系。RS=R-(R-S)或RS=S-(S-R),交运算实例,7.连接(join),连接是二元关系运算,是对笛卡儿积的结果进行选择的运算,用符号 表示。连接运算就是从两个关系的笛卡尔积中选取属性间满足一定条件的元组。关系R与S的连接运算表示为=(RS)连接条件的一般形式 逻辑算符逻辑算符逻辑算符逻辑运算符:AND(),OR(),NOT()条件一般表示为:AiBj,连接(续),两类常用连接运算等值连接(equijoin)什么是等值连接为
15、“”的连接运算称为等值连接 即:连接条件是一个相等条件等值连接的含义从关系R与S的笛卡尔积中选取A、B属性值相等的那些元组,即等值连接为:R S,连接(续),自然连接(Natural join)自然连接是一种特殊的等值连接若等值连接的属性都是公共属性(或属性组),且结果关系中消除重复的属性列,则此等值连接称为自然连接两个关系中进行比较的分量必须是相同的属性组在结果中把重复的属性列去掉自然连接的含义R和S具有相同的属性组B 记为:R S,可以省略连接条件,连接(续),一般的连接操作是从行的角度进行运算。自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。自然连接的算法是先求笛卡儿积,再选
16、择,最后投影。,连接(续),例5关系R和关系S 如下所示:,连接(续),一般连接 R S的结果如下:,CE,连接(续),等值连接 R S 的结果如下:,连接(续),自然连接 R S的结果如下:,习题,习题设关系R、S分别为表(a)和(b),(1)求连接条件为CD的连接结果。(2)求等值连接C=D的连接结果。,(a),(b),习题,习题若R和S有相同的属性组C(如表(c)和(d)所示),求自然连接的结果。,(c),(d),外连接是连接的扩展,连接运算结果中只保留满足连接条件的元组,而不满足连接条件的元组将从结果中消失,外连接与连接的区别在于保留非匹配的元组,非匹配元组的空缺部分填以NULL。,关
17、系R与S进行连接操作,且连接条件为P,若连接的结果中除了在P上相匹配的元组外,还包含左关系R中不相匹配的元组,而其对应S的属性赋予NULL(空值),这种连接称为左外连接,符号*表示。,关系R与S进行连接操作,且连接条件为P,若连接的结果中除了在P上相匹配的元组外,还包含右关系S中不相匹配的元组,而其对应R的属性赋予NULL(空值)。这种连接称为右外连接,用符号*表示。,全外连接是左外连接和右外连接的综合应用,用符号*表示。,8.外连接(OUTER JOIN),例2.9有学生、课程和成绩个关系,如图所示。查询学生学习状况,包括没有选课的学生。,学生,课程,成绩,分析:要查询学生的学习状况,包括没
18、有选课的学生,可以用左外连接实现。用学生与成绩关系左外连接,且连接的条件是学生.学号成绩.学号,其关系代数表达式为:,左外连接结果,99001李楠99001C167,99001李楠99001C289,99001李楠99001C388,99002刘星99002C298,99002刘星99002C379,99003王海99003NULLNULL,99004张力99004NULLNULL,学生,成绩,课程,例2.10有学生、课程和成绩个关系,查询所开课程的选修状况,包括没有任何人选修的课程。,分析:要查询所开课程的选修状况,包括没有任何人选修的课程,可以用成绩关系与课程关系右外连接实现,连接的条件是
19、成绩.课号课程.课号,其关系代数表达式为:,右外连接结果,99001C167C1 数据库 60,99001C289C2 数学 80,99002C298C2 数学 80,99001C388C3 英语 72,99002C379C3 英语 72,NULLNULLNULLC4 法律 51,当然本例问题也可以用课程关系与成绩关系左外连接实现,只要将两个关系连接的左右位置换一下就可以了。,例2.11有教师和研究生两个关系,查询研究生和教师的情况,包括没有指派导师的研究生和没有指导研究生的教师。,研究生,教师,分析:要查询研究生和教师的情况,包括没有指派导师的研究生和没有指导研究生的教师,可以用全外连接实现
20、。用研究生与教师关系全外连接,连接的条件是研究生.教工号教师.教工号,其关系代数表达式为:,全外连接结果,99006郭天NULLNULLNULLNULL,99001李楠T001 T001 江海 男,99004张力T001 T001 江海 男,99002刘星T002T002 代宁 女,99003王海T002 T002 代宁 女,NULLNULLNULL T005 潘涛 男,NULLNULLNULL T008 田立 女,象集概念引入,表示记号 R,tR,tAi 设关系模式为R(A1,A2,An)它的一个关系设为R。tR表示t是R的一个元组 tAi则表示元组t中相应于属性Ai的一个分量象集Zx 给定
21、一个关系R(X,Z),X和Z为属性组。当tX=x时,x在R中的象集(Images Set)为:Zx=tZ|t R,tX=x 它表示R中属性组X上值为x的诸元组在Z上分量的集合。,象集举例,在关系R中,A可以取四个值a1,a2,a3,a4 a1的象集为(b1,c2),(b2,c3),(b2,c1)a2的象集为(b3,c7),(b2,c3)a3的象集为(b4,c6)a4的象集为(b6,c6),Zx=tZ|t R,tX=x,tX,tZ,给定关系R(X,Y)和S(Y,Z),其中X、Y、Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集,R与S的除运算得到一个新的关系P(X),P是R
22、中满足下列条件的元组在X属性列上的投影:元组X上的分量值X的象集YX,包含S在Y上投影的集合,记成:,九、除运算(DIVIDE),RS,(4)逐一考察每一个组,如果它的象集属性中包含目标数据集,则对应的结果属性值应属于该除法运算结果集。,关系除法分下列四步进行:,例15设有一个学生选课关系,找出同时选修“101”和“104”两门课程的学号。,分析:可以用关系代数的除运算来实现,被除数是选课关系,除数是“C101”和“C104”两元组构成的关系,设结果关系为,记成:,S1,S2,(1)将被除关系的属性分为象集属性和结果属性两部分,与除关系相同的属性属于象集属性,不相同的属性属于结果属性。,本例中
23、的象集属性为:课号,结果属性为:学号,(2)在除关系中,对与被除关系相同的的属性(象集属性)进行投影,得到目标数据集。,本例中目标数据集为C101,C104,(3)将被除关系分组,分组原则是:结果属性值一样的元组分为一组。,则本例分为3组:S1-C101,C104,C108,S2-C101,C104,S3-C101,C108,则例中结果为S1,S2。,象集属性,结果属性,除(续),2.7 关系运算的组合及用关系代数表示查询,例16查询所有女同学的信息。,关系代数表达式是:,关系代数中基本表达式是数据库中的一个表或一个常量关系。基本表达式与关系运算符的有效组合称为关系代数表达式。,有学生关系和系
24、关系如下:,学生关系,系关系,性别女(学生),例17查询所有学生的姓名和专业。,关系代数表达式是:,姓名,专业(学生),例18在学生关系中插入一个元组。,关系代数表达式是:,学生992311,王光明,男,会计学,例19列出所有女同学的姓名和专业。,关系代数表达式是:,姓名,专业(学生),例20列出所有女同学的姓名和所在系的地址。,由于关系代数运算的对象和结果都是关系,可以将一个关系代数表达式运算的结果作为另一个关系代数表达式运算的对象。所以,关系代数表达式有限次复合形式的式子也是关系代数表达式。,关系代数表达式是:,姓名,地址(性别女(学生系),习题,1.设有如下图所示的关系R、W和D,计算:
25、(1)R1=Y,T(R)(2)R2=p5T=e(R)(3)R3=R W(4)R4=2,1,6(3=5(RD)(5)R5=RD,习题,2.设有三个关系S(学号,姓名,年龄,性别,籍贯),C(课程号,课程名,老师姓名,办公室),SC(学号,课程号,成绩)。将下列关系代数表达式用汉语表示出来。(1)2,6,7(籍贯=上海(S SC)(2)2,9,8(S SC 课程名=操作系统(C)(3)2,3(S(1,2(SC)1(C)解:(1)检索籍贯为上海的学生的姓名、学号和选修的课程号。(2)检索选修操作的学生姓名、课程号和成绩。(3)检索选修了全部课程的学生姓名和年龄。,3.现有关系数据如下:试用关系代数表
26、达式实现下列(15)小题 学生(学号,姓名,性别,专业)课程(课程号,课程名称,学分)成绩(学号,课程号,分数),所有学生成绩获得满分(100分)的课程号、课程名称。,检索至少有一门课程的分数达到95分以上的学生信息,包括学号、姓名和专业。,检索没有任何一门课程成绩在80分以下的学生的信息,包括学号、姓名和专业。,检索“数据库原理”课程分数高于90分的所有学生的学号、姓名、专业和分数。,检索“国际贸易”专业选修“数据库原理”课程的学号和姓名。,课程号,课程名称(课程(分数100(成绩),学号,姓名,专业(学生 学号(分数95(成绩),学号,姓名,专业(学生)学号,姓名,专业(学生 学号(分数80(成绩),学号,姓名,专业,分数(学生(分数90(成绩(课程名称数据库原理(课程),或学号,姓名,专业,分数(分数90课程名称数据库原理(学生成绩课程),学号,姓名(专业国际贸易课程名称数据库原理(学生成绩课程),习题,小结,关系代数运算关系代数运算并、差、交、笛卡尔积、投影、选择、连接、除基本运算(-)并、差、笛卡尔积、投影、选择交、连接、除()可以用5种基本运算来表达 引进它们并不增加语言的能力,但可以简化表达,休息一会儿。,追求,