资源描述
,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,第二章 第一讲,关系数据库设计理论,1,本章要点,1,、关系模型的概念与分类,2,、关系数据结构及定义,3,、关系代数的基本运算,4,、关系完整性,5,、关系数据库设计与设计规范,2,2.1,关系模型,2.1.1,关系的一些术语,(1),关系:,在关系模型中,一个关系就是一张二维表。,(2),属性:,表中的列称为属性,每一个列有一个属性名。,(3),元组:,表中的行称为元组。,(4),域:,具有相同数据类型的值的集合称为域,(Domain),,域是属性的取值范围。,(5),候选码:,如果关系中的某个属性或属性组能唯一地标识一个元组,称该属性或属性组为,候选码。,(6),主码,(,主键,),:,若一个关系中有多个候选码,则选定其中一个为主码,(,主键,),。主码的属性称为主属性。,(7),外码,(,外键,),:,设,F,是基本关系,R,的一个或一组属性,但不是,R,的候选码,如果,F,与基本关系,S,的主码,Ks,相对应,则称,F,为基本关系,R,的外码。,3,域,(,Domain,),定义:一组具有,相同数据类型,的值的,集合,。,例如,假设规定人的年龄在,1,至,200,之间,那么年龄对应的域就是,1,至,200,所有整数的集合;,如果用,1,表示性别为男,,0,为女,则性别对应的域就是,0,1,。,4,2.1.2,关系模型,关系模型是用,二维表格,结构来表示实体及实体间联系的模型。,关系模型由关系数据结构、关系操作集合和完整性规则三部分组成。,关系模型的特点:,(1),关系必须规范化,指关系模型中的每一个关系模式都必须满足一定的要求;,(2),模型概念单一;,(3),集合操作,操作对象和结果都是元组的集合,即关系。,5,关系模型,关系模型包括,数据结构、关系操作和完整性,。,数据结构,关系模型的数据模型非常单一,实体和实体间联系均使用关系表示。可以将关系理解为一个二维表格。,6,关系操作,关系模型是基于关系代数数学基础的模型,关系运算的语言分为两类:,关系代数语言:把关系当作集合,常用的关系操作有交、并、差、除法、选择、投影和连接等。,关系演算语言:使用谓词来表达查询的要求。若谓词的对象是元组变量,称为元组关系演算;若为域变量,称为域关系演算。,SQL,语言:结合了关系代数和关系演算的优点,是关系数据库的标准语言。,7,完整性,1.,实体完整性,规则:若属性,A,为基本关系,R,的主属性,则属性,A,不能取空值。,例如,学生关系中,如果学号是主键,则所有的元组(即学生的记录)中学号属性不能为空,因为每个学生必有学号。,1982,年,12,月,4,日,女,王珊,010210,1982,年,3,月,19,日,1982,年,6,月,9,日,出生日期,李婷,王南,姓名,备注,女,010208,男,010205,性别,学号,学生关系(表),主键为:学号,王珊的记录信息是关系的一个元组。,8,2.,参照完整性,外码(,Foreign Key,):设,F,是关系,R1,的一组属性,但不是,R1,的键;如果,F,与关系,R2,的主键,P,对应,则称,F,是关系,R1,的外键。并称关系,R1,为参照关系,(,Referencing Relation,),,关系,R2,为被参照关系,(,Referenced Relation,),或,目标关系,(,Target Relation,),。,R1,和,R2,也可能是同一个关系。,例如,现在有两个关系,分别表示学生信息和学院信息:,R1(,学号,姓名,性别,所在学院编号,),R2(,学院编号,学院名称,学院位置,),参见下页的图形:,2.2,关系模型,9,学号,姓名,性别,所在学院编号,010205,王南,男,001,010208,李婷,女,001,R1,:学生信息关系(表),学院编号,学院名称,学院位置,001,材冶学院,采矿馆,002,信息学院,主楼,R2,:学院信息关系(表),“,学号,”,是,R1,的主键。,“,学院编号,”,是,R2,的主键。,R1,中的,“,所在学院编号,”,要参照,R2,的,“,学院编号,”,取值;二者定义在同一个域上。,“,所在学院编号,”,是,R1,的外键。,R1,为参照关系;,R2,为被参照关系。,2.2,关系模型,10,关系数据库中,一个关系可以看作是一个,_,思考题:,一个关系中某个属性的值能唯一标识关系中的每一个元组,该属性称为,_,关系模型包括三部分:,_,_,_,11,2.2,关系数据结构及形式化表示,在关系模型中,无论是实体还是实体之间的联系都由单一的结构类型关系来表示。,2.2.1,关系数据结构,(1),笛卡儿积,(Cartesian Product),设有一组域,D,1,,,D,2,,,,,D,n,,这些域可以部分或者全部相同。域,D,1,,,D,2,,,,,D,n,的笛卡儿积定义为如下集合:,D,1,D,2,D,n,=(d,1,d,2,d,n,)|d,i,D,i,,,i=1,,,2,,,,,n,其中每一个元素,(d,1,d,2,d,n,),称为一个,n,元组,(,或简称元组,),,元素中的每一个值称为一个分量。,人们通常感兴趣的是笛卡儿积的某些子集,笛卡儿积的子集就是一个关系。,12,笛卡儿积可表示为一个二维表,表中每行对应一个元组,每列对应一个域。,例如,给出两个域:,D1=Student=,王南,李婷,,表示学生集合,D2=Major=,理学院,信息学院,,表示学院集合,D1D2=(,王南,理学院,),(,王南,信息学院,),(,李婷,理学院,),(,李婷,信息学院,),,对应二维表为:,D1D2,基数为,4,。,D1D2,共,4,个元组。,Student,Major,王南,理学院,王南,信息学院,李婷,理学院,李婷,信息学院,13,(2),关系,(Relation),笛卡儿积,D,1,D,2,D,n,的子集,R,称为在域,D,1,,,D,2,,,,,D,n,上的一个关系,(Relation),,通常表示为:,R(D,1,,,D,2,,,,,D,n,),其中,,R,表示关系的名称,,n,称为关系,R,的元数或度数,(Degree),,而关系,R,中所含有的元组个数称为,R,的基数,(Cardinal Number),。,在关系模型中,对关系作了下列规范性限制:,关系中不允许出现相同的元组;,不考虑元组之间的顺序,即没有元组次序的限制;,关系中每一个属性值都是不可分解的;,关系中属性顺序可以任意交换;,同一属性下的各个属性的取值必须来自同一个域,是同一类型的数据;,关系中各个属性必须有不同的名字。,14,2.2.2,关系模式,关系模式是对,关系的描述,。关系是元组的集合,也就是笛卡儿积的一个子集。因此关系模式必须指出这个,元组集合的结构,,即它由哪些属性构成,这些属性来自哪些域,以及属性和域之间的映像关系。,其次,一个关系通常是由赋予它的元组语义来确定的,元组语义实质上是一个,n,目谓词,(n,是属性集中属性的个数,),。凡使该,n,目谓词为真的笛卡儿积中的元素,(,或者说凡符合元组语义的元素,),的全体就构成了该关系模式的关系。,关系的描述称为,关系模式,(relation schema),。它可以形式化地表示为:,R(U,,,D,,,Dom,,,F),其中,R,为关系名,,U,为组成关系的属性名集合,,D,为属性组,U,中属性所来自的域,,Dom,为属性向域的映像集合,,F,为属性间数据依赖关系的集合。,15,2.3,关系代数,1.,运算对象,关系,将整个关系作为运算单位(操作数),用关系代数表达式表示的运算方法。,2.,关系操作分类,传统的集合操作(并、差、交、笛卡尔积),扩充的关系操作(投影、选择、连接、除法),16,传统的集合运算,并,(Union),关系,R,和,S,的并记作:,RS=t|tRtS,,即属于,R,或,S,的所有元组。,R,和,S,应该有相同的目,即属性个数相同,类型相同,。,A,B,C,a1,b1,c1,a1,b2,c2,a2,b2,c1,R,关系,A,B,C,a1,b2,c2,a2,b2,c2,a2,b2,c1,S,关系,RS,A,B,C,a1,b1,c1,a1,b2,c2,a2,b2,C1,a2,b2,c2,2.3,关系代数,17,2.3,关系代数,差,(Difference),关系,R,和,S,的差记作:,R-S=t|tRt!S,,即属于,R,且不属于,S,的所有元组。,R,和,S,应该有相同的目,即属性个数相同,类型相同。,A,B,C,a1,b1,c1,a1,b2,c2,a2,b2,c1,R,关系,A,B,C,a1,b2,c2,a2,b2,c2,a2,b2,c1,S,关系,R-S,A,B,C,a1,b1,c1,18,交,(Intersection),关系,R,和,S,的交记作:,RS=t|tRt S,,即属于,R,且属于,S,的所有元组。,R,和,S,应该有相同的目,即属性个数相同,类型相同。,A,B,C,a1,b1,c1,a1,b2,c2,a2,b2,c1,R,关系,A,B,C,a1,b2,c2,a2,b2,c2,a2,b2,c1,S,关系,RS,A,B,C,a1,b2,C2,a2,b2,c1,2.3,关系代数,19,广义笛卡儿积,(Extended Cartesian Product),n,目关系,R,和,m,目,S,的广义笛卡儿积为,n+m,目关系,记作,RS,。其中,前,n,个属性为,R,的属性集,后,m,个属性为,S,的属性集,,RS,中的每个元组为每一个,R,元组与所有,S,元组的组合。,若,R,有,K1,个元组,,S,有,K2,个元组,则,RS,共有,K1K2,个元组。,A,B,C,a1,b1,c1,a1,b2,c2,R,关系,A,B,C,a1,b2,c2,a2,b2,c2,a2,b2,c1,S,关系,RS,A,B,C,A,B,C,a1,b1,c1,a1,b2,c2,a1,b1,c1,a2,b2,c2,a1,b1,c1,a2,b2,c1,a1,b2,c2,a1,b2,c2,a1,b2,c2,a2,b2,c2,a1,b2,c2,a2,b2,c1,2.3,关系代数,20,扩充的关系运算,选择,(Selection),在关系,R,中选择满足条件的元组,记作:,F,(R)=t|tRF(t)=TRUE,,,F,可以是逻辑运算符,(,如,AND,,,OR,等,),和关系运算符,(,=,等,),等的组合。,选择运算就是从关系,R,中选取使逻辑表达式,F,为,TRUE,的元组。,SNO,SNAME,SDEP,010203,王南,机械学院,010204,李婷,信息学院,010205,张力,信息学院,Student,关系,SDEP=,信息学院,(Student),SNO,SNAME,SDEP,010204,李婷,信息学院,010205,张力,信息学院,2.3,关系代数,21,SNO,(,学号,),SNAME,(,姓名,),SGEN,(,性别,),SAGE,(,年龄,),SDEP,(,学院,),010203,王南,男,18,机械学院,010204,李婷,女,19,信息学院,010205,张力,男,22,信息学院,例,:Student,关系,SGEN=,男,AND SAGE20,(Student),SNO,(,学号,),SNAME,(,姓名,),SGEN,(,性别,),SAGE,(,年龄,),SDEP,(,学院,),010203,王南,男,18,机械学院,2.3,关系代数,22,专门的关系运算,投影,(Projection),从关系,R,中选择若干属性列,组成新的元组,记作:,A,(R)tA|tR,,其中,A,为,R,中的属性列。,投影操作是从,列,的角度参加的运算;如果取消某些属性列后,出现重复的行,则,去掉这些完全相同的行,。,SNO,(,学号,),SNAME(,姓名,),SDEP,(,学院,),010203,王南,机械学院,010204,李婷,信息学院,010205,张力,信息学院,Student,关系,SNO,SNAME,(Student),SNO,(,学号,),SNAME(,姓名,),010203,王南,010204,李婷,010205,张力,2.3,关系代数,23,A,B,C,10,20,30,40,1,1,1,2,A,C,1,1,1,2,=,A,C,1,1,2,则,:,A,C,(R),例,:,若关系,R,24,连接,(Join),从关系,R,和关系,S,的,笛卡尔积,中选择属性间满足一定条件的元组,记作:,当,为,=,时,称为等值连接。,见下页的等值连接例子。,R,A,B,S,2.3,关系代数,25,A,B,M,a1,b1,3,a1,b2,5,a2,b2,7,R,关系,RS,A,R.B,M,S.B,N,a1,b1,3,b2,6,a1,b1,3,b3,8,a1,b2,5,b2,6,a1,b2,5,b3,8,a2,b2,7,b2,6,a2,b2,7,b3,8,例:求,R,R.B=S.B,S,B,N,b2,6,b3,8,S,关系,R,R.B=S.B,S,A,R.B,M,S.B,N,a1,b2,5,b2,6,a2,b2,7,b2,6,取,R.B=S.B,的所有元组,2.3,关系代数,26,自然连接,(Natural Join),从两个关系的笛卡儿积中选择出,公共属性值相等,的元组,并在结果中,去掉重复的属性列,,记作:,自然连接是一种,特殊,的等值连接,只有两个关系有相同属性组时才可以参加。,R,S,2.3,关系代数,27,A,B,C,a,1,a,b,1,b,b,2,b,R,关系,RS,A,R.B,R.C,S.B,S.C,D,a,1,a,1,a,e,a,1,a,2,b,f,b,1,b,1,a,e,b,1,b,2,b,f,b,2,b,1,a,e,b,2,b,2,b,f,例:求,R,S,S,关系,B,C,D,1,a,e,2,b,f,R,S,取,R.B=S.B,且,R.C=R.C,的所有元组,A,R.B,R.C,S.B,S.C,D,a,1,a,1,a,e,b,2,b,2,b,f,2.3,关系代数,A,B,C,D,a,1,a,e,b,2,b,f,去掉重复属性,28,除法,(Division),给定关系,R(X,Y),和,S(Y,Z),,其中,X,Y,Z,均为属性组,,R,和,S,的属性组,Y,属于同一个域。,RS,得到一个新关系,P(X),,,P,是,R,中满足下列条件的元组在,X,属性列上的投影:元组在,X,上分量值,x,的象集包含,S,在,Y,上投影的集合。,象集:,R(A,B,C),为关系,,A,、,B,、,C,为属性组,,a1,在,R,中的象集为,R,中属性组,A,上值为,a1,的各元组在,B,、,C,上分量的集合。,2.3,关系代数,29,A,B,C,a1,b1,c2,a3,b4,c6,a1,b2,c3,a2,b2,c1,a1,b2,c1,R,关系,S,关系,B,C,b1,c2,b2,c1,b2,c3,1.,根据除法规则可知,,RS,的属性列为,R,的属性列,(A,B,C),中去掉,S,中相同的,(B,C),,故,RS,的属性列为,A,。,2.A,可能的取值为,a1,a2,a3,3.R,中,a1,的象集为,b1,c2,b2,c3,b2,c1;,R,中,a2,的象集为,b2,c1;,R,中,a3,的象集为,b4,c6;,4.S,在,(B,C),的投影为,b1,c2,b2,c1,b2,c3;,5.,只有,a1,的象集包含了,S,在,(B,C),的投影,所以,RS=a1,A,a1,R,S,2.3,关系代数,30,集合运算,并、差、交是集合的传统运算形式,进行集合运算的关系,R,与,S,必须具有相同的关系模式,即,R,和,S,必须具有相同的属性集。,1.,集合的并运算,设有关系,R,、,S(R,、,S,具有相同的关系模式,),,二者的“并”运算定义为:,RS=t|tRt S,式中“”为并运算符,,t,为元组变量,结果,RS,为一个新的与,R,、,S,同类的关系,该关系是由属于,R,和,S,的元组构成的集合。,例如,合并两个相同结构的数据表,就是两个关系的并集。,31,2.,集合的差运算,设有关系,R,、,S(R,、,S,具有相同的关系模式,),,二者的“差”运算定义为:,R-S=t|t Rt S,式中“,-”,为差运算符,,t,为元组变量,结果,R-S,为一个新的与,R,、,S,同类的关系,该关系是由属于,R,但不属于,S,的元组构成的集合,即在,R,中减去与,S,中元组相同的那些元组。,3.,集合的交运算,设有关系,R,、,S(R,、,S,具有相同的关系模式,),,二者的“交”运算定义为:,RS=t|t R t S,式中“”为交运算符,结果,RS,为一个新的与,R,、,S,同类的关系,该关系是由属于,R,而且属于,S,的元组构成的集合,即两者所有的相同的那些元组的集合。,32,本章内容总结,作业:,1.,解释下列术语:,关系模型 关系模式 关系实例 属性 域 元组 主码,2.,传统的集合运算包括哪些?专门的关系运算有哪些?,3.,为什么关系中的元组没有先后顺序?,4.,为什么关系中不允许有重复的元组?,5.,关系与普通的表格、文件有什么区别?,6.,广义笛卡儿积、等值联接、自然联接三者之间有什么区别?,7.,设有关系,R,、,S,如下:,求,RS,、,R-S,、,RS,、,RS,。,8.,关系模型中包括哪三类完整性约束?,9.,简述,1NF,和,2NF,的主要内容。,10.,简述关系规范化的含义。,33,
展开阅读全文