《第2章关系模型优秀课件.ppt》由会员分享,可在线阅读,更多相关《第2章关系模型优秀课件.ppt(54页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第2章关系模型第1页,本讲稿共54页2.1 关系模型概述2.1.1 关系模型的数据结构关系模型采用关系关系(Relation)作为数据结构,直观地讲,关系就是简单的表(Table)。一个表一般由表名、表头和数据三部分构成。第2页,本讲稿共54页学生名单学生名单学号 姓名性别年龄所在系20000121王林男19计算机20000122张大民男18管理20000123顾芳女19管理.数据数据表头表头表名表名图图2.12.1表的构成表的构成 第3页,本讲稿共54页定义定义定义定义2.12.1 域(域(DomainDomain)是一组具有相同数据类型的值的集合。)是一组具有相同数据类型的值的集合。例如,
2、整数、实数都是域。域可以被理解为程序设计语言例如,整数、实数都是域。域可以被理解为程序设计语言中的数据类型,如中的数据类型,如C C语言中的语言中的intint,floatfloat等。等。定义定义定义定义2.2 2.2 给定一组域给定一组域D D1 1,D D2 2,D Dn n,D D1 1,D D2 2,D Dn n的笛卡的笛卡尔积尔积(Cartesian Product)(Cartesian Product)为:为:D D1 1 D 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 其中,每一个元素其中,每一个元素
3、(d d1 1,d d2 2,d dn n)叫作一个叫作一个n n元组元组元组元组(N-Tuple)(N-Tuple)或简称元组或简称元组(Tuple)(Tuple)。元素中的每一个值。元素中的每一个值d di i叫作一个叫作一个分分分分量量量量(Component)Component)。第4页,本讲稿共54页例如,D1=王林,顾芳,D2=男,女,D3=计算机,管理,则:D1D2D3(王林,男,计算机),(王林,男,管理),(王林,女,计算机),(王林,女,管理),(顾芳,男,计算机),(顾芳,男,管理),(顾芳,女,计算机),(顾芳,女,管理)。第5页,本讲稿共54页D1D2D3王林男计算机
4、王林男管理王林女计算机王林女管理顾芳男计算机顾芳男管理顾芳女计算机顾芳女管理D D1 1,D,D2 2和和D D3 3的笛卡尔积的笛卡尔积第6页,本讲稿共54页定义定义2.3 D1D2Dn的一个有限子集叫 作在域D1,D2,Dn上的关系关系。例如,D1是字符串集合,D2=男,女,D3是整数的集合,图2.1的学生名单就是一个关系,它是笛卡尔积D1D1D2D3D1的一个子集。第7页,本讲稿共54页属性属性(Attribute):域关系模式关系模式(Relation Schema):R(A1,A2,An)关系实例关系实例(Relation Instance):关系的内容 第8页,本讲稿共54页一个关
5、系由关系名、关系模式和关系实例组成,分别对应于表名、表头和表中的数据。关系名和关系模式是相对变化的,关系实例会随时间而发生变化。图2.1的学生名单关系的关系模式为:学生(学号,姓名,性别,年龄,所在系)学生(学号,姓名,性别,年龄,所在系)第9页,本讲稿共54页由于关系是一个集合,所以,关系的元组不能出现重复,即一定存在属性组Ai1,Ai2,Aim(1mn),每个元组在这组属性上的取值不同于任何其它的元组。如果属性组Ai1,Ai2,Aim(1mn)使得每个元组在其上的取值具有唯一性,并且,去掉任何一个属性后,元组在其上的取值不再具有唯一性,则称该属性组为候选码候选码(Candidate Key
6、)。若一个关系有多个候选码,则选定其中一个为主码主码(Primary Key)。第10页,本讲稿共54页包含在某个候选码中的属性叫做主属性。不包含在任何侯选码中的属性称为非主属性最简单的情况下,候选码只包含一个属性。在最极端的情况下,关系模式的所有属性组是这个关系模式的候选码,称为全码(All-Key)。第11页,本讲稿共54页列是同质的(列是同质的(HomogeneousHomogeneous),即所有的行在同一个列),即所有的行在同一个列上的取值必须是同一类型的数据,来自同一个域。例如,图上的取值必须是同一类型的数据,来自同一个域。例如,图2.12.1中每个元组在性别列上的取值只能来自域中
7、每个元组在性别列上的取值只能来自域 男,女男,女。不同的列可以出自同一个域,但是,每个列要有唯一不同的列可以出自同一个域,但是,每个列要有唯一的名字。例如,图的名字。例如,图2.12.1的学号列、姓名列都来自字符串域。的学号列、姓名列都来自字符串域。行的次序可以任意交换,交换表中任何两行的位置,得到是同行的次序可以任意交换,交换表中任何两行的位置,得到是同一个表。因为,关系是一个集合,元组是关系的元素,集合中的元素无一个表。因为,关系是一个集合,元组是关系的元素,集合中的元素无次序之分。次序之分。第12页,本讲稿共54页列的次序可以任意交换,交换表中任何两列的位置,得列的次序可以任意交换,交换
8、表中任何两列的位置,得到的仍然是同一个表。这是对关系定义的一个扩展,一般情况到的仍然是同一个表。这是对关系定义的一个扩展,一般情况下,(下,(d d1 1,d d2 2,d di i,d di+1i+1,d dn n)(d d1 1,d d2 2,d di+1i+1,d di i,d dn n),因为关系是笛卡尔积的子集,而构),因为关系是笛卡尔积的子集,而构成笛卡尔积的域的次序是不能交换的。但是,如果我们成笛卡尔积的域的次序是不能交换的。但是,如果我们约定约定d di i(11i i n n)是行在列)是行在列A Ai i上的分量,则,(上的分量,则,(d d1 1,d d2 2,d di
9、i,d di+1i+1,d dn n)和)和d d1 1,d d2 2,d di+1i+1,d di i,d dn n)代)代表的是同一个行。表的是同一个行。任意两行不能完全相同,因为,表中的一行代表关系中任意两行不能完全相同,因为,表中的一行代表关系中的一个元组,但是,任何一个元组在主码上的取值是不同的。的一个元组,但是,任何一个元组在主码上的取值是不同的。每一行在任何一列上的取值必须是单一值,不能是多每一行在任何一列上的取值必须是单一值,不能是多个值;必须是原子值,不能事复合值。个值;必须是原子值,不能事复合值。第13页,本讲稿共54页编号姓名职称工 资扣 除实发基本工龄职务房租水电860
10、51陈 平讲 师120550801601201055第14页,本讲稿共54页姓名电话号码王林8636xxxx(H),8797xxxx(O),139xxxxx001张大民133xxxxx125,138xxxxx878第15页,本讲稿共54页 姓名课程数学物理化学王林859092张大民977885顾芳868996姜凡789367葛波897791第16页,本讲稿共54页姓 名课 程成 绩王林数学85王林物理90王林化学92张大民数学97张大民物理78张大民化学85顾芳数学86顾芳物理89顾芳化学96姜凡数学78姜凡物理93第17页,本讲稿共54页2.1.2 关系模型的数据操作 建表:给出表名,画出表
11、头,进行一些修饰。填表:向表中填入一行或多行数据。修改:改正表中的某些数据。删除:去掉一个行或多行。查询:查找满足某个条件的行。销毁表:表不再具有使用价值后,可以废除表。第18页,本讲稿共54页2.1.3 关系模型的完整性约束 关系模型的完整性约束是一组约束条件,它们规定关系模型的完整性约束是一组约束条件,它们规定了关系实例中允许出现的元组和不允许出现的元组。了关系实例中允许出现的元组和不允许出现的元组。关系模型有三类完整性约束:关系模型有三类完整性约束:1 1、实体完整性、实体完整性2 2、参照完整性、参照完整性3 3、用户定义的完整性、用户定义的完整性其中实体完整性和参照完整性是关系模型必
12、须满其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,足的完整性约束条件,被称作是关系的两个不变性,应该由关系数据库管理系统自动支持。应该由关系数据库管理系统自动支持。第19页,本讲稿共54页1、实体完整性(Entity Integrity)对任何一个关系对任何一个关系R R,如果,如果A A是主码中的某个属性,则是主码中的某个属性,则关系关系R R的任何一个元组在属性的任何一个元组在属性A A上不能取空值(上不能取空值(NULLNULL)。)。所谓空值就是所谓空值就是“不知道不知道”或或“无意义无意义”的值。的值。例如,关系例如,关系StudentStu
13、dent的主码是学号,任何一个元组在学的主码是学号,任何一个元组在学号上的值不能取空值,即每个学生必须有一个学号。号上的值不能取空值,即每个学生必须有一个学号。实体完整性的意义在于,如果主码中的某个属性取实体完整性的意义在于,如果主码中的某个属性取空值,就说明存在某个不可标识的实体,即存在不可区分空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与主码的意义相矛盾,因此称为实体完整性。的实体,这与主码的意义相矛盾,因此称为实体完整性。第20页,本讲稿共54页2、参照完整性(Referential Integrity)假设关系R有属性组Ai1,Ai2,Aim与关系S的属性组Bi1,Bi
14、2,Bim相对应,Aij和Bij来自同一个域,1im。如果Bi1,Bi2,Bim是关系S的主码,Ai1,Ai2,Aim不是关系R的码,则Ai1,Ai2,Aim叫做关系R的外外码码(Foreign Key)。参照完整性要求,关系R的任何一个元组在外码上的取值要么是空值,要么是关系S中某个元组的主码的值。参照完整性保证不引用不存在的实体。第21页,本讲稿共54页 例如,假设有一个关系例如,假设有一个关系Department(SdeptDepartment(Sdept,Dmanager)Dmanager),关系中存储了学校中每个系的名称和系主任的名字,其,关系中存储了学校中每个系的名称和系主任的名字
15、,其中,属性中,属性SdeptSdept是主码,属性是主码,属性SdeptSdept既出现在关系既出现在关系DepartmentDepartment中,又出现在关系中,又出现在关系StudentStudent中。中。对于关系对于关系StudentStudent,属性,属性SdeptSdept就是一个外码。任何一就是一个外码。任何一个学生在个学生在SdeptSdept上的取值要么是空值,表示目前尚不清楚该上的取值要么是空值,表示目前尚不清楚该学生所在的系,要么出现在关系学生所在的系,要么出现在关系DepartmentDepartment的一个关系实的一个关系实例中,即必须是一个已经存在的系而不允
16、许是一个不存在的例中,即必须是一个已经存在的系而不允许是一个不存在的系。系。第22页,本讲稿共54页3、用户定义的完整性(User-Defined Integrity)任何关系数据库管理系统都应该支持实体完整性和参照完整性。除此之外,不同的应用系统根据其应用环境的不同,往往还需要一些特殊的约束条件,用户定义的完整性就是针对某一具体应用环境的约束条件。它反映某一具体应用所涉及的数据必须满足的语义要求。例如某个属性必须取唯一值、某个非主属性也不能取空值、某个属性的取值范围在0100之间等。关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。第23
17、页,本讲稿共54页2.2 关系代数关系代数是一种抽象的关系查询语言,通过对关系的运算来表达对关系的查询。任何一种运算都是将一定的运算符作用于一定的运算对象上,得到预期的运算结果。所以运算对象、运算符、运算结果是运算的三大要素。关系是元组的集合。关系代数就是在关系上定义了一些运算,这些运算的结果仍然是关系。关系代数用到的运算符包括四类:集合运算符、专门的关系运算符、算术比较符和逻辑运算符。第24页,本讲稿共54页2.2 关系代数关系代数包括:4个集合运算:交(Intersect)、并(Union)、差(Except)和笛卡尔积(Cartesian Product)4个关系运算:选择(Select
18、)、投影(Project)、连接(Join)和除(Divide);辅助这些运算的比较运算符和逻辑运算符。第25页,本讲稿共54页2.2 关系代数 关系运算符(a)运 算 符 含 义 运 算 符含 义 集 合运算符-并差交广义笛卡尔积 比 较运算符 大于大于等于小于小于等于等于不等于 第26页,本讲稿共54页2.2 关系代数 关系运算符(b)运 算 符 含 义 运 算 符含 义 专门的关 系运算符 选择投影连接除 逻 辑运算符 非与或 第27页,本讲稿共54页2.2 关系代数2.2.1 传统的集合运算1、并并运算是一个二元运算符。参与运算的有两个关系,这两个关系的属性个数必须相同,并且,相同位置
19、上的属性必须来自同一个域。并运算的结果是一个新的关系,其关系模式同原来的关系,关系实例是两个关系的关系实例的并。假设关系R和S可以进行并运算,R和S的并运算的形式化定义如下:RS=t|t Rt S 第28页,本讲稿共54页2.2 关系代数2.2.1 传统的集合运算A BCa1b1c1a1b2c2a2b2c1A BCa1b2c2a1b3c2a2b2c1A BCa1b2c2a1b3c2a1b1c1a2b2c1RSR S第29页,本讲稿共54页2.2 关系代数2.2.1 传统的集合运算2、交交运算类似于并运算,只是新关系的关系实例是两个关系的关系实例的交。两个关系R和S的交运算的形式化定义为:RS=
20、t|t Rt S 第30页,本讲稿共54页2.2 关系代数2.2.1 传统的集合运算A BCa1b1c1a1b2c2a2b2c1A BCa1b2c2a1b3c2a2b2c1A BCa1b2c2a2b2c1RSR S第31页,本讲稿共54页2.2 关系代数2.2.1 传统的集合运算3、差差运算类似于并运算,新关系的关系实例是两个关系的关系实例的差。两个关系R和S的差运算的形式化定义为:R-S=t|tRtS 第32页,本讲稿共54页2.2 关系代数2.2.1 传统的集合运算A BCa1b1c1a1b2c2a2b2c1A BCa1b2c2a1b3c2a2b2c1A BCa1b1c1RSR S第33页
21、,本讲稿共54页2.2 关系代数2.2.1 传统的集合运算4、笛卡尔积两个分别具有n个属性和m个属性的关系R和S的笛卡尔积是一个具有(n+m)个属性的关系。新关系的关系模式由关系R和关系S连接而成,关系实例中的元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的笛卡尔积有k1k2个元组,关系R和关系S的笛卡尔积记作:RS=|tr R tsS 第34页,本讲稿共54页2.2 关系代数2.2.1 传统的集合运算A BCa1b1c1a1b2c2a2b2c1A BCa1b2c2a1b3c2a2b2c1RSR SABCABCa1b1c1a1b2c
22、2a1b1c1a1b3c2a1b1c1a2b2c1a1b2c2a1b2c2a1b2c2a1b3c2 第35页,本讲稿共54页2.2 关系代数2.2.2 专门的关系运算1、选择选择是一个一元运算符,选择的结果产生了一个新关系,新关系的关系模式与被操作的关系的关系模式相同,关系实例是被操作关系中满足条件的元组,是被操作关系的关系实例的一个子集。对关系R的选择操作记作:F(R)=t|tRF(t)=真其中F表示选择条件,它是一个逻辑表达式,取逻辑值“真”或“假”。第36页,本讲稿共54页2.2 关系代数2.2.2 专门的关系运算逻辑表达式F的基本形式为:X1Y1 X2Y2 其中表示比较运算符,它可以是
23、,或。X1,Y1等是属性名,或为常量,或为简单函数;属性名也可以用它在关系模式中的位置来代替;表示逻辑运算符,它可以是,或;表示任选项,即 中的部分可以要也可以不要;表示上述格式可以重复下去。选择运算是从行的角度进行的运算。第37页,本讲稿共54页2.2 关系代数2.2.2 专门的关系运算A BCa1b1c1a1b2c2a2b2c1A BCa1b1c1RB=b1(R)第38页,本讲稿共54页2.2 关系代数2.2.2 专门的关系运算2、投影投影是指从指定的关系中保留一些列,去掉其它的列后形成新的关系,记作:A(R)=tA|t R 其中A为R中需要保留的属性组,tA是从元组t生成的新元组,新元组
24、是从元组t中去掉不包含在属性组A中的属性。投影操作是从列的角度进行的运算。第39页,本讲稿共54页2.2 关系代数2.2.2 专门的关系运算A BCa1b1c1a1b2c2a2b2c1A Ca2c1a1c1RA,C(R)第40页,本讲稿共54页2.2 关系代数2.2.2 专门的关系运算3、连接连接运算是从两个关系的笛卡尔积中,在水平方向进行选择运算,在垂直方向进行投影运算从而产生一个新的关系,关系R和S的连接运算可以记做:R F S=F(RS)条件的一般形式是AB,=,=,=,A是关系R中的属性或者是一个常数,B是关系S中的属性或者是一个常数,A和B必须是同一个定义域(相同的类型)。还可以用逻
25、辑运算符和上面的一般形式构成更复杂的条件。第41页,本讲稿共54页2.2 关系代数2.2.2 专门的关系运算连接运算中有两种最为重要也最为常用的连接,一种是等值连接(equijoin),另一种是自然连接(natural join)。为“”的连接运算称为等值连接。它是从关系R与S的广义笛卡尔积中选取在A,B属性上值相等的那些元组。自然连接(natural join)是一种特殊的等值连接,它要求关系R中的属性A和关系S中的属性B名字相同,并且在结果中把重复的属性列去掉。一般的连接操作是从行的角度进行运算。但自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。第42页,本讲稿共54页2.2
26、关系代数2.2.2 专门的关系运算ABCa1b15a1b26a2b38a2b412RBEb13b27b310b32b52SAR.BCS.BEa1b15b27a1b15b310a1b26b27a1b26b310a2b38b310R CE S第43页,本讲稿共54页2.2 关系代数2.2.2 专门的关系运算ABCEa1b153a1b267a2b3810a2b382 R SABCEa1b153a1b267a2b3810a2b382a2b412b52 外连接第44页,本讲稿共54页2.2 关系代数2.2.2 专门的关系运算4、除给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。R中的Y与S中
27、的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新的关系P(X),对于任何一个元组tP(X),有tX(R),并且tY(S)R。第45页,本讲稿共54页2.2 关系代数2.2.2 专门的关系运算Pilot PlaneModelP1727P1737P2747P1A300P3727PlaneModel727737A300PilotP1RSR S第46页,本讲稿共54页2.3 事例数据库关系数据库是关系的集合。在这一节给出本书中使用的一个事例数据库,它包含三个关系:学生关系:Student(Sno,Sname,Ssex,Sage,Sdept)属性Sno、Sname、Ssex、Sag
28、e和Sdept分别表示学号、姓名、性别、年龄和所在系,Sno为主码。课程关系:Course(Cno,Cname,Cpno,Ccredit)属性Cno、Cname、Cpno和Ccredit分别表示课程号、课程名、先修课号和学分,Cno为主码。学生选课关系:SC(Sno,Cno,Grade)属性Sno、Cno和Grade分别表示学号、课程号和成绩,主码为属性组(Sno,Cno)。第47页,本讲稿共54页2.3 事例数据库关系Student的关系实例SnoSnameSsexSageSdept2000012 王林 男 19 计算机 2000113 张大民 男 18 管理 2000256 顾芳 女 19
29、 管理 2000278姜凡 男 19 管理 2000014 葛波 女 18 计算机 第48页,本讲稿共54页2.3 事例数据库关系Course的关系实例CnoCnameCpno Ccredit1128高等数学 6 1156英语 6 1137 管理学 4 1024数据库原理 11364 1136 离散数学 11284 第49页,本讲稿共54页2.3 事例数据库关系SC的关系实例SnoCnoGrade2000012 1156 80 2000113 115689 2000256 1156932000014 115688 2000256 1137 772000278 1137 89 SnoCnoGra
30、de2000012 1024 80 2000014 1136 9020000121136 78 2000012113770 2000014 102488关系SC的关系实例(续表)第50页,本讲稿共54页2.3 事例数据库例例1 查询学习课程号1137的学生的学号和成绩Sno,Grade(Cno=1137(SC)例例2 查询学习课程号为1137的学生的学号和姓名。Sno,Sname(Student (Cno=1137(SC)例例3 查询选修课程名为管理学的学生的学号和姓名。Sno,Sname(Student (Cname=管理学(Course)SC)例例4 查询选修课程号为1024或1136的学
31、生的学号。Sno(Cno=1024 Cno=1136(SC)第51页,本讲稿共54页2.3 事例数据库例例5 查询至少选修课程号为1024与1136的学生的学号。1(1=4 2=1024 5=1136(SCSC)在本例中SCSC表示关系SC自身进行笛卡尔积,结果中有列重名的现象,这时,不能写Sno=Sno,因为Sno具有二义性(有两个列的名称都叫Sno),所以用1=4来表示,1表示第1列,4表示第4列。例例6 查询不学课程号为1156的学生的姓名和所在系。Sname,Sdept(Student)-Sname,Sdept(Student (Cno=1156(SC)例例7 查询学习全部课程的学生的
32、学号。Sno,Cno(SC)Cno(Course)第52页,本讲稿共54页2.3 事例数据库例例8 查询所学课程包含学生葛波所学课程的学生的姓名。学生葛波所学的课程可以表达为:Cno(Sname=葛波(Student)SC)所学课程包含学生葛波所学课程的学生的学号是:Sno,Cno(SC)Cno(sname=葛波(Student)SC)这些学生的姓名是:Sname(S (Sno,Cno(SC)Cno(Sname=葛波(Student)SC)例例9 向关系S中增加一个学生的信息。Student (2000015,李立,男,20,计算机)第53页,本讲稿共54页2.4 小结本章着重介绍了关系的概念
33、、基本操作和完整性约束。理解关系模型是使用关系数据库的基础。1.形象的讲,关系是一个简单的二维表,有若干列和若干行组成,同一列中的数据有相同的数据类型,当然,为了区分不同的表,每个二维表要有一个唯一的名称。2.从形式上讲,关系是一个集合,集合的元素叫做元组。一个n元关系(有n个属性)的一个元组有n个分量,每个分量是属性对应的集合(又叫做域)的一个元素。3.关系的操作分为查询和更新操作。更新操作有插入一个元组、删除一个元组、修改元组的某个分量。查询操作有传统的集合操作和选择、投影和连接操作4.关系模型要求关系要满足实体完整性约束、参照完整性约束、用户自定义完整性约束。实体完整性是指关系中任何一个元组在主关键字上不能取空值。空值是一个特殊的值,表示暂时“不知道”或“不存在”具体的值。第54页,本讲稿共54页