《第2章关系数据库系统精选文档.ppt》由会员分享,可在线阅读,更多相关《第2章关系数据库系统精选文档.ppt(64页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第2章章 关系数据库系关系数据库系统统本讲稿第一页,共六十四页2.1 概念模型与数据库的建模 由图1.6可以看出,概念模型是现实世界到机器世界的一个中间层次。所谓概念模型,是指抽象现实系统中有应用价值的元素及其关联关系,反映现实系统中有价值的信息结构。概念模型用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库涉及人员进行数据库设计的工具,也是数据库设计人员和用户之间进行交流的工具,因此该模型一方面应该具有较强的语义表达能力,能够方便、直接地表达应用中各种语义知识;另一方面它还应该简单、清晰、易于被用户理解。本讲稿第二页,共六十四页概念模型是面向用户、面向现实世界的数据模型,它与具
2、体的DBMS无关。在数据库的设计阶段,采用概念模型,其主要是把主要精力放在了解现实世界的客观事物以及事物的联系上,而把涉及DBMS的一些问题放在设计的后面阶段考虑。常用的概念模型是实体-联系(Entity-Relationship)模型,也称E/R图。2.2.1实体-联系模型 1976年,P.P.S.Chen提出了实体-联系方法。该方法用E/R图来描述现实世界的概念模型,E/R方法也称为E/R模型。由于该方法简单、实用,因此得到了广泛的应用,也是目前描述信息结构最常用的方法。在实体-联系模型中,主要涉及以本讲稿第三页,共六十四页下概念:1.实体 客观存在,可以相互区别的事物称为实体。实体可以是
3、具体的人、事、物,也可以是抽象的概念或联系。例如:可以触及的客观对象仓库、器件、职工等是实体,客观存在的抽象事件订货、演出、足球赛等也是实体,老师与系存在工作关系也是实体。实体集:性质相同的同类实体的集合,称为实体集。例如:全体教师实体集。2.属性 每个实体都具有一定的特征和性质,这样我们才能根据实体的特征来区分一个个实体。属性本讲稿第四页,共六十四页就是实体所具有的某一个特性,或者说描述实体或者联系的性质或特征的数据项。每一个属性有一个值域,其类型可以是整数型、实数型、字符串型等。3.联系 现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界中反映为实体内部的联系和实体之间的联系。
4、实体内部的联系通常是指组成实体的各属性之间的联系,实体之间的联系通常是指实体与实体之间不同实体之间的联系。与一个联系有关的实体集个数,称为联系的元数。二元联系即两个实体之间有以下三种类型:一对一联系:如果实体集E1中每个实体至多本讲稿第五页,共六十四页和实体集E2中的一个实体有联系,反之亦然,那么实体集E1和E2的联系称为“一对一联系”,记为“1:1”。在关系数据库中,一对一的联系表现为一个表中的每一个记录只与相关表中的一个记录相关联。一对多联系:如果实体集E1中每个实体可以与实体集E2中任意个(零个或多个)实体间有联系,而E2中每个实体至多和E1中一个实体有联系,那么称E1对E2的联系是“一
5、对多联系”,记为“1:N”。在关系数据库中,一对多的联系表现为一个表中的每一个记录与相关表中的多个记录相关联。多对多联系:如果实体集E1中每个实体可以本讲稿第六页,共六十四页与实体集E2中任意个(零个或多个)实体有联系,反之亦然,那么称E1和E2的联系是“多对多联系”,记为“M:N”。在关系数据库中,多对多的联系表现为一个表中的多个记录在相关表中同样有多个记录与其匹配。即表A的一个记录在表B中可以对应多个记录,而表B的一条记录在表A中也可以对应多个记录。一对多是最普遍的联系。可以把一对一的联系看作一对多联系的一个特殊情况。同样一对多又是多对多联系的特例。实体之间的联系类型并不取决于实体本身,而
6、是取决于现实世界的管理方法,或者说取决于语义,即同样两个实体,如果有不同的语义则可以本讲稿第七页,共六十四页得到不同的联系类型。以仓库和器件两个实体之间的关联为例:如果规定一个仓库只能存放一种器件,并且一种器件只能存放在一个仓库,这时仓库和器件之间的联系是一对一的。如果规定一个仓库可以存放多种器件,但是一种器件只能存放在一个仓库,这时仓库和器件之间的联系是一对多的。如果规定一个仓库可以存放多种器件,同时一种器件可以存放在多个仓库,这时仓库和器件之间的联系是多对多的。2.2.2实体-联系模型的表示方法 E/R模型提供了表示实体型、属性和联系的方法。本讲稿第八页,共六十四页 实体型:用矩形表示,矩
7、形框内写明实体名。属性:用椭圆形表示,并用无向边将其与相应的实体连接起来。联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(11,1n,nm)。需要注意的是:联系本身也可能有属性。如果一个联系有属性,则这些属性也要用无向边与该联系连接起来。设计E/R图的过程如下:首先确定实体类型。确定实体类型的属性。确定联系类型,及其属性。本讲稿第九页,共六十四页 把实体类型和联系类型组合成E/R图。加上实体和联系的属性,并确定实体类型的码。下面以一个例子说明E/R图的表示方法。在物资管理中,一个供应商为多个项目供应多种零件,一种零件只能保存在一个仓库中,一
8、个仓库中可保存多种零件,一个仓库有多名员工值班,由一个员工负责管理。画出该物资管理系统的E/R图。本讲稿第十页,共六十四页图2.1 物资管理E/R图2.2.3 数据库建模 要设计一个数据库,首先要分析数据库中将要存放什么信息,这些信息彼此之间有什么联系,从而确定数据库的结构。数据库的结构,也成数据库模式,因此这个过程就称为数据库建模。数据库模式通常用某种表示方法加以说明。在实际的应用过程中,我们常用E/R模型进行数据库的建本讲稿第十一页,共六十四页模。即对事物进行需求分析收集到的数据进行分类、组织,形成实体、实体的属性,确定实体之间的联系类型,设计E/R图。具体内容在第八章讲述。具体内容在第八
9、章讲述。2.2 常用的数据模型 目前,数据库领域中常用的数据模型有三种,它们是:层次模型 网状模型 关系模型 一般将层次模型和网状模型通称为非关系模型。非关系模型的数据库系统在20世纪70年代至80年代非常流行。现在已逐步被关系模型的数据库所本讲稿第十二页,共六十四页取代。关系模型对数据库的理论和实践产生很大的影响,成为当今最流行的数据库模型。本书重点介绍关系数据库的基本概念和使用,为了使读者对数据模型有一个全面的认识,进而深刻地理解关系模型,这里先对层次模型和网状模型作一简单的介绍,在比较详细地介绍关系数据模型。2.2.1层次数据模型 用树状结构表示实体及实体间的联系的模型称为层次模型。在这
10、种模型中,数据被组织成由“根”开始的“树”,每个实体由根开始沿着不同的分支放在不同的层次上,如果不再向下分支,那么此分支序列中最后的结点称为“叶”。上级本讲稿第十三页,共六十四页结点与下级结点之间为一对多的联系。树的每一个结点代表一个实体。层次模型实际上是由若干个代表实体之间一对多联系的基本层次联系组成的一棵树,层次模型可以直接、方便地表示一对多的联系,但有以下两点限制:有且仅有一个结点无父结点,这个结点即为树的根。其它结点有且仅有一个父结点。在插入时,不能插入无双亲的子结点,如新来的教师未分配教研室则无法插入到数据库中,没有一个子女记录值能够脱离双亲记录值而独立存在。在删除时,如删除双亲结点
11、,则其子女结点也本讲稿第十四页,共六十四页会被一起删除。如删除某个教研室则它的所有教师也会被删除。在更新时,应更新所有相应的记录,以保证数据的一致性。图2.2 教学院系的数据模型本讲稿第十五页,共六十四页图2.3 教学院系数据库的一个实例 在插入时,不能插入无双亲的子结点,如新来的教师未分配教研室则无法插入到数据库中,没有一个子女记录值能够脱离双亲记录值而独立存在。本讲稿第十六页,共六十四页在删除时,如删除双亲结点,则其子女结点也会被一起删除。如删除某个教研室则它的所有教师也会被删除。在更新时,应更新所有相应的记录,以保证数据的一致性。支持层次数据模型的DBMS称为层次数据库管理系统。层次模型
12、有两个缺点:一是只能表示1:N联系,虽然系统有多种辅助手段实现M:N联系但较复杂,用户不易掌握;二是由于层次顺序的严格和复杂,引起数据的查询和更新操作很复杂,因此应用程序的编写也比较复杂。2.2.2网状数据模型本讲稿第十七页,共六十四页 现实世界中实体间的联系更多的是非层次关系。用有向图结构表示实体类型及实体间联系的数据模型称为网状模型。网中的每一个结点代表一个实体类型。网中的每一个结点代表一个实体。网状模型突破了层次模型的两点限制:允许结点有多于一个的父结点;可以有一个以上的结点没有父结点。因此,网状模型可以方便地表示类型间的联系。图2.4给出了一个简单的网状模型。每一个联系都代表实体之间一
13、对多的联系,系统用单向或双向环形链接指针来具体实现这种联系。如果课程和选课人数较多,链接将变的相当复杂。网状模型的主要优点是表示多对多的联系有很大的灵活本讲稿第十八页,共六十四页性,这种灵活性是以数据结构复杂为代价的。图2.4 网状模型示例本讲稿第十九页,共六十四页 支持网状数据模型的DBMS称为网状数据库管理系统,在这种系统中建立网状数据库。网状模型和层次模型在本质上是一致的。从逻辑上看,它们都是用结点表示实体,用有向边(箭头)表示实体间的联系,实体和联系用不同的方法来表示;从物理上看,每一个结点都是一个存储记录,用链接指针来实现记录之间的联系。这种用指针将所有数据记录都“捆绑”在一起的特点
14、,使得层次模型和网状模型存在难以实现系统修改与扩充等缺陷。2.3.3关系数据模型 关系模型是三种模型中最重要的一种数据模型。关系数据库系统采用了关系模型作为数据的组织本讲稿第二十页,共六十四页方式,现在流行的数据库系统大都是基于关系模型的关系数据库系统。1970年IBM公司E.F.Codd的多篇论文提出关系数据库理论。自20世纪80年代以来,计算机厂商新推出的数据库管理系统几乎都是支持关系模型的,数据库领域当前的研究工作都是以关系方法为基础的。关系模型由关系数据库、关系操作集合和关系完整性约束三部分组成。1.关系数据结构 关系模型源于数学,它用二维表来组织数据,而这个二维表在关系数据库中就称为
15、关系。关系数据库就是表或者说是关系的集合。关系模型就是用二维表格结构来表示实体及实体之间联系的本讲稿第二十一页,共六十四页模型。在关系模型中,用户感觉数据库就是一张张表。在关系系统中,表是逻辑结构而不是物理结构。表2.1 所示的是学生基本信息的关系模型。表2.1 学生基本信息表 我们再来看一个例子,有三个二维表。下表仅显示的是数据库表的结构,表中的数据未给出。学号姓名性别年龄籍贯996210王耀男19陕西996211李娟女18上海996212王超男19北京本讲稿第二十二页,共六十四页 我们再来看一个例子,有三个二维表。下表仅显示的是数据库表的结构,表中的数据未给出。表2.2 教师授课信息表 表
16、2.2中,我们可以很容易看出表之间有联系。教师关系和授课关系有公共的属性“教师号”,则表明这两个关系有联系。而课程关系和授课关系有公共的属性“课程号”,则表明这两个关系也有联系。至于元组之间的联系,则与具体的数据有关。只有在公共属性上具有相同属性值的元教师号姓名性别年龄职称教师信息课程号课程名称课时数教师号课程号课程信息 授课信息本讲稿第二十三页,共六十四页组之间才有联系。由以上可以看出,在一个关系中可以存放两类信息:描述实体本身的信息 描述实体(关系)之间的联系的信息 在层次模型和网状模型中,把有联系的实体(元组)用指针链接起来,实体之间的联系是通过指针来实现的。而关系模型则采用不同的思想,
17、即用二维表来表示实体与实体之间的联系,这就是关系模型的本质所在。所以,在建立关系模型时,只要把的所有的实体及其属性用表来表示,同时把实体之间的联系也用表来表示,就可以得到一个关系模型。本讲稿第二十四页,共六十四页2.关系操作 系操作就关系模型而言,给出了关系操作的能力。关系数据模型中的操作包括:传统的集合运算 并(Union)交(Intersection)差(Difference)广义笛卡尔积(Extended Cartesian Product)专门的关系运算选择(Select)投影(Project)连接(Join)除(Divide)有关的数据操作 查询(Query)插入(Insert)删除
18、(Delete)修改(Update)本讲稿第二十五页,共六十四页关系模型的操作对象是集合,而不是行。也就是说,操作的数据以及操作的结果都是完整的表(只包含一行数据的表,甚至不包含任何数据的空表),而非关系型数据库系统中典型的操作是一次一行或一次一个记录。因此,集合处理能力是关系系统区别于其他系统的一个重要特征。关系操作是通过关系语言实现的,关系语言的特点是高度非过程化。所谓非过程化,是指:用户不必关心数据的存取路径和存取过程,而只需要提出数据请求,数据库管理系统就会自动完成用户请求的操作。用户也没有必要编写程序代码来实现数据的重复操作。本讲稿第二十六页,共六十四页3.关系完整性约束 在数据库中
19、,数据完整性是指保证数据正确的特性。它包括两方面的内容:与现实世界中应用需求的数据的相容性和正确性;数据库内数据之间的相容性和正确性。例如,学生的学号必须是惟一的,学生的性别只能是“男”或“女”,学生所选的课程必须是已经开设的课程等。因此,数据库是否具有数据库完整性特征关系到数据库系统能否真实地反映现实世界的情况,数据完整性是数据库的一个重要的内容。在关系数据模型中,一般将数据完整性分为三本讲稿第二十七页,共六十四页类,即实体完整性、参照完整性约束和用户定义完整性。其中关系模型必须满足实体完整性和参照完整性约束,是系统级的约束,而用户定义完整性的主要内容是限制属性取值的域完整性,这属于应用级的
20、约束。这三类完整性约束条件由DBMS来保证的,而非应用程序保证。有关完整性约束的问题将在2.4节中详细讨论。4.关系模型与非关系模型比较 与非关系模型相比,关系数据模型具有如下特点:关系数据模型建立在严格的数学基础之上关系及其系统的设计和优化都是建立在严格数学概念基础上,有严格的设计理论,因而容易实现本讲稿第二十八页,共六十四页且性能好。关系数据模型的存取路径对用户隐藏用户根据数据的逻辑模式和子模式进行数据操作,而不必关心数据的物理模式情况,无论计算机的专业人员还是非计算机的专业人员使用起来,数据的独立性和安全保密性都很好。关系数据模型的概念单一,容易理解关系数据库中,无论实体还是联系,无论是
21、操作的原始数据、中间数据还是结果数据,描述一致,用关系表示,实体和联系都用关系描述,查询操作结果也是一个关系,保证了数据操作语言的一致性。这种单一的数据结构,使数据操作方法统一,也使用户易懂易用。本讲稿第二十九页,共六十四页 关系模型中的数据联系是靠数据冗余实现的关系数据库中不可能完全消除数据冗余。由于数据冗余,使得关系的空间效率和时间效率都较低。基于关系模型的优点,关系数据模型自诞生以来发展迅速,并且随着计算机与其技术的反展,目前,关系数据库系统保持其主流数据库的地位。2.3 关系数据模型的基本术语及形式化定义 在关系模型中,现实世界中的实体、实体与实体之间的联系都用关系来表示。关系模型源于
22、数学,它有自己严格的定义和一些固有的术语。为介绍方便,定义一个关系,亦即一二维表。如表2.3所示。本讲稿第三十页,共六十四页表2.3学生关系表2.3.1 关系模型的基本术语1.关系(Relation)关系就是二维表,二维表的名字就是关系的名字。表2.3的关系名就是“学生”。2.属性(Attribute)二维表中的列称为属性(或称为字段),每个属性有一个名字,称为属性名。二维表中对应一学号姓名年龄性别010601王小强19男010602李娜19女010603李海20男本讲稿第三十一页,共六十四页列的值称为属性值;二维表中列的个数称为关系的元数。如果一个二维表有n列,则称其为n元关系。表2.3所示
23、的关系就是一个四元关系。3.值域(Domain)二维表中属性的取值范围称为值域。在表2.3中,“性别”列的取值只能为“男”和“女”两个值,这就是列的值域。4.元组(Tuple)二维表中的行称为元组(或称为记录)。在表2.3中,元组有:(010601,王小强,19,男)(010602,李娜,19,女)(010603,李海,20,男)本讲稿第三十二页,共六十四页5.分量(Component)元组中的每一个属性值称为一个分量(或称为数据项),n元关系的每个元组有n个分量。元组(010603,李海,20,男)有4个分量。6.候选码(Candidate Key)若关系中的某一属性组的值能唯一地标识一个元
24、组,则称该属性组为该关系的一个候选码。候选码又称为候选关键字或候选键。在一个关系上可以又多个候选码。7.主码(Primary Key)一个关系可能有多个候选码,则选定其中一个作为主码。每个关系都有一个且仅有一个主码。主码又称为主健或主关键字,是表中的属性或本讲稿第三十三页,共六十四页属性组,即主码可以由一个属性组成,也可以由多个属性共同组成。8主属性(Primary Attribute)和非主属性(Non-Primary Attribute)包含在任一候选码中的属性称为主属性。不包含在任一候选码中的属性称为非主属性。9.全码(All Key)关系模式的所有属性组构成此关系模式的唯一候选码。2.
25、3.2 关系数据结构及其形式化定义 关系模型是建立在集合代数基础之上的,本小节将从集合论的角度给出关系数据结构的形式化定义。本讲稿第三十四页,共六十四页1关系的形式化定义 为了给出形式化的定义,首先定义笛卡儿积。给定一组域D1,D2,Dn,这些域中可以有相同的,D1,D2,Dn的笛卡儿集为:D1D2Dn(d1,d2,dn)|diDi,i=1,2,n 其中每一个元素称为一个n元组,元素中的每个值称为一个分量。例:设D1=大,中,小,D2=红,绿 D1D2=(大,红),(大,绿),(中,红),(中,绿),(小,红),(小,绿)例:设D1=计算机软件专业,信息科学专业 D2=张珊,李海,王宏 D3=
26、男,女 本讲稿第三十五页,共六十四页 则D1D2D3笛卡儿积为:图2.5笛卡儿积本讲稿第三十六页,共六十四页 在图2.5中,笛卡儿积的任意一行数据就是一个元组,它的第一个分量来自D1,第二个分量来自D2,第三个分量来自D3。笛卡儿积就是所有这样的元组的集合。根据笛卡儿积的定义,可以给出一个关系的形式化定义:笛卡儿积D1,D2,Dn的任意一个子集称为D1,D2,Dn上的一个n元关系。2 基本关系的性质 每一分量必须是不可分的最小数据项,即每个属性都是不可再分解的,这是关系数据库对关系的最基本的限定。列的个数和每列的数据类型是固定的,即每一列中的分量是同类型的数据,来自同一个值域。本讲稿第三十七页
27、,共六十四页 不同的列可以出自同一个值域,每一列称为属性,每个属性要给予不同的属性名。列的顺序是无关紧要的,即列的次序可以任意交换,但一定是整体交换,属性名和属性值必须作为整列同时交换。行的顺序是无关紧要的,即行的次序可以任意交换。元组不可以重复,即在一个关系中任意两个元组不能完全一样。2.3.3 关系模式 关系模式是对关系的描述,一个关系模式应当是一个五元组。它可以形式化地表示为:R(U D DOM F)本讲稿第三十八页,共六十四页 R为关系名,U为属性的集合,D为属性的域,DOM为属性向域的映象集合。F为属性间数据的依赖关系集合。关系模式通常可以简记为:R(U)或R(A1,A2,AN)其中
28、R为关系名,A1,A2,AN为属性名。而域名及属性向域的映象常常直接说明为属性的类型、长度。在一个给定的应用领域中,所有实体及实体之间的联系的关系的集合构成一个关系数据库。关系数据库也有型和值之分。关系数据库的型也称为关系数据库模式,是对关系数据库的描述,是关系模式的集合。关系数据库的值也称为关系数据库,是关系的集合。关系数据库模式与关系本讲稿第三十九页,共六十四页数据库通常统称为关系数据库。2.4 关系完整性 完整性是数据模型的一个非常重要的方面。关系数据库从多个方面来保证数据的完整性。在创建数据库时,需要通过相关的措施来保证以后对数据库中的数据进行操纵时,数据是正确的、一致的。完整性规则是
29、对关系的某种约束条件。包括三类完整性约束:实体完整性、参照完整性和用户定义的完整性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称为是关系的两个不变性,应该由关系系统自动支持。2.4.1 实体完整性(Entity Integrity)本讲稿第四十页,共六十四页 实体完整性规则保证关系中的每个元组都是可识别的和惟一的。实体完整性规则是指关系数据库中所有的表都必须有主码,而且主码值不能重复,构成主码的各属性值均不能取空值。因为若记录没有主码值,则此记录在表中一定是无意义的。我们知道,关系模型中的每一行记录都对应客观存在的一个实例或一个事实。比如,一个学号惟一地确定了一个学生。如
30、果表中存在没有学号的学生记录,则此学生一定不属于正常管理范围内的学生。另外,如果表中存在主码值相等的两个或多个记录,则这两个或多个记录会对应一个实例。这包含两种情况,第一,若表中本讲稿第四十一页,共六十四页的其他属性值也完全相同,则这些记录就是重复的记录,存储重复的记录是无意义的;第二,若其他属性值不完全相同则会出现语义矛盾,比如同一个学生(学号相同),而其名字不同或性别不同,这显然是不可能。对于实体完整性规则说明如下:实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。现实世界中的实体是可区分的,即它们应该具有唯一性标识。相应地,关系模型中以主码作为唯一性标识。主码中
31、的属性(即主属性)不能取空值,不仅是主码整体,而是所有主属性均不能为空。反本讲稿第四十二页,共六十四页过来,若主属性为空值,说明该实体不完整,即违背了实体完整性。空值用NULL表示。关系数据库管理系统可以用主关键字实现实体完整性,这是由关系系统自动支持的。2.4.2 参照完整性(Referential Integrity)参照完整性也称为引用完整性。现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体间的联系都是用关系来描述的。这样就自然存在着关系与关系之间的引用。参照完整性规则就是定义外码与主码之间的引用规则。定义:设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系
32、S的主码Ks相对应,则称F是基本关系R的外码(Foreign key),本讲稿第四十三页,共六十四页并称基本关系R为参照关系(Referencing relation),基本关系S为被参照关系(Referenced relation)或目标关系(Target relation)。关系R和S不一定是不同的关系。例:设工厂数据库中有两个关系模式:DEPT(D#,DNAME)EMP(E#,ENAME,SALARY,D#)车间模式DEPT的属性为车间编号、车间名,职工模式EMP的属性为工号、姓名、工资、所在车间的编号。每个模式的主键与外键已标出。在EMP中,由于D#不在主键中,因此D#值允许空。在这里
33、DEPT 是被参照关系,EMP是参照关系。例:学生(学号,姓名,性别,专业号,年龄)本讲稿第四十四页,共六十四页 专业(专业号,专业名)学生关系的“专业号”属性与专业关系的主码“专业号”相对应,因此,“专业号”属性是学生关系的外码。这里学生关系是参照关系,专业关系是被参照关系。例:设数据库中有两个关系模式:仓库(仓库号,城市,面积)职工(仓库号,职工号,工资)其关系以一个图示的形式给出。如图2.6所示。参照完整性规则是指若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:本讲稿第四十五页,共六十四页或者
34、取空值(F的每个属性值均为空值);或者等于S中某个元组的主码值。学生关系中每个元组的“专业号”属性只能取下面两类:空值,表示尚未给学生分配专业 非空值,这时该值必须是专业关系中某个元组的“专业号”值,表示该学生不可能分配到一个不存在的专业中。即被参照关系“专业”中一定存在一个元组,它的主码值等于该参照关系“学生”中的外码值。2.4.3用户定义完整性(User-defined Integrity)实体完整性和参照性适用于任何关系数据库系统。除此之外,不同的关系数据库系统根据其应本讲稿第四十六页,共六十四页用环境的不同,往往还需要一些特殊的约束条件。用户定义的完整性就是针对某一具体关系数据库的约束
35、条件,它反映某一具体应用所涉及的数据必须满足的语义要求。关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。在用户定义完整性中最常见的是限定属性的取值范围,即对值域的约束,所以在用户定义完整性中最常见的是域完整性约束。如选课关系中成绩不能为负数;某些数据的输入格式要有一些限制等。关系模型应该提供定义和检验这类完整性的机制,以便用统一的、系统的方法处理它们,而不要由应用程序承担这一功能。本讲稿第四十七页,共六十四页图2.6 两个模式的参照关系本讲稿第四十八页,共六十四页数据库通常统称为关系数据库。2.5 关系代数 关系代数是一种抽象的查询语言,
36、用对关系的运算来表达查询,作为研究关系数据语言的数学工具。关系代数的运算对象是关系,运算结果亦为关系。关系代数用到的运算符包括四类:集合运算符、专门的关系运算符、算术比较符和逻辑运算符。如表3.3所示。关系代数的运算按运算符的不同,主要分为传统的集合运算和专门的关系运算两类。集合运算将关系看成元组的集合,其运算是从关系的“水平”方向即行的角度来进行的。专门的关系运算不仅涉及行而且涉及列。本讲稿第四十九页,共六十四页比较运算符和逻辑运算符是用来辅助专门的关系运算符进行操作的。表2.4关系代数运算符2.5.1 传统的关系运算 传统的集合运算是二目运算,包括四种运算:并、交、差、广义笛卡尔积。运算符
37、含义运算符含义集合运算符-并交差比较运算符大于大于等于小于小于等于等于不等于专门的关系运算符笛卡儿积选择投影连接除逻辑运算符非与或本讲稿第五十页,共六十四页设关系R和关系S具有相同的目n(即两个关系都有n个属性),且相应的属性取自同一个域,则可以定义并、交、差、广义笛卡尔积如下:1.并(Union)设关系R和S具有相同的关系模式,R和S的并是由属于R或属于S的元组构成的集合,记为RS。形式定义如下:R S t|t R t S,t是元组变量,R和S的元数相同。2.交(Intersection)关系R和S的交是由属于R又属于S的元组构成的集合,记为RS,这里要求R和S定义在相同的关系模式上。形式定
38、义如下:本讲稿第五十一页,共六十四页 R S tt R t S,t是元组变量,R和S的元数相同。3.差(Difference)设关系R和S具有相同的关系模式,R和S的差是由属于R但不属于S的元组构成的集合,记为RS。形式定义如下:R S t|t R t S,t是元组变量,R和S的元数相同。由于R S=R-(R-S),或RS=S-(S-R),因此交操作不是一个独立的操作。4.广义笛卡尔积((Extended Cartesian Product)两个分别为n元和m元的关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合。元组的前n本讲稿第五十二页,共六十四页列是关系R的一个元组,后m列是关系S的
39、一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡尔积有k1k2个元组。R S trts|trRtsS (待续)本讲稿第五十三页,共六十四页(续表)图2.7 传统集合运算举例本讲稿第五十四页,共六十四页 图2.7(a)、图2.7(b)分别为具有三个属性列的关系R,S。图2.7(c)为R和S的差。图2.7(d)为R和S的并。图2.7(e)为R和S的交。图2.7(f)为R和S的笛卡儿积。2.5.2 专门的关系运算 专门的关系运算包括选择、投影、连接、除等。其中,第一个为一元操作,后三个为二元操作。1 选择 选择运算是从指定的关系中选择某些元组形成一个新的关系,被选择的元组是用满
40、足某个逻辑条件来指定的。选择运算表示为:本讲稿第五十五页,共六十四页 其中,是选择运算符,R是关系名,t是元组,F表示选择条件,它是一个逻辑表达式,取逻辑值真或假。选择运算实际上是从关系R中选取使逻辑表达式F为真的元组。这是从行的角度进行的运算。2 投影 关系R上的投影是从R中选择出若干属性列组成新的关系。从关系中消除某些属性,就可能出现重复行,应取消这些完全相同的行。投影运算表示为:本讲稿第五十六页,共六十四页3 连接 连接运算是两个表之间的运算,这两个表通常是具有一对多联系的父子关系。所以连接过程一般是由参照关系的外部关键字和被参照关系的主关键字来控制的,这样的属性通常也称为连接属性。连接
41、运算是将满足两个表之间运算关系的记录连接成一条记录,所有这样的记录构成新的表(连接运算的结果)。连接运算也称为运算。连接运算一般表示为:本讲稿第五十七页,共六十四页 其中A和B分别是关系R和S上可比的属性组,是比较运算符,连接运算从R和S的广义笛卡儿积R S中选择(R关系)在A上的值与(S关系)在B属性组上的值满足比较运算符的元组。连接运算中最重要也是最常用的连接有两个,一个是等值连接,一个是自然连接。为“”时的连接是等值连接,它是从关系R与关系S的广义笛卡儿积中选取A、B属性值相等的那些元组,即本讲稿第五十八页,共六十四页 自然连接是一种特殊的连接,它要求两个关系中进行比较的分量必须是相同的
42、属性组,并且在结果中要去掉相同的属性列。也就是说,若关系R和S具有相同的属性组B,则自然连接可记为:一般的连接运算是从行的角度进行运算,但自然连接还需要去掉相同的列,所以它是从行和列的角度进行运算。根据以上所述,总结自然连接与等值连接的区别如下:等值连接是从两个关系的笛卡儿积中选取两个属性值相等的列。自然连接是一种特殊的等值本讲稿第五十九页,共六十四页连接,它要求两个关系中进行比较的分量必须是相同的属性,并且在结果中把重复的属性列去掉。例:下列有两个关系R和S。(a)查询关系R中属性C小于关系S中属性E的连接。(b)查询关系R中属性B与关系S中属性B相等的等值连接。(c)查询关系R中属性B与关
43、系S中属性B相等的自然连接。本讲稿第六十页,共六十四页本讲稿第六十一页,共六十四页图2.8 连接运算举例本讲稿第六十二页,共六十四页小 结 概念模型是对现实世界信息的第一次抽象,它与具体的数据库管理系统无关,是用户与数据库设计人员的交流工具。因此概念模型一般采用比较直观的模型,本章主要介绍的是应用广泛的实体-联系模型,即E/R模型。同时E/R模型也是数据库建模的常用的工具。本章介绍了目前数据库领域中常用的数据模型。简单介绍了非关系模型,层次数据模型和网状层次模型。重点介绍了关系数据模型。关系数据库是目前应用最广泛的数据库管理系统。本章介绍了关系数据库的重要概念,包括关系数据结构、关系操作和关系完整性的约束,介本讲稿第六十三页,共六十四页绍了关系模型中实体完整性、参照完整性和用户定义完整性约束的概念。最后介绍了关系代数的运算,包括传统的集合运算并、交、差和广义笛卡儿积以及专门的关系运算选择、投影、连接和除法。本讲稿第六十四页,共六十四页