数据库系统原理 J.D.Ullman 国防工业出版社 数据库原理与方法 郑若忠,王鸿武 湖南科技出版社 参考资料: 数据库系统原理 J.D.Ullman 国防工业出版社 数据库原理与方法 郑若忠,王鸿武 湖南科技出版社 数据库系统导论 C.J.Date 科学出版社 任一实际数据库系统 2019/5/17 数据库系统原理
第 一 章 绪 论 1.1 数据管理技术的发展(P6) 1.1.1 人工管理阶段(50年代) 2019/5/17 第 一 章 绪 论 1.1 数据管理技术的发展(P6) 1.1.1 人工管理阶段(50年代) 背景:计算机用于科学计算,硬件没有直接存取存储设备, 软件没有专门的数据管理软件,数据处理为批处理方式。 特点: 1.数据不保存。 2.数据与程序不独立,程序员要规定数据的所有逻辑结构和物理 结构。 3.数据面向应用,程序之间有大量重复数据。 2019/5/17 数据库系统原理
(3)文件已经多样化.由于有了直接存取存储设备,也就有了 索引文件,链 接文件,直接存取文件等。 (4)数据的存取基本上以记录为单位. 2019/5/17 1.1.2 文件系统(60年代)P8 背景: 特点: (1)数据长期保存,反复处置。 (2)由于有软件进行数据管理,程序和数据之间有软件提供存 取方法进行转 换,文件的逻辑结构与存储结构由系统进行转换,使程序与数据有了一 定的独立性.这样程序员可以集 中精力于算法,而不必过多地考虑物理 细节。节省维护程序的工作量. (3)文件已经多样化.由于有了直接存取存储设备,也就有了 索引文件,链 接文件,直接存取文件等。 (4)数据的存取基本上以记录为单位. (5)文件系统中文件基本上对应于某个应用程序。数据仍是面向应用的,不 宜共享,冗余度大,空间浪费,数据维护困难.容易造成数据的不一致 性。 背景:计算机大量用于管理.硬件有了直接存取存储设备。有专门的管理数据软件(属于操作系统的一部分,用以提供从逻辑文件到物理文件的存取方法),从处理方式讲不仅有了文件批处理,而且能够联机实时处理。 2019/5/17 数据库系统原理
1.1.3 1.1.3 数据库系统(70年代左右) 背景:管理规模大,信息量大,共享要求高。大容量磁盘,硬件价格底,软件价格高。 2019/5/17 1.1.3 1.1.3 数据库系统(70年代左右) 背景:管理规模大,信息量大,共享要求高。大容量磁盘,硬件价格底,软件价格高。 定义:数据库系统是实现有组织地、动态地存储大量相关联数据、方便多用户访问的计算机硬软件资源组 成的系统。它与文件系统的重要区别在于数据的共 享性、交叉访问以及与应用程序的高度独立性。 数据库的特点: 面向全组织的复杂的数据结构,使记录之间有语义联系 提高数据共享性、减少数据冗余度。 共享指多种应用、多种语言互相覆盖地共享数据集合。 冗余指包含重复数据,浪费存储空间,引起修改不一致。 例:STUDENT(学号,姓名,班级,课程号,课程名) TEACHER(工号,姓名,职称,课程号,课程名) STUDENT(学号,姓名,班级,课程号) TEACHER(工号,姓名,职称,课程号) COURSE(课程号,课程名) 5.(虽然有的系统允许用户之间实现以文件为单位的数据共享,仍未能实现以记录和数据项为单位的数据共享,文件本身对应于一个或几个应用程序,面向应用,反映不了现实世界事物之间的内在联系。 {数据库不是一个单单扩展人们记忆的功能,而是帮助人们控制相关事物,是一个系统} 2019/5/17 数据库系统原理
数据库与图书馆的类比 1.1.3类比 序号 数据库 图书馆 1 数据 图书 2 外存 书库 3 用户 读者 4 用户标识(权限) 借书证 序号 数据库 图书馆 1 数据 图书 2 外存 书库 3 用户 读者 4 用户标识(权限) 借书证 5 数据模型 书卡格式 6 数据库管理系统 图书馆管理员 7 数据的物理组织方法 图书的物理存放方法 8 用户对数据的操作 读者对图书馆的访问 (检索、插入、删除、修改) (借书、还书) 9 第8项独立于第7项 第8项独立于第7项 2019/5/17 数据库系统原理
1.2 提高数据独立性: 应用程序对数据的存储结构和存取方法有较高的独立性。 (不随) (的改变而改变) 2019/5/17 1.2 提高数据独立性: 应用程序对数据的存储结构和存取方法有较高的独立性。 (不随) (的改变而改变) 简化程序编制,减少程序的维护和修改。 统一的数据控制功能: 安全性:指系统对数据的保护能力,防止数据泄露、控制授权操作。{文件无此问题} 完整性:数据的正确、有效和相容。故障恢复。 并发控制:多用户同时对数据存取修改时控制和协调。 数据的最小存取单位是数据项。 1.2 数据库系统三级模式结构(P33) ANSI/X3/SPARC 1975年提出报告 外模式(子模式、用户视图、用户级) 模式(概念模式、整体用户视图、概念级) 内模式(存储模式、物理级) {必须有一个软件系统DBMS进行统一控制} 2019/5/17 数据库系统原理
三级模式结构:外模式、模式和内模式,如图1.24。 2019/5/17 数据库系统原理
定义:也称概念模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。 理解: ① 一个数据库只有一个模式; 模式(Schema) 定义:也称概念模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。 理解: ① 一个数据库只有一个模式; ② 是数据库数据在逻辑级上的视图; ③ 数据库模式以某一种数据模型为基础; ④ 定义模式时不仅要定义数据的逻辑结构(如数据记录由哪些数据项构成,数据项的名字、类型、取值范围等),而且要定义与数据有关的安全性、完整性要求,定义这些数据之间的联系。 2019/5/17 数据库系统原理
③ 外模式是保证数据安全性的一个有力措施。 外模式(External Schema) 定义:也称子模式(Subschema)或用户模式,是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。 理解: ① 一个数据库可以有多个外模式; ② 外模式就是用户视图; ③ 外模式是保证数据安全性的一个有力措施。 2019/5/17 数据库系统原理
② 一个表可能由多个文件组成,如:数据文件、索引文件。 内模式(Internal Schema) 定义:也称存储模式(Storage Schema),它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式(例如,记录的存储方式是顺序存储、按照B树结构存储还是按hash方法存储;索引按照什么方式组织;数据是否压缩存储,是否加密;数据的存储记录结构有何规定)。 理解: ① 一个数据库只有一个内模式; ② 一个表可能由多个文件组成,如:数据文件、索引文件。 2019/5/17 数据库系统原理
Fig.SC P.34图 2019/5/17 数据库系统原理
① 在每一个外模式中,都要定义一个外模式/模式映象; ② 一个模式可以对应多个外模式; 定义:由模式生成外模式的规则。 理解: ① 在每一个外模式中,都要定义一个外模式/模式映象; ② 一个模式可以对应多个外模式; ③ 当模式改变时,由数据库管理员对各个外模式/模式的映象作相应改变,可以使外模式保持不变,从而应用程序不必修改,保证了数据的逻辑独立性。 举例:如前例中,若用户模式的“学生成绩单”修改为学生成绩单(学号,姓名,课程号,课程名,成绩),只须改为由三个关系映射即可。 2019/5/17 数据库系统原理
举例:如前例中,若数据库管理系统升级了,管理系统一般会将以前的模式用新存储方式进行存储。 模式/内模式映象 定义:说明模式在物理设备中的存储结构。 理解: ① 模式/内模式映象通常在内模式中定义; ② 一个模式只能有一个内模式; ③ 当数据库的存储结构改变了(例如采用了更先进的存储结构),由数据库管理员对模式/内模式映象作相应改变,可以使模式保持不变,从而保证了数据的物理独立性。 举例:如前例中,若数据库管理系统升级了,管理系统一般会将以前的模式用新存储方式进行存储。 2019/5/17 数据库系统原理
1.3\1.3.1 DB三级结构特点: 数据的物理独立性P36 数据的逻辑独立性P36 概念模式解决共享问题 2019/5/17 1.3\1.3.1 DB三级结构特点: 数据的物理独立性P36 数据的逻辑独立性P36 概念模式解决共享问题 用户只见局部视图,起到安全保密作用 1.3 数据模型(P13):对现实世界的模拟 1.3.1 信息结构 概念:信息、数据、信息数据的关系、信息处理 信息的三个领域: 现实世界:客观世界事物及其联系。分“对象”和“性质”两类,分“特殊事物”和“共同事物”两级。 观念世界:现实世界在人们头脑中的反映(实体模型、概念模型)。分“对象”和“属性”两类,分“总体”和“个体”两级。 数据世界:观念世界中信息的数据化(数据模型)。分“记录”和“数据项”两类,分“型”和“值”两级。 {上述结论只对完美的DBMS而言,有的软件的三级划分不清晰,有的仅支持一级结构,因此不同系统的独立性程度不同} 1.3.1 {数据库的核心问题是数据模型,为了得到正确的模型,首先要充分了解客观事物} 2019/5/17 数据库系统原理
1.3.2 1.3.2概念模型的表示方法:实体——联系方法(Entity-Relationship Approach) 对概念模型的要求: 语义表达能力强、易于被用户理解、独立于任何DBMS、 容易向各类型的DBMS转换 概念(P15): 实体(型、值) 型:对某一类数据的结构和属性的说明。 如:学生(学号,姓名、性别,系名,年龄,年级)。 值:是型的一个具体值。 如:(95004,王小明,女,社会学,19,95)。 属性(型、值) 联系 E-R方法: 长方形表示实体 长方形表示实体 菱形表示实体间的联系: 2019/5/17 数据库系统原理
1.3.21 两实体间的联系 一对一(one to one):若对实体A中的每一个个体,实体B中至多有一个个体与之联系,反之亦然。则称实体A与实体B具有一对一的联系。记为1:1。 一对多(one to many):若对实体A中的每一个个体,实体B中有多个个体与之联系,反之,若对实体B中的每一个个体,实体A中至多只有一个个体与之联系,则称实体A与实体B具有一对多的联系。记为1:n。 多对多(many to many):若对实体A中的至少一个个体,实体B中有多个个体与之联系,反之,若对实体B中的至少一个个体,实体A中也有多个个体与之联系,则称实体A与实体B具有多对多的联系。记为m:n。 两实体间两种以上联系 2019/5/17 数据库系统原理
两个以上实体间的联系 两个以上实体间的联系 同一实体内的联系 同一实体内的联系 椭圆形表示属性 注: 1. 实体有属性,联系也可能有属性。 2019/5/17 1.3.3 两个以上实体间的联系 两个以上实体间的联系 同一实体内的联系 同一实体内的联系 椭圆形表示属性 注: 1. 实体有属性,联系也可能有属性。 2. 一张ER图上,实体名、属性名只能出现一次。 3. ER图上略去属性,成为ER简图。 例ER图 例 ER图 {模型的好坏直接影响DB的性能,目前流行三种} 2019/5/17 数据库系统原理
1.3.3 数据模型—形式化描述数据、数据之间的联系以及有关语义约束的方法 1.3.3 数据模型—形式化描述数据、数据之间的联系以及有关语义约束的方法 三个组成部分(P21) : 基本的数据结构类型(静态特性) 定义:数据库对象类型的集合,包括两类:①与数据类型、内容、性质有关的对象;②与数据之间联系有关的对象。 理解: ① 第一类对象如:关系模型中的域、属性、关系等; ② 第二类对象如:网状模型中的系型; ③ 数据结构是描述数据模型最重要的方面,通常按数据结构的类型来命名数据模型。如:层次结构的数据模型是层次模型,网状结构的数据模型是网状模型,关系结构的数据模型是关系模型。 2019/5/17 数据库系统原理
施于其上的操作(动态特性) 完整性约束条件 定义:对数据库中各种对象(型)的实例(值)允许进行的操作的集合,包括操作及有关操作规则。 理解: ① 数据库主要有检索和更新(包括插入、删除、修改)两大类操作。 ② 数据模型必须定义这些操作的确切含义、操作符号、操作规则(如优先级)以及实现操作的语言。 完整性约束条件 定义:是一组完整性规则的集合。 完整性规则是给定的数据模型中数据及其联系所具有的制约和储存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效、相容。 2019/5/17 数据库系统原理
1.3.4 1.3.4 层次模型(Hierarchical Data Model)——以记录型为结点的树形模型 满足条件: 有且只有一个结点无双亲,此结点为树根 其他结点有且仅有一个双亲 (P21) 2019/5/17 数据库系统原理
层次模型即树形模型,树的每个结点为一个片段型,片段由字段组成。 2019/5/17 3.2 fig1 层次模型的型和值 层次模型即树形模型,树的每个结点为一个片段型,片段由字段组成。 注: 仅有一个根片段;双亲、子女、从属片段;兄弟;后代;叶片段;层数 2019/5/17 数据库系统原理
3.2 fig2 层次模型的值:每个片段型可以包括任意有限个片段值,就任何片段型中的一个给定的片段值而言,它可以包括它的任何子女片段型中的任意有限个(可以没有)片段值作为自己的孩子。 2019/5/17 数据库系统原理
多对多联系在层次模型中的表示(将多对多联系转化为一对多联系 ) 分解: 冗余结点法 虚拟结点法 2019/5/17 数据库系统原理
3.4.3 层次模型的存储结构(存储数据及数据间的联系): 邻接法 链接法 层次指针(PTR=H HIER) 邻接法存储 2019/5/17 数据库系统原理
第一儿子指针—--指向其下每个儿子的第一个片段值 子女—孪生指针(PTR=T TWIN) 第一儿子指针—--指向其下每个儿子的第一个片段值 向前孪生指针——同一片段型的各个值按顺序值的递增顺序链接。 2019/5/17 数据库系统原理
1. DBD NAME=GRT ACCESS=HDAM 2. DATASET DDl=GRTHDAM, DEVICE=3330, BLOCK=1024 3. SEGM NAME=D, BYTES=29, FREQ=20, PTR=T 4. FIELD NAME=(D#, SEQ, U),BYTES=3, START=1, TYPE=C 5.FIELD NAME=DN,BYTES=25,START=4,TYPE=C 6. FIELD NAME=L,BYTES=1,START=29,TYPE=C 7. SEGM NAME=P, BYTES=44, FREQ=30, PTR=T,PARENT=D 8. FIELD NAME=(E#,SEQ, U), BYTES=4,START=1, TYPE=C 18.FIELD NAME=S, BYTES=20, START=25, TYPE=C 19.DBDGEN 20.FINISH 21.END 2019/5/17 数据库系统原理
① 插入:如果没有相应的双亲结点值就不能插入子女结点值。如:前例中,若新调入一名教授,在未分配到某个系以前,不能将新教授插入到数据库。 层次模型数据操纵和完整性约束 数据操作:查询、插入、删除和修改。 完整性约束: ① 插入:如果没有相应的双亲结点值就不能插入子女结点值。如:前例中,若新调入一名教授,在未分配到某个系以前,不能将新教授插入到数据库。 ② 删除:如果删除双亲结点值,则相应的子女结点值也被同时删除。如前例中,若删除某教授,需要首先删除属于该教授的所有研究生。 ③ 修改:应修改所有相应记录,以保证数据的一致性。如前图中,若一个学生要改姓名,则两处学生记录值均要修改。 1、2 3 2019/5/17 数据库系统原理
1. 对于每一个结点,只需指出它的双亲就能确定整体结构对应关系不必命名 2. 查找路径从根开始,一经确定不能改变 优点 注: 1. 对于每一个结点,只需指出它的双亲就能确定整体结构对应关系不必命名 2. 查找路径从根开始,一经确定不能改变 优点 ① 数据模型比较简单,操作简单; ② 对于实体间联系是固定的,且预先定义好的应用系统,性能较高; ③ 提供良好的完整性支持。 缺点 ① 不适合于表示非层次性的联系; ② 对插入和删除操作的限制比较多; ③ 查询子女结点必须通过双亲结点; ④ 由于结构严密,层次命令趋于程序化。 2019/5/17 数据库系统原理
1.3.5 网状模型(Network Data Model)——以记录型为结点的网络模型(代表产品:DBTG系统模型类产品) 满足条件: 可以有一个以上结点无双亲。 至少有一个以上的结点有多于一个双亲 数据结构 ① 用网状结构来表示各类实体以及实体间的联系,层次模型是网状模型的一个特例。 ② 每个结点表示一个记录类型(实体),结点之间的连线表示记录类型间的一对多的父子联系。 ③ 每个记录类型可包含若干个字段(属性)。 2019/5/17 数据库系统原理
与层次模型的区别: 1.子女到双亲之间的联系不唯一。 2.两个记录型之间可有两种或两种以上联系。 2019/5/17 数据库系统原理
模型 学生/选课/课程网状数据库的一个值 2019/5/17 数据库系统原理
① 插入:允许插入尚未确定双亲结点值的子女结点值。 ② 删除:允许只删除双亲结点值。 ③ 修改:只需修改指定记录即可。 数据操作与完整性约束 数据操作:查询、插入、删除和修改。 完整性约束: ① 插入:允许插入尚未确定双亲结点值的子女结点值。 ② 删除:允许只删除双亲结点值。 ③ 修改:只需修改指定记录即可。 2019/5/17 数据库系统原理
存储结构 存储内容:数据本身;数据之间的联系。 链接法(包括:单向链接、双向链接、环状链接、向首链接等)(P29)。 2019/5/17 数据库系统原理
② 数据独立性较差。由于实体间的联系本质上通过存取路径指示的,因此应用程序在访问数据时要指定存取路径。 优缺点 优点 ① 能够更为直接地描述现实世界; ② 具有良好的性能,存取效率较高。 缺点 ① 数据定义语言(DDL)极其复杂; ② 数据独立性较差。由于实体间的联系本质上通过存取路径指示的,因此应用程序在访问数据时要指定存取路径。 2019/5/17 数据库系统原理
1.3.6 1.3.6 关系模型(Relational Data Model)——直观上是一个二维表 术语:关系、元组、属性、关键字、域、分量、关系模式 2019/5/17 数据库系统原理
1.3.7 关系模型的组成: 数据结构:关系(同时表示实体及联系) 关系操作:用关系代数中的并、交等表示,集合操作。 数据完整性:关系DBMS提供定义和检验完整性的机制。 特点: 有严格的数学概念基础 关系是规范化的关系,基本规范化条件是每个分量是不可再分的数据项 实体间的联系仍用关系表示(关系模型概念单一) 如:学生、课程、学生与课程多对多的联系(即学生选课)均可用关系来表示,如下: 学生(学号,姓名,年龄,性别,系名,年级) 课程(课程号,课程名,学分) 学生选课(学号,课程号,成绩) 用户操作结果仍是一张表 2019/5/17 数据库系统原理
使用的容易程度(程序的设计和查询表达的容易程度) 实现效率(存储空间和响应时间) 面向对象的模型(ch13) 1.3.7 三大模型的比较 使用的容易程度(程序的设计和查询表达的容易程度) 实现效率(存储空间和响应时间) 2019/5/17 数据库系统原理
1.4 1.4 带有数据库的计算机系统构成(P34) 1.4.1 计算机基本系统:硬件、软件(① OS,如:Windows 2000 Server、② DBMS,如:SQL Server 2000、③ 开发工具,如:Delphi 7.0,VB 6.0、PB④ 应用系统,如:学生管理信息系统) 1.4.2 数据库:与一个特定组织的各项应用相关的全部数据的汇集 1.4.3 数据库用户:初等用户、应用程序员、系统分析员、DBA(Data Base Administrator)(其职责见P35)。 注:各用户视图见P35。 2019/5/17 数据库系统原理
1.26。 各种人员的数据视图 2019/5/17 数据库系统原理
1.4.4 数据库管理系统DBMS(Data Base Management System)(P4) 目的:用一组软件来有效地实现数据库三级之间的转换,把用户对数据库的操作转化到物理级去执行。增进数据的安全性、完整性,提高数据的独立性。 主要职能(P4): 描述数据库:三级结构及其映射,约束 操作数据库:四种基本操作 控制数据库:安全性控制、完整性控制、并发控制、故障恢复 数据库建立和维护 2019/5/17 数据库系统原理
1.4.5 1.4.5 存储数据库数据的过程(DBMS和OS的关系)(P317) DBMS组成 数据描述语言DDL(Data Description Language) 数据操纵语言DML(Data Manipulation Language) 宿主型 自含型 数据运行控制系统DBCS(Data Base Control System) 1.4.5 存储数据库数据的过程(DBMS和OS的关系)(P317) 用户程序A向DBMS发出调用数据的命令 DBMS分析命令,从子模式取得信息 DBMS取出模式,找到对应存储模式 DBMS查看存储模式,决定访问数据的物理文件、设备、地址等 DBMS向OS发出读块操作命令 OS 和DB相互作用,将指定地址中的数据读入系统缓冲区 DBMS将数据映射成所需访问的逻辑记录 DBMS将逻辑记录送到用户工作区,并将操作状态信息返回给用户 记载系统工作日志 2019/5/17 数据库系统原理
Fig.DBMS 2019/5/17 数据库系统原理
ERn 2019/5/17 数据库系统原理
E-R 2019/5/17 数据库系统原理
ER1 2019/5/17 数据库系统原理
2019/5/17 数据库系统原理
如果属性本身具有描述性信息,应归入实体类 实体:一个对象、一个事件或一项活动 实体用属性来说明 如果属性本身具有描述性信息,应归入实体类 实体成员的强制性:如果一个联系所关联的实体中的每个个体都必须具有该联系,则说该实体在这种联系下是强制性的,否则称非强制性的。 例: 报告 出版 项目 1 n 在实现方案中,对强制性实体应规定一条完整性限制,即不具备这种关系的实体类型成员在数据库中是不存在的。 2019/5/17 数据库系统原理
子类:如果实体1的每个个体同样也是实体2的每个个体,那么实体1即为实体2的子类。 例:“雇员”可分为“秘书”、“技术员”、“工程师”等,加以区分。这些实体共享“雇员”的属性,但又是雇员的不同种类,所以,它们是“雇员”的子类,而“雇员”是他们的超类(父类)。 在数据库实现阶段约束规则为:在数据库中,子类的个体必须是超类的个体。反之不然。 子类和父类之间关系由一种被称为 IS-A 联系的特殊 1:1 联系来表示。子类共享其超类的所有属性(继承),也可以拥有附加属性和联系。任何子类的 key 也是其超类的 key. 2019/5/17 数据库系统原理
雇员 n IN 1 部门 1 IS-A 1 1 经理 1 MA 2019/5/17 数据库系统原理