版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第2章 关系数据库基本知识 数据库是信息系统的基本数 据组织方式,它将经过抽象的信 息以一定的数据结构描述并集中 成为资源,支持对这些数据资源 进行统一规划和集中管理,实现 数据的多用户共享、多应用共享。 关系数据库是目前最成熟和 应用最广泛的数据库系统。 2.1数据库技术的发展 1. 第一代数据库系统(20世纪70年代) v网状模型数据库和层次模型数据库为代表。实现了 数据管理的“集中控制与数据共享”这一基本目标。 主要代表产品: 1963,美国GE的Bachman等人开发成功世界上第一个网 状数据库系统IDS。 1969,美国IBM的第一个商品化层次数据库管理系统IMS。 19691970
2、,美国CODASYL提出了DBTG报告,建立了 以网状数据库模型为基础的数据库系统概念。 v主要特点:支持三级抽象模型的体系结构;用存取 路径(指针)来表示数据间的联系;数据定义语言 和数据操作语言相对独立,数据库语言采用过程性 导航式语言。 Bachman于l 973年 获美国计算机协会 (ACM)颁发的图 灵(Turing)奖。 所谓导航就是指用户不仅要了解“要干什么”,而且要指出“怎 么干”。用户必须使用某种高级语言编写程序,一步一步地“引 导”程序按照某一条预先定义的存取路径来访问数据库,最终达 到要访问的数据目标。在访问数据库时,每次只能存取一条记录 值。若该记录值不满足要求就沿着存
3、取路径查找下一条记录值。 导航式的数据操纵其优点是存取效率高。存取路径由应用程序员 指定,应用程序员可以根据他对数据库逻辑模式和存储模式的了 解选取一条较优的存取路径。从而优化了存取效率。缺点是编程 繁琐。用户既要掌握高级语言又要掌握数据库的逻辑结构和物理 结构,程序设计很大程度依赖于设计者自己的经验和实践,因而 只有具有计算机专业水平的应用程序员才能掌握和使用这类数据 库操纵语言。应用程序的可移植性较差,数据的独立性也较差。 2. 第二代数据库系统(20世纪7080年代) v20世纪70年代初,提出关系数据模型。以 E.F.Codd为代表的 理论研究成果获得肯定。 v代表产品: 1976,I
4、BM公司System R, 并先后推出了SQL/DS(1982年)和DB2 (1985年)两个商品化关系数据库系统。 1976,美国加州大学Berkeley分校开发INGRES,1981年商品化。 1979年美国ORACLE公司推出用于VAX小型机上的Oracle v2.0,第一 次实现使用SQL语言的商品化关系数据库软件。 v关系模型具有以下特点: 1.关系模型的概念单一,实体集用关系(表)来表示; 2.以关系代数和数理逻辑为数学基础; 3.数据的物理存储和存取路径对用户透明; 4.关系数据库语言是非过程化的。 。 v20世纪80年代以后逐渐走向成熟。一批商品化关系数据库软 件:如Oracl
5、e、Sybase、Informix、INGRES、SQL Server等。 3. 新一代数据库系统(20世纪80年代以后) 随着计算机的广泛应用和信息社会的发展,特别是一些 新的应用领域,如CAD/CAM、办公信息系统、地理 信息系统、知识库系统、实时系统等,不断提出新的 应用要求,上述传统数据库都表现出不同程度的局限 性。新的数据库需要支持以下一些功能: 存储和处理复杂对象。 支持复杂的数据类型。 具有高性能的处理能力。 支持快捷的应用开发。 v“应用驱动”和“技术驱动”相结合形成了新一代 进入商业化应用的数据库管理系统的大家族。 2.22.2数据模型数据模型 由于计算机不能直接处理现实世界
6、中的具体事物, 所以必须事先将具体事物转换成计算机能够处理 的数据。 数据模型用来抽象、表示和处理现实世界中的数据 和信息,以便于采用数据库技术对数据进行集中 管理和应用。一个好的数据模型应能比较真实地 模拟现实世界,容易为人们理解并便于计算机表 达。 v数据模型的概念 v数据库中的基本数据模型 v数据模型是指构造数据结构时所遵循的 规则以及对数据所能进行的操作的总称,是 现实世界的模拟和抽象。 v数据模型设计包括概念模型设计和数据 模型设计两个阶段。 概念数据模型 (概念模型, 信息模型) 结构数据模型 (数据模型) (1)概念模型 概念模型,又称信息模型,是按用户观点将信息 模型化。它把现
7、实世界中的具体事物进行认识抽 象,形成信息世界中的概念模型,通常称这一过 程被称为概念模型设计,它是不依赖于特定数据 库管理系统的一种信息结构。 (2)数据模型 数据模型是按计算机观点将数据模型化,是机器 世界中数据之间关系及其操作的描述。根据概念 模型,设计者需将其转换为某一个数据库管理系 统支持的数据模型(例如关系模型),形成机器 可处理的数据结构模型。 2.2.1概念模型概念模型 v不依赖于具体的计算机系统和DBMS,它是对要开 发的信息系统所涉及的客观对象相关信息的抽象描 述,是信息系统分析的有效交流工具,是结构数据 模型设计的基础。 v典型的概念数据模型是实体联系模型(Entiry-
8、 Relationship Data Model,简称E-R模型),实体 联系模型采用“实体联系”图来表示,简称E-R 图。 vE-R图的最大优点是比较简单、有效和灵活,对于 技术和非技术人员来说都可以很快地学会和使用, 并可卓有成效地针对数据需求进行讨论,辅助技术 开发人员和最终用户间沟通的沟通。 E-R图 (1)实体:在现实世界客观存 在的具有公共属性并可相互区 别的事物对象的集合,例如学 生实体。在E-R图中,实体用 矩形表示,方框内书写实体名。 (2)属性:实体内各个成员所具有的特征。一个实 体可以由多个属性来刻画,每个属性都有一个允许 的取值范围,称为域。例如,在学生实体中,性别 属
9、性的域为“男”,“女”。在E-R图中,属性用 椭圆形表示,椭圆内书写属性名,并用直线连接到 相关的实体。 (3)关键字:可以唯一标识实体的一组最小的属性 集合称为关键字。例如,学号是学生实体的关键字。 在E-R图中,关键字属性用下划线表示。 E-R图主要包括实体、实体的属性和实体间的联系。 (4)联系:是实体之间的一 种关联。联系也可以具有 属性。 例如,学生选课是一个联系, 反映了学生实体与课程实 体的一种关联,成绩可作 为学生选课联系的一个属 性。 在E-R图中,联系用菱形表示, 中间书写联系名,并用直 线将它与关联的实体相连 接。 v在E-R图中,联系的类型有三种: 一对一联系(1:1)
10、:实体A中的每一个成员最多与 实体B中的一个成员相关联,反之亦然。 一对多联系(1:n):实体A中的每一个成员可以与 实体B中的多个成员相关联,反之,实体B中的每一 个成员最多与实体A中的一个成员相关联。 多对多联系(m:n):实体A中的每一个成员可以与 实体B中的多个成员相关联,反之,实体B中的每一 个成员也可以与实体A中的多个成员相关联。 学校教务管理中的几个E-R图 2.2.2 数据模型数据模型 概念模型需要转换为数据模型才能被计算机处理。数据模型由数 据结构、数据操作和数据完整性约束三部分组成,是严格定义的一 组概念的集合,这些概念精确地描述了系统的静态特性、动态特性 和完整性约束条件
11、。 1)数据结构数据结构。是对数据对象及其相互关系的描述。数据结构规 定了如何把基本的数据项组织成较大的数据单位,以描述数据的类 型、内容、性质和数据之间的相互关系。如层次模型、网状模型和 关系模型等。数据结构是对数据模型静态特性的描述。 2)数据操作数据操作。是指对数据模型中的各种对象(如关系模型中的 关系)的实例(即值)允许执行的操作的集合,包括操作及其有关 的操作规则。数据库中的操作主要有检索和更新两大类。数据模型 需要定义这些操作的确切含义、操作符号、操作规则(如优先级) 以及实现操作的语言。数据操作是对数据模型动态特性的描述。 3)数据完整性约束数据完整性约束。数据完整性约束条件是一
12、组数据完整性规 则的集合。数据完整性规则是给定的数据模型中数据及其联系所具 有的制约和依存规则,用以限定基于数据模型的数据库的状态以及 状态的变化,以保证数据库中数据的正确、有效和相容。数据完整 性约束是对数据模型中数据状态转换时制约关系的描述。 基本数据模型 v在数据库领域中应用的数据模型有:在数据库领域中应用的数据模型有: 层次模型(树)层次模型(树) 网状模型(图)网状模型(图) 关系模型(表)关系模型(表) 面向对象模型(对象)面向对象模型(对象) v关系模型概念清晰、简单,功能强大、关系模型概念清晰、简单,功能强大、 易于理解和使用易于理解和使用. 目前目前, 关系数据库最关系数据库
13、最 为成熟和广泛应用。为成熟和广泛应用。 1层次模型层次模型 v层次模型又称树状模型。下面为一模型和 数据组织实例。 2网状模型网状模型 v和层次模型相比,网状模型可以提供更大的灵活性。但在概 念上、数据结构上都比层次模型更复杂,编程较复杂,操作 上也有诸多不便。下图为一模型举例。 3关系模型关系模型 v关系模型将数据组织成表格的形式,这种表格在数 学上称为关系。表中存放两类数据,即实体本身的 数据和实体间的联系。 v下面是一个学生表 v多个表以及它们之间的联系,就构成了数据库,例如: “学生选课”数据库 v关系模型具有许多优点,主要有: 以关系代数和数理逻辑为数学基础,经过多年发展, 形成了
14、严密的关系数据库理论。 数据结构简单、清晰,概念单一,即无论实体还是实 体之间的联系都用关系(即表)来表示,对关系数据 的检索结果也是关系。 存取路径对用户透明,从而具有更高的数据独立性, 更好的安全保密性,也简化了程序员的工作和数据库 建立的工作。 v关系模型的缺点主要由于存取路径对用户透明, 查询效率往往不如非关系数据模型。因此为了提 高性能,必须对用户的查询请求进行优化。 v以关系模型组织的数据库系统称为关系数据库系 统,它最为成熟,例如Oracle、Sybase、 Informix、INGRES、SQL Server等关系数据库管 理系统广泛应用于信息系统建设。 2.3关系模型与关系数
15、据库 关系数据库是以关系模型为基础的数据库。 它具有简单灵活的数据模型、较高的数据独立 性、能提供有着良好性能的语言接口、并且有 着比较坚实的理论基础等优点,是目前最为流 行的数据库系统。 v关系模型: 关系数据结构 数据完整性约束 关系操作集合 v关系数据库 一个简单的教务管理系统数据库 2.3.1关系数据结构 包括以下一些主要概念和定义: v基本表结构 v关键字 v关系 v索引 v关系模式 v关系子模式 1基本表结构基本表结构 v表(表(Table):):关系模型的数据结构单一,采用二维表结构 来表示实体和实体之间的关系。一个关系对应于一张二维表。 v属性(属性(Attribute):):
16、表中每一列(也称字段、数据项)描 述实体集的某个特征,在关系数据库中被称为属性;每一个 属性都有自己的取值范围,称为域。 v元组(元组(Tuple):):表中的每一行由一个实体的相关属性取值 构成,称为元组,它相对完整地描述了一个实体。一个元组 在关系数据库中也被称为一条记录。元组中的一个属性值称 为分量。 学号认定时间学分积点 05101101 06102102 1996-9-254.5 1997-9-254.8 字段名称字段名称类型定义类型定义属性限定属性限定 学号学号Char(8)Primary Key 认定时间认定时间DateTimeNot Null 学分积点学分积点Numeric(3
17、,1)=0 【例3-1】优异生表 记记 录录 属性属性 (字段)(字段) 分量分量 注意:关系是二维表格,但这个二维表格是有限制的: 1)表中的每一属性必须是基本数据类型,例如整型、实型、 字符型等,结构或数组就不能作为属性的类型。 2)表中的每一列的所有值必须是同类型、同语义的。如果 表中的某一列包含学生的学号,则此表中所有行的此列都 必须是学生的学号。 3)属性的值只能是域中的值。例如,工资表中基本工资是 正数,那么任何一个职工的基本工资都只能是正数;学生 的性别只能在“男”或“女”中取值。 4)表中的每一列都必须有唯一的名字,但不同的属性可以 出自相同的域,即它们的分量可以取自于同一个域
18、。列在 表中的顺序可以任意交换。 5)表中任意两个元组的值不能完全相同,即不允许有重复 的行,行在表中的顺序无关紧要。 6)表中的每一个分量必须是不可分的数据项,不允许出现 “表中有表”的现象。 【例2-2】一个表中不同的属性具有相同域。 【例2-3】表中每一个分量都是不可分的数据项。 不可出现“表中有表”的现象。 省市 丁强 李媛媛 于淘 黑龙江齐齐哈尔 浙江杭州 江苏连云港 姓名 籍贯 省市 丁强 李媛媛 于淘 黑龙江齐齐哈尔 浙江杭州 江苏连云港 姓名 兼职/职业教 师,工人,辅 导员,作家 在一个关系模式中,关键字是保证表中记 录具有唯一性的一种机制。 (1)候选关键字)候选关键字 也
19、称候选码,是关系表中按应用语义能唯一标志元 组的最小属性的集合。在最简单的情况下,候选关键 字只包含一个属性。在最极端的情况下,关系模式的 所有属性组是这个关系模式的候选关键字,称为全码。 2. 关键字关键字 例如:以上学生表中,“学号”是候选关键字,“身份证号” 也是候选关键字,如果规定学生不允许重名,那么“姓名”也是候 选关键字。 (2)主关键字)主关键字 主关键字(Primary Key)也称主键,用户指定的用 来在关系表中唯一标识元组的一个候选关键字。 若一个关系有多个候选关键字,则只选定其中一 个为主关键字。主关键字的值不能为空、不能重 复。 在选课表中,属性集合(学 号,课号)是候
20、选关键字。 提示:提示:一般情况下,为每个关系表都要定义主 关键字,以保证任意两行数据不完全相同。 【例例2.4】主关键字的唯一性语义:学生表的 主关键字的选择。 学生表中,有3个候选关键字:“学号”,“身份证 号”,“姓名”。可以从其中选择任何一个做主关键字。那 选哪个呢? “姓名”做主关键还是有些限制(不能重名); “身份证号”太长,使用不方便; “学号”简洁,使用方便,在实际生活中也被用来唯一 区分学生,所以该表选“学号”作主关键字最合适。 【例2.5】主关键字可以是一个属性组:选 课表的主关键字选择。 该表的候选关键字只有一个(学号,课号), 所以别无选择,只能用它做主关键字! 注意:
21、候选关键字和主关键字可以唯一标 识一条记录,它可以是一个属性,也可以是多个属 性组成的属性组,由用户根据语义定义。 想一想,如果需要在表中记录多次补考成绩,如 何修改表,关键字如何设置? 3表之间的关系表之间的关系 v实体之间的联系,反映到数据库中就是表和表之间的关 系。 v表和表之间的关系通过表的公共属性来实现。 例如:学生表和班级表通过公共属性“班号”建立了一对 多的关系。 在设计数据库和数据表时,可把复杂的事物进 行分解,建立多个表来描述,并通过表之间的关系 使信息仍保持整体的逻辑结构。 在多表间提取相关信息在多表间提取相关信息。 表之间关系的作用 例如,要查询学生“林豆豆”的班级名称,
22、可先从学生 表中查出她的班号是“11”,然后根据班号“11”在班级表中 查出对应的班级名称“数学01”。 建立表之间的约束建立表之间的约束, , 维护数据的完整性和一致性。维护数据的完整性和一致性。 减少数据存储冗余。减少数据存储冗余。 例如,学生表的“班号”取值必须是班级表中“班 号”的存在值。这样可保证不出现没有班级信息的学生。 例如,一个班级的有关班级信息只需在班级表中存 储一次,而不必在学生表中反复存储。 两个表具有能体现实体实际存在关系的公共属性两个表具有能体现实体实际存在关系的公共属性。 两个表建立关系的一般原则 例如,学生表和班级表有实际含义相同的公共 属性“班号”。 该公共属性
23、至少在其中一个表中是主关键字。该公共属性至少在其中一个表中是主关键字。 例如, “班号”在班级表中是主关键字。 (1)外关键字外关键字 两个表建立关系的相关概念 一个表中的主关键字与另一个表中与该主关键字相同的 属性建立联系,这个起到联系作用的属性,称为另一个表的 外关键字,简称外键。例如,“班号”是学生表的外关键字。 (2 2)主表和外表)主表和外表 当两个表关联后,用于建立联系的公共属性作为主关 键字所在的表称为主表,另一个表称为外表。例如,在下 面关系中,班级表是主表,学生表是外表。 用连线指示了 两个表之间的关系, 连线有箭头一端的 表为主表,主表中 用于建立关系的属 性是主关键字;连
24、 线另一端是外表, 外表中用于建立关 系的属性是外关键 字。 主表主表 外表外表 【例例2.6】班级表和学生表之间的一对多关系班级表和学生表之间的一对多关系 。 提示:提示:建立关系的公共属性只是其中一个表的主关 键字时,建立的一定是一对多关系。 学生实体和班级实体存在着属于关系,一个班 级由多名学生构成,任何一个学生都属于且仅属于 某一个班级。 它们通过“班号”可建立一对多关系。 学生实体和优培生实体有包含关系,优培生是学生 的一个子集,而且一个学生只能被选拔一次。它们的共 同属性是“学号”,可以用来建立一对一关系。 主表主表 外表外表 提示:提示:1)主表对外表的限定作用要强于外表对主表的
25、限定作 用,根据实际的关系分析,选择一般性、主导性信息所在的 表作为主表比较合适。 2)当外键也是外表的主键时,即建立关系的公共属 性在两个表都是主关键字时,建立的一定是一对一关系。 【例例2.7】学生表和优培生表之间的一对一关系学生表和优培生表之间的一对一关系 。 【例2.8】教师表和课程表之间的一对多关系。 教师实体和课程实体之间存在授课关系。它们 没有名字相同的属性,但教师表中的属性“工号” 和课程表中的属性“任课教师”,数据类型和含义 相同,且“工号”在教师表中是主关键字,可以用 这对属性建立一个一对多关系,教师表是主表,课 程表是外表。 主表主表 外表外表 【例2.9】如何描述学生表
26、和教师表之间的关系? 学生实体和教师实体之间存在师生关系(任课、指导 教师、班主任等)。 以上结构的表直接建立关系无意义,可以选择以下设计表达以上某 种师生关系: 任课关系。任课关系。通过学生表和课程表之间的关系、以及教师表和课程 表之间的关系,可以找到任课教师信息。 指导教师关系。指导教师关系。可以在学生表中增加一个属性“工号”,用来记 载该生的指导教师,然后利用“工号”来建立学生表和教师表的 关系。 班主任。班主任。在班级表中增加一个属性“工号”,用来记载该班的班 主任,然后在班级表和教师表之间建立关系。由于学生表和班级 表之间已经建立了关系,在应用中,用户可以间接获得这种师生 关系信息。
27、 尽管数据库中的各个表是独立的,但是表与表之间 可以通过外关键字建立相互联系,从而构成一个整体的 逻辑结构。从上图还可以看出,除了外关键字和一些必 需的属性外,这些表中尽可能地减少了数据冗余。 4关系模式关系模式 v表中的行定义(即表头)是实体集相关属 性的集合,称为该表的关系模式关系模式。关系模 式就是对关系的描述,包括关系名、组成 该关系的属性名、属性向域的映象。 v关系模式通常记为: 关系名(属性名1,属性名2,属性名n) 其中主关键字加下划线 v属性向域的映象直接说明为属性的类型、 长度。 v教务管理系统数据库的关系模式(其中加下划 线的属性是主关键字): 学生(学号,姓名,性别,出生
28、日期,班号),班号是外键(班级:班号) 优培生(学号,认定时间,学分绩点),学号是外键(学生:学号) 班级(班号,班名,专业) 课程(课号,课程名,学分,任课教师),任课教师是外键(教师:工号) 选课(学号,课号,成绩),学号外键(学生:学号),课号是外键(课 程:课号) 教师(工号,姓名,性别,进校日期,职称) 关系模式确定后,在数据库物理设计阶段可以用表格 来直观地详细描述关系模式的定义。每一个被定义的 关系模式包括关系名、属性名,以及属性域的类型和 约束、关系模式的主关键字和外关键字。 【例2.10】选课表的关系模型的表格描述。 2.3.2关系完整性约束 数据库必须保证所有表中的数据值与
29、其所 描述的应用对象的实际状态保持一致。 关系模型通过关系完整性约束条件关系完整性约束条件来保证 数据的正确性和一致性。所谓约束条件主要是 指在表和列上定义的规则,数据库管理系统会 依据这些约束条件维护数据完整性。 域完整性规则域完整性规则 实体完整性规则实体完整性规则 参照完整性规则参照完整性规则 1域完整性域完整性 域完整性规定了属性的值必须是属性值 域中的值。 v域完整性(用户自定义完整性): 它是在关系数据 模型定义时,由用户对属性列值的数据类型、长 度、单位、精度、格式、值域范围、是否允许为 “空值”等进行限定。 所谓“空值”就是“不知道”或“无意义”的值。 应当注意,空值不等于数值
30、零,也不等于空字符或 空字符串,因为没有成绩与成绩为零分显然是不同 的。 【例例2.11】表的域完整性规则应用。 35 2实体完整性实体完整性 实体完整性是指关系中的数据纪录在组成主 关键字的属性上不能有空值且主关键字的值不 能相同。 实体完整性主要是为了保障主关键字能唯一标 识关系中的每个记录。 大多数关系数据库都支持实体完整性检查,如 果表中定义了主关键字,系统将进行强制检查。 【例例2.12】表的实体完整性规则应用。 学生表中,“学号”是主关键字。假定向学生表 新加一条学生“王秋水”的记录 系统拒绝该记录的添加,因为它违反了实体 完整性规则,即学生表中已存在一条主关键字取 值为“1103
31、”的记录。 3参照完整性参照完整性 参照完整性要求一个外表的外关键字的取 值必须是其主表主关键字的存在值或空值。 v因为数据库的表之间并不是完全不相关的, 甚至有些属性字段在多个表中重复出现,为了 保证数据完整性,需要对表之间的数据进行约 束。参照完整性是在表之间关系的基础上实施 的表之间的数据约束。 【例例2.13】表的参照完整性规则应用。 在学生表和班级表建立关系后,学生表中“班号”的取值必须 是空值或在班级表中“班号”属性中出现过的值。 如果学生表的班号字段允许为空,它取空值表示该学生还没有 确定班级; 否则只能取班级表出现过的班号值,即班级表中有该班级的记 录。 v对数据库进行修改时,
32、可能会破坏表之间的参照完整性,所以为 了保证数据库中的数据的完整性,应该对数据库的修改加以限制, 这些限制包括:插入约束、删除约束和更新约束。 1)插入约束:)插入约束:当在外表中插入新记录时,必须保证其中的外关键 字值在主表中出现过。 【例例2.14】表的参照完整性的插入约束。向学生表中添 加一条学生“王秋水”的记录 插入约束会拒绝该记录的添加,因为班级表中不存在“班 号”是“88”的班级,该记录违反了参照完整性规则。 2)删除约束)删除约束:当要从主表中删除一条记录时,必须考虑外表数据 的完整性。一般有两种约束。 限制删除,即如果系统检查该记录的主关键字值在某个外表中出现过,则 不允许删除
33、。 级联删除,即如果系统检查该记录的主关键字值在某个外表中出现过,则 在删除主表中该记录的同时,将外表中与主关键字值对应的记录全部删除。 【例例2.15】表的参照完整性的删除约束。删除班级表 中“班号”是“11”的记录 1.限制删除:不允许删除; 2.级联删除:同时删除学生表 所有中”11”班的学生。 3)更新约束:)更新约束:如果要修改主表中的主关键字值,必须考虑外 表数据的一致性。一般有两种约束。 限制更新,即如果系统检查该记录主关键字值在某个外表中出现过, 则不允许更新。 级联更新,即如果系统检查该记录主关键字值在某个外表中出现过, 则在更新主表中该记录的同时,将外表中与主关键字值对应的
34、记录 的外关键字值全部更新。 【例例2.16】 表的参照完整性的更新约束。欲将班级表 中“班号”是“11”的记录的班号更改为“88” 1.限制更新:不允许更新; 2.级联更新:同时更新学生表 所有中“11”为“88”。 v通过以上例子的分析可以发现,保证数据的一致性和 完整性对数据库是至关重要的。 在数据库设计时,必须充分考虑和应用关系完整性规则, 以避免产生数据的不完整和不一致,给应用带来困难。 参照完整性也可以大大减少垃圾数据在数据库中的堆积。 合理地利用关系完整性规则还可以简化应用程序开发,因 为有些数据可以通过关系由数据库系统自动维护。 v目前多数关系数据库都提供了比较完善的约束机制。
35、 只要用户在定义数据库时定义好约束规则,数据库管 理系统会自动维护这些完整性约束来保证数据的完整 性和一致性。 部门 部门号 部门名 主任 01 人事处 M01 02 学生处 M03 03 财务处 M05 职工 职工号 职工名 部门号 工资 001 朱军 01 4700 002 周涛 02 2900 003 董卿 01 5600 025 王百万 03 2900 练习题练习题 在数据库中有如下图所示的两个表,若职工表 的主键是职工号,外键是部门号,部门表的主键是 部门号。在如下数据库操作中,不能成功执行的是 _。 A)从职工表中删除行(025,王百万,03,2900) B)将行(005,乔兴,0
36、4,750)插入到职工表中 C)将职工号为“001”的工资改为5700 D)将职工号为“003”的部门号改为03 2.3.3 关系操作 v关系数据模型的数据操作是以关系代数和关 系演算为理论基础的。 关系表可以看作是记录的集合。传统的集合操作 包括并、交、差、广义迪卡儿积等,这些集合操 作对应了数据库针对行行的基本操作。 关系模型还专门定义了针对列列的操作包括选择、 投影、连接等。所有这些操作的结果,仍然是一 个集合。 v本书在2.5节介绍关系数据库操作的有关理论 基础。 在关系模型的操作理论支持下,关系数据 库主要支持以下一些基本操作(查、插、删、 改): v插入:插入:在一个表中插入一条或
37、多条新记录。 v删除:删除:从一个表删除一条或多条满足条件的 记录。 v修改:修改:在一个表中修改满足条件的记录的某 些字段的值。 v查找:查找:从一个或多个表中提取满足条件 的数据、生成计算列或汇总数据。 关系数据库基本操作 关系数据库操作语言关系数据库操作语言 v关系数据库的基本操作语言是SQL(Structured Query Language)。 vSQL语言以简洁的语法支持数据库的各类操作 (查插删改)。 vSQL语言独立于数据库本身,独立于使用的机 器、网络和操作系统。 2.4 关系数据库体系结构 从数据应用的角度来看,使用数据库有4类人员:用 户、应用程序员、系统分析员和数据库管
38、理员。由于 他们对数据库的认识、理解和接触范围各不相同,从 而形成了各自的数据库视图。 所谓视图是指观察、认识和理解数据的角度、范围 和方法。 根据各类人员与数据库的不同关系,可把视图分为3 种: 对应于用户和应用程序员的外部视图; 对应于系统分析员以及数据库管理员的逻辑视图; 对应于数据库管理员的内部视图。 2.4.1 关系数据库体系结构 v从数据应用的角度来看,不同用户有各自的数据库 视图视图。由此形成数据库的三级模式结构,即外模式、 逻辑模式和内模式, 系统分析员&数据 库管理员 用户和应用程序员 数据库管理员 v数据库管理系统在三个模式间提供了两级映射:外模式与 模式间的映射、模式与内
39、模式间的映射。 1模式 v模式又称逻辑模式逻辑模式,对应于一个应用的所有关系模 式的集合以及关系完整性约束、所允许的关系操作 就构成了关系数据库的逻辑模式。它是由数据库设 计者综合所有用户的数据,按照统一的观点构造的 全局逻辑结构,是对数据库中全部数据的逻辑结构 和特征的总体描述,是所有用户的公共数据视图。 它是系统分析员以及数据库管理员所看到的全局数 据库视图。 v一个数据库只有一个逻辑模式。 v逻辑模式可以采用数据定义语言DLL描述。 2外模式 v外模式外模式又称子模式子模式或用户模式用户模式,对应于用户 级,是某个或几个数据库用户和应用程序员 所看到的数据库的局部数据视图。 v外模式是从
40、模式导出的子模式,可以利用数 据操纵语言 DML对外模式进行操作。 v一个数据库可以有多个外模式。 v一个外模式只是用户的一个视图,是关系模式的一个局部。 关系模型的外模式除了指出某一类型的用户所用到的数据 外,还要指出这些数据与关系模式中相应数据的关系,即 要指出关系模式与外模式之间的变换。 v外模式可通过定义“视图”或“查询”来从“基本关系模 式”导出。 “视图” :为了方便查询和处理而设计的数据虚表, 在数据库中只存储结构的定义,而没有存储对应的数 据,数据来自数据库中的基本表。 “查询”:根据指定条件对基本表进行查询所得的结 果表,是临时表,虽然是实际存在的表,但数据也是 来自基本表,
41、且一般不再使用,具有一次性和冗余性 的特点 【例2.17】从学生表变换得到学生生日视图。 v如果只对学生表中的“姓名”和“出生日期”感兴趣, 可定义子模式:学生生日(姓名,出生日期),则形 成一个视图,从模式“学生表”导出子模式“学生生 日”的变换如图所示。 【例2.18】从学生表、课程表和成绩表变换得 到学生成绩子模式。 如果希望获得“姓名”,“课程名”和“成 绩”,这三个字段分布在三个表中,可定义子模式: 学生成绩(姓名,课程名,成绩),从模式“学生 表”、“课程表”和“选课表”导出子模式“学生 成绩”的变换如图所示。 3内模式 v内模式内模式又称存储模式存储模式,是全体数据库数据的 机器
42、内部表示或存储结构描述,是真正存放在 外存储器上的物理数据库,它描述了数据记录、 索引、文件的组织方式和在存储介质上的物理 结构。内模式是数据库管理员创建和维护数据 库的视图。 v一个数据库只有一个内模式。 内模式关注的问题 v关系存储 数据库逻辑结构中的关系模式与系统平台无关,但数据库存 储模式必须考虑具体的计算机系统计算机系统和所选定的DBMS,采用 它们所支持的数据类型描述数据类型描述和完整性约束规则完整性约束规则来定义数据表, 并选取DBMS所支持的数据库文件结构存储方法数据库文件结构存储方法,设计数据数据 库文件的存储位置库文件的存储位置。 v关系存取 在数据库管理系统中,关系表中的
43、数据按记录存储。为了提 高对数据记录的查询效率,通常采用索引索引方法来建立数据记 录的存取顺序。索引与书的目录或字典检字索引的原理是一 样的。数据库管理系统一般集成了多种复杂的快速查找算法, 但这些算法基本上都是以数据记录排序为前提的。 索引的概念 索引索引是由一个表中的一列或者若干列的值与其对应 的记录在数据表中地址所组成。 数据库中一个表的存储由两部分组成:数据页面和 索引页面。 创建索引的目的目的是为了改善查询性能、加快依据索 引字段对表中数据行的检索、强制保持表的数据唯一 性等。 索引虽然能改善查询性能,但也耗费了磁盘空间, 并且当对数据表进行数据增加、修改或删除时,系统 需要花费一些
44、时间来维护索引,所以通常不在一个表 上建立太多索引,也不建立不常使用的索引。 一般来说,需要在下面这些地方建立索引: l在主键和外键上创建索引。 l在检索频繁的字段上建立索引。 l在经常需要排序的字段上建立索引。 索引的分类 1)聚集索引 聚集索引是对表中的数据行按指定索引字段值进 行排序后再重新存储到磁盘上,使数据表的物理 顺序与索引一致。聚集索引的优点是它的检索速 度比非聚集索引快。缺点是聚集索引重组了表的 物理顺序,维护索引的时间和空间消耗都比较大。 每个表只能建立一个聚集索引。 2)非聚集索引 非聚集索引具有完全独立于数据行的结构,建立 非聚集索引不需要将数据表中的数据行按索引字 段值
45、重新排序。 非聚集索引的优点是不需要改变数据行的存储顺 序,而且可以建立多个非聚集索引。 4数据库的三级模式的关系 v数据库的三级模式是数据模型在三个级别的 抽象,使用户能够逻辑地、抽象地处理数据 而不必关心数据在计算机中的表示和存储, 把数据的具体组织交给数据库管理系统。为 了实现三个抽象层次间的联系和转换,数据 库管理系统在三个模式间提供了两级映象: 外模式与模式间的映象。保证了数据的逻辑独立性, 即当数据库的逻辑结构发生变化时,可通过调节外 模式与模式间的映象关系,从而保证外模式不变, 那么建立在外模式基础上的应用程序也不变。 例如,有关系学生(学号,姓名,性别,年龄,专业),并 为计算
46、机专业学生建立了外模式CS学生(学号,年龄),应 用程序中根据外模式“CS学生”编写。在后期数据库的应用 中,发现数据库中“年龄”字段由于时间变化年龄值不确定, 所以将其改为“出生年月”。这时我们只要通过调整从模式 /外模式的映像就可以保持外模式不变了,即原来外模式中 “年龄”直接从学生关系中获得,改为外模式中的“年龄” 通过“出生年月”计算得到,外模式不变,建立在外模式上 的应用程序也不用修改,这样,就实现了数据的逻辑独立性。 模式/内模式的映象 模式/内模式的映象保证了数据的物理独立性, 即当数据的存储结构发生变化时可以通过调 节模式/内模式之间的映像关系从而保证模式 不变。因为模式不变,
47、外模式也就不变,建 立在外模式上的应用程序也不变。 例如: 学生关系的存储位置、存取方式发生的变化,这时 可以通过调整模式/内模式之间的映像关系从而保证 模式不变。 2.4.2一个教务系统关系数据库 v一个简单的教务系统的逻辑数据库结构和在 SQL Server下的数据库设计(包括数据库逻 辑结构和数据库物理结构),熟悉该数据库 并体会数据库基本知识的应用,本书后续章 节的例题都以该数据库为基础。 1教务系统数据库的逻辑数据库结构 2教务系统数据库的逻辑数据库结构 各个表的数据库物理结构设计如表2.12.6所示。这里只给出 各关系表设计和完整性约束设计、索引设计。 2.5关系模型的运算理论简介
48、 了解关系模型的数学基础,对于理解关系模 型、设计数据模式和实现应用很有帮助。 关系定义 关系运算 2.5.1关系定义 在关系模型中,无论是实体还是实体之间 的联系均由单一的结构类型即关系(二维表) 来表示。下面以关系代数理论引出关系定义。 1域域 域是一组具有相同数据类型的值的集合。例如,非 负整数、整数、实数、长度小于25字节的字符串集合、 0,l、大于等于0且小于等于I00的正整数等都可以是 域。域中元素的个数称为域的度,也称基数。 【例例3-21】下列三个集合表示的域。 D1=陈佳迪,徐瑶琪,表示学生的集合,度是2; D2=男, 女,表示性别的集合,度是2; D3=上海, 浙江, 山西
49、,表示籍贯的集合,度是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=男, 女,表示性别的集合,度是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 卫生间防水方案
- 老旧管网数字孪生项目可行性研究报告
- 口腔局部麻醉规范化操作培训
- 临时用电安全管理规程
- 县域基层医疗机构急诊科标准化建设验收规范
- 生活水池防水方案
- 植物基发酵饮项目可行性研究报告
- 研学活动安全培训课件
- 土石方工程渣土消纳场排水设计
- 框剪结构施工组织设计编制规范
- 《飞向太空港》(李鸣生)深度解析
- 一元二次方程应用说课课件
- 冬季预防抑郁2026知识培训
- 2026中国建筑工程勘察行业市场现状发展趋势分析投资评估规划分析研究报告
- 人防有限空间作业监理实施细则
- 三1班小学生竞选班委班干部竞选简历
- 肺功能测定临床应用及结果的解读
- 考三轮车三力测试题及答案
- 电机维修技术协议与服务标准范本
- 三年级上册语文课件《整本书阅读稻草人》-人教部编版
- 张掖介绍课件
评论
0/150
提交评论