1、数据库系统: 发展、系统组成(了解) 数据模型:概念和常用模型(了解) 关系数据库:基本原理和知识(掌握) 关系数据库的理论基础:关系代数(理解),第3章 关系数据库基本知识,数据库是目前信息系统的基本数据组织方式,它将经过抽象的信息以一定的数据结构描述并集中成为资源,支持对这些数据资源进行统一规划和集中管理,实现数据的多用户共享、多应用共享。,3.1 数据库系统,数据库技术的发展 数据库系统 数据库管理系统 数据库的体系结构,3.1.1数据库技术的发展,1. 第一代数据库系统(20世纪6070年代) 网状模型数据库和层次模型数据库为代表。实现了数据管理的“集中控制与数据共享”这一基本目标。主
2、要代表产品: 1963,美国GE的Bachman等人开发成功世界上第一个网状数据库系统IDS。 1969,美国IBM的第一个商品化层次数据库管理系统IMS。 19691970,美国CODASYL提出了DBTG报告,建立了以网状数据库模型为基础的数据库系统概念。 主要特点:支持三级抽象模型的体系结构;用存取路径(指针)来表示数据间的联系;数据定义语言和数据操作语言相对独立,数据库语言采用过程性导航式语言。,Bachman于l 973年获美国计算机协会(ACM)颁发的图灵(Turing)奖。,2. 第二代数据库系统(20世纪7080年代) 20世纪70年代初,关系数据模型的提出,关注和争论。以 E
3、.F.Codd为代表的理论研究成果获得肯定。 代表产品: 1976,IBM公司System R, 并先后推出了SQL/DS(1982年)和DB2(1985年)两个商品化关系数据库系统。 1976,美国加州大学Berkeley分校开发INGRES,1981年商品化。 1979年美国ORACLE公司推出用于VAX小型机上的Oracle v2.0,第一次实现使用SQL语言的商品化关系数据库软件。 关系模型建立在严格的数学理论基础之上,它概念简单、清晰,易于用户理解和使用。 20世纪80年代以后逐渐走向成熟。一批商品化关系数据库软件:如Oracle、Sybase、Informix、INGRES、SQL
4、 Server等。,3. 新一代数据库系统(20世纪80年代以后) 信息管理的应用的新需求:例如存储和处理复杂对象、数据类型;海量、大对象数据的存取和计算;实现程序设计语言和数据库语言无缝地集成;等等。 技术发展主要特征: 1)面向对象的方法和技术与数据库技术的结合; 2)数据库技术与多学科技术的有机结合,如网络通讯技术、面向对象、并行计算、多媒体、人工智能、管理信息系统、决策支持系统等技术; 3)面向应用领域的数据库技术的研究,如异构数字资源管理、移动办公、分布式应用、电子商务、数字图书馆、知识管理等。,“应用驱动”和“技术驱动”相结合形成了新一代进入商业化应用的数据库管理系统的大家族。,3
5、.1.2数据库系统,数据库系统(DataBase System,DBS)专指基于数据库来存储、管理、运行和应用信息的信息处理系统。,1. 数据库系统的组成,1)数据库(Data Base,DB )长期存储在计算机内有结构的大量的共享的数据集合。 2)数据库管理系统(Database Management System,DBMS)。专门支持数据库创建、管理和使用的软件系统,在操作系统的支持下工作。它实现了科学地组织和存储数据,高效地获取和处理数据。 3)数据库相关人员: 数据库管理员(DataBase Administrator,DBA):负责数据库的建立、使用和维护。保证数据库的安全、高效、正
6、常运行。 系统分析员:负责应用系统的需求分析和规范说明,确定系统的软、硬件配置,完成数据库系统及数据库各级模式概要设计。 应用程序员:负责设计开发应用系统各功能模块的编程人员。 普通用户:数据库系统的最终用户,也是系统分析的参与者。 4)硬件。硬件主要是指计算机及外围设备。 5)软件。软件主要包括操作系统、各种开发工具、宿主语言等。,2.数据库系统的特点,1)数据集中管理。所有的数据按其内在联系集中存储在数据库中,由DBMS管理,能实现充分的共享,并发访问。 2)数据重复少。不但节省存储空间,更重要的是因为没有冗余,由修改而引起的数据不完整性问题可以减少或避免。 3)应用程序与数据独立。数据库
7、按数据的关系检索信息,不受数据存储格式的影响,应用程序根据用户需要访问相关数据并按需提供信息服务。可以极大地增加应用程序的独立性,提高维护效率。 4)提供信息安全保障。DBMS提供统一的安全控制服务。数据库的访问者必须是数据库的合法用户,而且只能根据用户所具有的权限执行相应的操作。,3.1.3数据库管理系统DBMS,负责数据库中数据的存储、查找、增加、删除、修改操作,并维护数据的完整性、并发性、安全性等。,1.数据库管理系统主要的功能,1)数据定义功能。建立数据库以及定义数据库的模式结构、数据库的完整性约束规则和安全性控制方式等,这些信息存储在数据字典中,为数据库的运行管理提供基本依据。 2)
8、数据操纵功能。实现对数据库的检索和更新(包括插入、删除和修改)操作。 3)数据库的运行管理功能。完成数据库运行时的控制和管理功能,包括并发控制、安全性检查、完整性约束条件的检查和执行、数据库的内部管理和维护(如索引、数据字典的自动维护)等。 4)数据库的维护功能。包括数据库初始数据的输入、转换功能,数据库的存储、恢复功能,数据库的重组功能和性能监视、分析功能等。这些功能通常是由一些实用程序完成。 5)支持所采用数据模式下的数据库语言,用户和程序可以直接使用这些语言完成以上大部分功能。,3.1.4数据库的体系结构,从数据应用的角度来看,不同用户可以有各自的数据库视图。由此形成数据库的三级模式结构
9、,即外模式、概念模式和内模式,,系统分析员&数据库管理员:数据库全局逻辑结构,用户和应用程序员视图:数据库局部数据视图,数据库管理员:数据库物理存储,数据库管理系统在三个模式间提供了两级映射:外模式与模式间的映射、模式与内模式间的映射。,3.2数据模型,数据模型用来抽象、表示和处理现实世界中的数据和信息,以便于采用数据库技术对数据进行集中管理和应用。一个好的数据模型应能比较真实地模拟现实世界,容易为人们理解并便于计算机表达。,数据模型的概念 数据库中的基本数据模型,1.数据模型的概念,数据模型是指构造数据结构时所遵循的规则以及对数据所能进行的操作的总称,是现实世界的模拟和抽象。,概念数据模型
10、(概念模型,信息模型),结构数据模型 (数据模型),2.概念数据模型,不依赖于具体的计算机系统和DBMS,它是对要开发的信息系统所涉及的客观对象相关信息的抽象描述,是信息系统分析的有效交流工具,是结构数据模型设计的基础。 典型的概念数据模型是实体联系模型(Entiry-Relationship Data Model,简称E-R模型),实体联系模型采用“实体联系”图来表示,简称E-R图。 E-R图的最大优点是比较简单、有效和灵活,对于技术和非技术人员来说都可以很快地学会和使用,并可卓有成效地针对数据需求进行讨论,辅助技术开发人员和最终用户间沟通的沟通。,E-R图,(1)实体:是指现实世界客观存在
11、并可相互区别的事物,例如学生实体。在E-R图中,实体用矩形表示,中间书写实体名。,(2)属性:是实体中每个成员具有的特性。例如,在学生实体中,性别属性的域为“男”,“女”。在E-R图中,属性用椭圆形表示,中间书写属性名,并用直线连接到相关的实体。 (3)关键字:可以唯一标识实体的一组最小的属性集合称为关键字。例如,学号是学生实体的关键字。在E-R图中,关键字属性用下划线表示。,E-R图主要包括实体、实体的属性和实体间的联系。,(4)联系:是实体之间的一种关联。联系也可以具有属性。例如,学生选课是一个联系,反映了学生实体与课程实体的一种关联,成绩可作为学生选课联系的一个属性。在E-R图中,联系用
12、菱形表示,中间书写联系名,并用直线将它与关联的实体相连接。在E-R图中,联系的类型有三种: 一对一联系(1:1):实体A中的每一个成员最多与实体B中的一个成员相关联,反之亦然。 一对多联系(1:n):实体A中的每一个成员可以与实体B中的多个成员相关联,反之,实体B中的每一个成员最多与实体A中的一个成员相关联。 多对多联系(m:n):实体A中的每一个成员可以与实体B中的多个成员相关联,反之,实体B中的每一个成员也可以与实体A中的多个成员相关联。,学校教务管理中的几个E-R图,3.结构数据模型,简称数据模型,它是严格定义的一组概念的集合,这些概念精确地描述了系统的静态特性、动态特性和完整性约束条件
13、。1)数据结构。是对所关心的数据对象及其相互关系的描述。数据结构规定了如何把基本的数据项组织成较大的数据单位,以描述数据的类型、内容、性质和数据之间的相互关系。如层次模型、网状模型和关系模型等。 2)数据操作。是指对数据模型中的各种对象(如关系模型中的关系)的实例(即值)允许执行的操作的集合,包括操作及其有关的操作规则。数据库中的操作主要有检索和更新两大类。数据模型需要定义这些操作的确切含义、操作符号、操作规则(如优先级)以及实现操作的语言。 3)数据完整性约束。数据完整性约束条件是一组数据完整性规则的集合。数据完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定基于数据模
14、型的数据库的状态以及状态的变化,以保证数据库中数据的正确、有效和相容。,3.2.2基本数据模型,在数据库领域中应用的数据模型有:层次模型(树)网状模型(图)关系模型(表)面向对象模型(对象) 关系模型概念清晰、简单,功能强大、易于理解和使用. 目前, 关系数据库最为成熟和广泛应用。,1层次模型,层次模型又称树状模型。下面为一模型和数据组织实例。,2网状模型,和层次模型相比,网状模型可以提供更大的灵活性。但在概念上、数据结构上都比层次模型更复杂,编程较复杂,操作上也有诸多不便。下图为一模型举例。,3关系模型,关系模型将数据组织成表格的形式,这种表格在数学上称为关系。表中存放两类数据,即实体本身的
15、数据和实体间的联系。 下面是一个学生表,多个表以及它们之间的联系,就构成了数据库,例如: “学生选课”数据库,关系模型具有许多优点,主要有: 以关系代数和数理逻辑为数学基础,经过多年发展,形成了严密的关系数据库理论。 数据结构简单、清晰,概念单一,即无论实体还是实体之间的联系都用关系(即表)来表示,对关系数据的检索结果也是关系。 存取路径对用户透明,从而具有更高的数据独立性,更好的安全保密性,也简化了程序员的工作和数据库建立的工作。 关系模型的缺点主要由于存取路径对用户透明,查询效率往往不如非关系数据模型。因此为了提高性能,必须对用户的查询请求进行优化。 以关系模型组织的数据库系统称为关系数据
16、库系统,它最为成熟,例如Oracle、Sybase、Informix、INGRES、SQL Server等关系数据库管理系统广泛应用于信息系统建设。,3.3关系数据库,关系数据库是以关系模型为基础的数据库。它具有简单灵活的数据模型、较高的数据独立性、能提供有着良好性能的语言接口、并且有着比较坚实的理论基础等优点,是目前最为流行的数据库系统。,关系模型: 关系数据结构 数据完整性约束 关系操作集合 关系数据库,一个简单的教务管理系统数据库,3.3.1关系数据结构,包括以下一些主要概念和定义: 基本表结构 关键字 关系 索引 关系模式 关系子模式,1基本表结构,表(Table):关系模型的数据结构
17、单一,采用二维表结构来表示实体和实体之间的关系。一个关系对应于一张二维表。 属性(Attribute):表中每一列(也称字段、数据项)描述实体集的某个特征,在关系数据库中被称为属性;每一个属性都有自己的取值范围,称为域。 元组(Tuple):表中的每一行由一个实体的相关属性取值构成,称为元组,它相对完整地描述了一个实体。一个元组在关系数据库中也被称为一条记录。元组中的一个属性值称为分量。,【例3-1】优异生表,记录,属性 (字段),分量,注意:关系是二维表格,但这个二维表格是有限制的: 1)表中的每一属性必须是基本数据类型,例如整型、实型、字符型等,结构或数组就不能作为属性的类型。 2)表中的
18、每一列的所有值必须是同类型、同语义的。如果表中的某一列包含学生的学号,则此表中所有行的此列都必须是学生的学号。 3)属性的值只能是域中的值。例如,工资表中基本工资是正数,那么任何一个职工的基本工资都只能是正数;学生的性别只能在“男”或“女”中取值。 4)表中的每一列都必须有唯一的名字,但不同的属性可以出自相同的域,即它们的分量可以取自于同一个域。列在表中的顺序可以任意交换。 5)表中任意两个元组的值不能完全相同,即不允许有重复的行,行在表中的顺序无关紧要。 6)表中的每一个分量必须是不可分的数据项,不允许出现“表中有表”的现象。,【例3-2】一个表中不同的属性具有相同域。,【例3-3】表中每一
19、个分量都是不可分的数据项。不可出现“表中有表”的现象。,兼职/职业教师,工人,辅导员,作家,2关键字,在一个关系模式中,关键字是保证表中记录具有唯一性的一种机制。 候选关键字(Candidate Key):也称候选码,是关系表中按应用语义能唯一标志元组的最小属性的集合。在最简单的情况下,候选关键字只包含一个属性。在最极端的情况下,关系模式的所有属性组是这个关系模式的候选关键字,称为全码。 主关键字(Primary Key):也称主键,用户指定的用来在关系表中唯一标志元组的一个候选关键字。若一个关系有多个候选关键字,则只选定其中一个为主关键字。主关键字不能为空。,【例3-4】主关键字的唯一性语义
20、:学生表的主关键字的选择。,【例3-5】主关键字可以是一个属性组:选课表的主关键字选择。,如果不允许表中出现姓名相同的学生,则该表中“学号”和“姓名”都是候选关键字,主关键字可以选定“学号”或“姓名”,如果允许表中出现姓名相同的学生,则“姓名”不能作候选关键字,主关键字只能是“学号”。,主关键字只能是“学号”+“课号”。 想一想,如果需要在表中记录补考成绩,关键字如何设置?,3表之间的关系,实体之间的联系,反映到数据库中就是表和表之间的关系。 表和表之间的关系通过表的公共属性来实现。 外关键字:为实现表之间的关系,一个表中的主关键字与另一个表中与该主关键字相同的属性建立联系,这个起到联系作用的
21、属性,称为另一个表的外关键字,简称外键。 主表和外表:当两个表关联后,公共属性作为主关键字所在的表称为主表,另一个表称为外表。,在两个表之间建立关系的一般原则: 1)两个表具有能体现实体实际存在关系的公共属性。 2)该公共属性在其中一个表中是主关键字。,【例3-6】学生表和班级表之间的关系。,主表,外表,【例3-7】学生表和优异生表之间的关系。,主表,外表,一对一关系中,选择一般性主导性信息表作为主表。,【例3-8】学生表和教师表之间的关系,以上结构的表直接建立关系无意义。可以选择以下设计: 任课关系:通过学生表和课程表之间的关系、以及教师表和课程表之间的关系,可以找到任课教师信息。 指导教师
22、关系:可以在学生表中增加一个属性“工号”,用来记载该生的指导教师,然后利用“工号”来建立学生表和教师表的关系。 班主任:在班级表中增加一个属性“工号”,用来记载该班的班主任,然后在班级表和教师表之间建立关系。由于学生表和班级表之间已经建立了关系,在应用中,用户可以间接获得这种师生关系信息。,关系描述了两个不同的实体集之间的联系,在概念数据模型E-R图所描述的实体联系的三种类型,在关系数据模型中,按照表中相关数据的对应量来描述如下: 一对一关系(1:1):对于表A中的每一条记录,在表B中至多有一条记录与之对应,反之亦然。 一对多关系(1:n):对于表A中的每一条记录,在表B中有n(n=0)条记录
23、与之对应,而对于表B中的每一条记录,在表A中至多有1条记录与之对应。 多对多关系(m:n):对于表A中的每一条记录,在表B中有n(n=0)条记录与之对应,而对于表B中的每一条记录,在表A中有m(m=0)条记录与之对应。,教务管理系统数据库的表关系分析,课堂练习,讨论的题目 (1)在Products表上创建FOREIGN KEY约束参考OrderDetails表 (2)在Products表上创建FOREIGN KEY约束参考Suppliers表 (3)在Orders表上创建FOREIGN KEY约束参考OrderDetails表 (4)在OrderDetails表上创建FOREIGN KEY约束
24、参考Orders表 (5)在OrderDetails表上创建FOREIGN KEY约束参考Products表 (6)在Suppliers表上创建FOREIGN KEY约束参考Products表,表之间关系的作用,在多表间提取相关信息。建立表之间的约束, 维护表之间数据的完整性和一致性. 减少数据存储冗余。,在设计数据库和数据表时,可把复杂的事 物进行分解,建立多个表来描述,并通过表关 系使信息仍保持整体的逻辑结构。,4关系模式,表中的行定义(即表头)是实体集相关属性的集合,称为该表的关系模式。关系模式就是对关系的描述,包括关系名、组成该关系的属性名、属性向域的映象。 关系模式通常记为:关系名(
25、属性名1,属性名2,属性名n), 其中主关键字加下划线 属性向域的映象直接说明为属性的类型、长度。,教务管理系统数据库的关系模式(其中加下划线的属性是主关键字): 学生(学号,姓名,性别,出生日期,班号) 优异生(学号,认定时间,学分积点) 班级(班号,班名,专业) 课程(课号,课程名,学分) 选课(学号,课号,成绩),由于关系模式就是二维表的表框架,相当于记录格式,也可以以表框架的形式来表示上述关系模式。,课堂练习,上述数据库的关系模式,选课表的关系模型的表描述,关系模式确定后,可以明确地定义关系模型。每一个关系模型包括关系名、属性名,以及属性域的类型和长度,最后指出每个关系模式的关键字。
26、关系模型的描述可以使用本书第四章介绍的中的数据定义语言DDL,DBMS执行这些描述命令后就可以建立实际的数据库。 在数据库设计阶段也可以使用表格描述关系模型定义。,5关系数据库,对应于一个关系模型的所有关系模式的集合构成关系数据库,即关系数据库是由若干个相关的关系组合而成。 在每一个关系中可以存放两类信息:一类是描述实体本身的信息,另一类是描述实体(关系)之间联系的信息。 所以在建立关系模型时,我们只要把所有的实体及其属性表示出来,同时把描述各实体之间关系的信息也表示出来,就可得到一个数据库的全部关系模型。,对于关系数据库应当分清型与值的概念。 关系数据库的型即数据库描述,它包括若干域的定义以
27、及在这些域上定义的若干关系模式。 关系数据库的值是这些关系模式在某时刻对应的关系的元组的集合。 数据库的关系模式是稳定的,而数据库中的数据是在不断变化更新的。,关系数据库的型: SQL Server 生成的教务管理系统数据库关系图,6关系子模式,关系模式是数据库全局逻辑结构的描述,形成数据库的概念视图。在关系数据库中,一个关系通常对应一个表,在计算机上实际存储数据的表称为“基本表”,相应的关系称为“基本关系”。 而一个关系子模式(简称子模式)只是用户的一个视图,只是模式的一个局部,是数据库的外模式。 子模式可通过定义“视图”或“查询”来从“基本关系”模式导出。 “视图” :在数据库中只存储结构
28、的定义,而没有存储对应的数据,数据来自数据库中的基本表。 “查询”:根据指定条件对基本表进行查询所得的结果表,是临时表,虽然是实际存在的表,但数据也是来自基本表,且一般不再使用,具有一次性和冗余性的特点,【例3-13】从学生表变换得到学生生日视图。,【例3-14】从学生表、课程表和成绩表变换得到学生成绩子模式。,在数据库管理系统中,关系模式的数据按记录存储。 通常采用索引方法来建立数据记录的存取顺序。,7关系存取,(1)索引的概念索引是由一个表中的一列或者若干列的值与其对应的记录在数据表中地址所组成。数据库中一个表的存储由两部分组成:数据页面和索引页面。创建索引的目的是为了改善查询性能、加速对
29、表中数据行的检索、强制保持表的数据唯一性等。 索引建立后由系统进行维护和使用,不需要用户干预。 可以在一个表上建立多个索引,索引可以在任一列或者列的组合上建立。 索引虽然能改善查询性能,但也耗费了磁盘空间,并且对数据表进行数据增加、修改或删除时,系统需要花费一些时间来维护索引。 一般来说,需要在下面这些地方建立索引: 在主键和外键上创建索引。 在检索频繁的字段上建立索引。 在经常需要排序的字段上建立索引。,(2)索引的分类 可以从不同的角度对索引进行分类: 根据索引的顺序与数据表的物理顺序是否相同,分为聚集索引和非聚集索引; 根据数据表任意两行中被索引键值是否允许相同,分为唯一索引和非唯一索引
30、; 根据索引键值由一列还是多列构成将索引分为单列索引和复合索引。1)聚集索引对表中的数据行按指定键值(即索引列值)进行排序后再重新存储到磁盘上,使数据表的物理顺序与索引一致。优点是检索速度比非聚集索引快。缺点是重组了表的物理顺序并且在建立聚集索引时需足够的工作空间。每个表只能建立一个聚集索引。 2)非聚集索引具有完全独立于数据行的结构,不需要将数据表中的数据行按索引键值重新排序。非聚集索引表中存储了组成非聚集索引的键值和行定位器,其中,行定位器是指向数据行的指针,该数据行具有与索引键值相同的字段值。优点是不需要改变数据行的存储顺序,而且可以建立多个非聚集索引。,如果在一个表中既要创建聚集索引,
31、又要创建非聚集索引,应先创建聚集 索引,然后再创建非聚集索引,因为创建聚集索引会改变数据行的物理存储顺序。,3.3.2关系完整性约束,数据库必须保证所有表中的数据值与其所描述的应用对象的实际状态保持一致。 系模型通过关系完整性约束条件来保证数据的正确性和一致性。所谓约束条件主要是指在表和列上定义的规则,数据库管理系统会依据这些约束条件维护数据完整性。,域完整性规则 实体完整性规则 参照完整性规则,1域完整性,域完整性规定了属性的值必须是属性值域中的值。域完整性又称为用户自定义完整性。它是在关系数据模型定义时,由用户对属性列值的数据类型、长度、单位、精度、格式、值域范围、是否允许为“空值”等进行
32、限定。,所谓“空值”就是“不知道”或“无意义”的值。应当注意,空值不等于数值零,也不等于空字符或空字符串,因为没有成绩与成绩为零分显然是不同的。,【例3-15】表的域完整性规则应用。,35,2实体完整性,实体完整性是指关系中的元组在组成主关键字的属性上不能有空值且主关键字的值不能相同。 要注意实体完整性规则是针对基本关系表而言的。实体完整性主要是为了保障主关键字能唯一标识关系中的每个记录。 大多数关系数据库都支持实体完整性检查,如果表中定义了主关键字,系统将进行强制检查。,【例3-16】表的实体完整性规则应用。,学生表中,“学号”是主关键字。假定向学生表新加一条学生“王秋水”的记录,系统拒绝该
33、记录的添加,因为它违反了实体 完整性规则,即学生表中已存在一条主关键字取 值为“06102102”的记录。,3参照完整性,参照完整性要求一个外表的外关键字的取值必须是其主表主关键字的存在值或空值。因为数据库的表之间并不是完全不相关的,甚至有些属性字段在多个表中重复出现,为了保证数据完整性,需要对表之间的数据进行约束。参照完整性是在表之间关系的基础上实施的表之间的数据约束。,【例3-17】表的参照完整性规则应用。,在学生表和班级表建立关系后,学生表中“班号”的取值必须是空值或在班级表中“班号”属性中出现过的值。 如果学生表的班号字段允许为空,它取空值表示该学生还没有确定班级; 否则只能取班级表出
34、现过的班号值,即班级表中有该班级的记录。,对数据库进行修改时,可能会破坏表之间的参照完整性,所以为了保证数据库中的数据的完整性,应该对数据库的修改加以限制,这些限制包括:插入约束、删除约束和更新约束。 1)插入约束:当在外表中插入新记录时,必须保证其中的外关键字值在主表中出现过。,【例3-18】表的参照完整性的插入约束。向学生表中添 加一条学生“王秋水”的记录,插入约束会拒绝该记录的添加,因为班级表中不存在“班号”是“091021”的班级,该记录违反了参照完整性规则。,2)删除约束:当要从主表中删除一条记录时,必须考虑外表数据的完整性。一般有两种约束。 限制删除,即如果系统检查该记录的主关键字
35、值在某个外表中出现过,则不允许删除。 级联删除,即如果系统检查该记录的主关键字值在某个外表中出现过,则在删除主表中该记录的同时,将外表中与主关键字值对应的记录全部删除。,【例3-19】表的参照完整性的删除约束。删除班级表 中“班号”是“061021”的记录,1.限制删除:不允许删除; 2.级联删除:同时删除学生表所有中”061021”班的学生。,3)更新约束:如果要修改主表中的主关键字值,必须考虑外表数据的一致性。一般有两种约束。 限制更新,即如果系统检查该记录主关键字值在某个外表中出现过,则不允许更新。 级联更新,即如果系统检查该记录主关键字值在某个外表中出现过,则在更新主表中该记录的同时,
36、将外表中与主关键字值对应的记录的外关键字值全部更新。,【例3-20】 表的参照完整性的更新约束。欲将班级表 中“班号”是“061021”的记录的班号更改为“061028”,1.限制更新:不允许更新; 2.级联更新:同时更新学生表所有中“061021”为“061028”。,通过以上例子的分析可以发现,保证数据的一致性和完整性对数据库是至关重要的。 在数据库设计时,必须充分考虑和应用关系完整性规则,以避免产生数据的不完整和不一致,给应用带来困难。 参照完整性也可以大大减少垃圾数据在数据库中的堆积。 合理地利用关系完整性规则还可以简化应用程序开发,因为有些数据可以通过关系由数据库系统自动维护。 目前
37、多数关系数据库都提供了比较完善的约束机制。只要用户在定义数据库时定义好约束规则,数据库管理系统会自动维护这些完整性约束来保证数据的完整性和一致性。,3.3.3 关系操作,关系数据模型的数据操作是以关系代数和关系演算为理论基础的。 关系表可以看作是记录的集合。传统的集合操作包括并、交、差、广义迪卡儿积等,这些集合操作对应了数据库针对行的基本操作。 关系模型还专门定义了针对列的操作包括选择、投影、连接等。所有这些操作的结果,仍然是一个集合。 本书在3.4节介绍关系数据库操作的有关理论基础。,在关系模型的操作理论支持下,关系数据库主要支持以下一些基本操作(查、插、删、改): 插入:在一个表中插入一条
38、或多条新记录。 删除:从一个表删除一条或多条满足条件的记录。 修改:在一个表中修改满足条件的记录的某些字段的值。 查找:支持以下查找操作: 从一个表提取满足条件的记录或产生汇总记录; 从一个表选择某些属性列或生成计算列来形成新的关系模式,并选择满足条件的记录; 从多个表中选择某些属性列或生成计算列来形成新的关系模式,并选择满足条件的记录。,关系数据库基本操作,关系数据库操作语言,关系数据库的基本操作语言是SQL(Structured Query Language)。 SQL语言以简洁的语法支持数据库的各类操作(查插删改)。 SQL语言独立于数据库本身,独立于使用的机器、网络和操作系统。,3.4
39、关系代数,关系数据模型的数据操作是以关系代数和关系演算为理论基础的。关系演算是和关系代数等价的关系运算数理逻辑表示方式。 了解关系模型的数学基础,对于理解关系模型、设计数据模式和实现应用很有帮助。,关系定义 关系运算,3.4.1关系定义,在关系模型中,无论是实体还是实体之间的联系均由单一的结构类型即关系(二维表)来表示。下面以关系代数理论引出关系定义。,1域,域是一组具有相同数据类型的值的集合。例如,非负整数、整数、实数、长度小于25字节的字符串集合、0,l、大于等于0且小于等于I00的正整数等都可以是域。域中元素的个数称为域的度,也称基数。【例3-21】下列三个集合表示的域。 D1=陈佳迪,
40、徐瑶琪,表示学生的集合,度是2; D2=男, 女,表示性别的集合,度是2; D3=上海, 浙江, 山西,表示籍贯的集合,度是3。,2笛卡儿积,给定一组域D1,D2,Dn(这些域中可以有相同的域),则定义Dl,D2,D n的笛卡儿积为: D1D2Dn(d1,d2,dn)| diDi,i1,2,n,笛卡儿积得到的也是一个集合,这个集合中的每一个元素称为一个n元组,简称元组。元组中的每一个di称为元组的一个分量,分别取自相应的集合Di。当n的值为1时称为单元组,当n的值为2时,称为二元组,以此类推。,【例3-22】例3-21中三个域的笛卡儿积。 D1=陈佳迪,徐瑶琪,表示学生的集合,度是2; D2=
41、男, 女,表示性别的集合,度是2; D3=上海, 浙江, 山西,表示籍贯的集合,度是3。D1D2D3结果入右图所示。,3关系,笛卡儿积D1D2Dn的任意一个子集称为D1, D2,Dn上的一个n元关系,通常用R(D1,D2,Dn)表示,这里R为关系名,n是关系的度。所以关系也是一个集合,它的元素为元组,通常用R表示。关系可以直观地用一个二维表表示,表的每一行对应一个元组,表的每一列对应一个域。由于域可以相同,为了加以区分,应对每列起一个名字,称为属性。显然,n元关系必有n个属性。,【例3-23】从例3-22中笛卡儿积的一个子集来构造一个关系。,构成了名为“学生”的关系模式,记为:学生(姓名,性别
42、,籍贯)。其中,学生为关系名,姓名,性别,籍贯均为属性名。,3.4.2关系运算,关系代数的各种运算,可以支持对数据库的操纵要求,也是关系数据库操纵语言的理论基础。通常这类关系运算包括传统的集合运算和面向数据库的专门关系运算。,1传统的集合运算,(1)并运算 关系R和关系S的并运算形式化表示为:,并运算由属于R和属于S的所有元组组成,其结果关系的属性的个数与R或S相同。并运算实现了数据记录的合并,即表的插入操作。,如果关系R和关系S具有相同的关系模式或相容(相容指两个关系含有相同属性结构,且对应属性的值域相同,则和可进行并、交、差运算。,(2)交运算 关系R和关系S的交运算形式化表示为:,交运算
43、由既属于R又属于S的元组组成,其结果关系的属性的个数与R或S相同。交运算获得两个关系中相同的记录。,(3)差运算 关系R和关系S的差运算形式化表示为:,差运算由属于R但不属于S的元组组成,其结果关系的属性的个数与R或S相同。,(4)广义笛卡儿积广义笛卡儿积也是双目运算,但和并、交、差运算不同,它不要求参加运算的两个关系模式相同或相容。关系R和关系U差运算形式化表示为:,一个n列的关系和一个m列的关系的广义笛卡儿积是一个(n + m)列元组的集合,元组的前n列是关系的一个元组,后m 列是关系的一个元组。若有k1 个元组,有k2个元组,则关系和关系的广义笛卡儿积有k1*k2个元组,广义笛卡儿积运算
44、获得两个关系中记录联结。,传统的集合运算举例,a) 文学社表R,b) 合唱团表S,c) 课程表U,2专门的关系运算,这种运算是为数据库的应用而引进的特殊运算,它主要是从列的角度即属性的角度来进行的,但有时也会对行有影响。专门的关系运算主要包括选择、投影、连接等。,(1)选择选择操作是一元运算,它在关系中选择满足某些条件的元组,即在表中选择满足某些条件的行。因此选择结果的关系模式与原关系模式相同,只是数据是原数据的子集。选择操作实现了关系的水平分割。关系R关于选择条件F的选择操作记为:,(2)投影投影操作是一元运算,它在关系中选择某些属性,因此选择结果的关系模式是原关系模式的子集。选择操作实现了
45、关系的垂直分割。关系R是k元关系,在其分量集合A的投影操作记为:,(3)连接连接操作是二元运算,指从两个关系的笛卡尔积中选取满足一定条件的元组。连接条件中的属性称为连接属性,两个关系中的连接属性应该是可比的,即是同一类的数据类型,如都是数字型或字符型。连接条件中的运算符可以是=,=,当此算符取“=”时,称为等值连接。如果等值连接中连接属性为相同属性(或属性组),而且在结果关系中去掉重复属性,则此等值连接称为自然连接。,专门的关系运算举例,R和U等值联结,R和U自然联结,a) 文学社表R,c) 课程表U,3.5一个简单教务管理系统的关系数据库,下图为SQL Server所生成数据库的关系图,数据库的关系模型设计和完整性约束定义参见教材。,本章小结 数据库系统的组成和特点 数据库管理系统,支持数据库的创建、维护和使用,是用户建立、维护和使用自己创建的数据库的基本环境。 数据库的体系结构 数据模型:概念数据模型和E-R图,常用结构数据模型特点。 关系数据库: 数据结构:表、属性(字段)、域、元组(记录)、关键字、索引、关系等;关系模式、关系子模式 关系数据完整性约束 关系操作 关系数据库的理论基础:关系代数:并、交、差运算,选择、投影、连接运算。,