本书第一章,介绍了一些数据库的基本概念,是理解后序章节的基础。
笔记基本上对这些基础概念的摘录。
做笔记的目的,一是加深记忆和理解,二是方便以后资料查找。
1.1 数据库系统概述
1.1.1 数据库系统的4个基本概念
- 数据(Data)
- 数据库(DB)
- 数据库管理系统(DBMS)
- 数据库系统(DBS)
数据:
定义:描述事物的符号记录称为数据。
数据的含义称为数据的语义,数据与其语义是不可分的。
数据库:
定义:数据库是长期存储在计算机内、有组织的,可共享的大量数据的集合。
特点:
- 永久存储
- 有组织 (按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性)
- 可共享 (数据库中的数据能在保持一致性的前提下,同时为多个应用程序使用)
数据库管理系统
定义:DBMS是位于用户和操作系统之间的一层数据管理软件。
主要功能:
数据定义功能
- 数据定义语言(DDL),实现表结构的修改等
数据组织、存储和管理
- 确定以何种文件结构和存储方式来组织数据,提高存储空间利用率和方便存取
数据操纵功能
- 数据操纵语言(DML),实现增删改查等
数据库的事务管理和运行管理
- 保证事务的正确运行,确保数据的安全性、完整性和并发一致性,以及发生故障后的系统恢复
数据库的建立和维护功能
- 建立:初始数据输入、数据库转储、恢复功能
- 维护:性能监视、分析功能等
其他功能
与其他软件系统的通信功能
不同数据库系统之间数据转换功能
异构数据库之间互访和互操作功能等
数据库系统
定义: DBS是由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统。
1.1.2 数据管理技术的三个发展阶段
- 人工管理阶段
- 文件系统阶段
- 数据库系统阶段
人工管理阶段
特点:
- 数据不保存
- 指不保存在计算机上,比如存储在纸带上的数据,拿过来输入,跑完程序直接拿走
- 应用程序管理数据
- 比如程序将数据写到纸带上,数据怎样的组织形式,完全由程序员编写的代码决定
- 数据不共享
- 数据集与程序一对一,同一数据集无法同时在跑在多个程序上
- 数据不具有独立性
- 数据结构修改后,对应的应用程序必须做相应的修改。数据依赖于应用程序,缺乏独立性
文件系统阶段
特点:
数据可以长期保存
- 磁盘属于计算机的一部分,数据可长期保存在计算机上
由文件系统管理数据
文件系统把数据组织成相互独立的数据文件,提供文件的打开、关闭、存取等功能
感觉单个文件内的数据,还是由应用程序来管理
缺点:
- 数据共享性差,冗余度大
- 单个文件与应用程序一对一,同一数据要想被多个程序使用,需冗余地建立多个文件与之对应
- 数据独立性差
- 文件内的数据结构修改,对应程序也需修改
数据库系统阶段
背景:
- 硬件价格下降,软件价格上升(数据存储成本降低,软件维护成本升高,要求数据独立性更强)
联机实时处理要求增多
多用户、多应用共享数据的需求增多
特点:
- 共享性高,冗余度小
- 具有高度的物理独立性和一定的逻辑独立性
- 物理独立性 指用户程序与数据库中数据的物理存储是相互独立的。应用程序处理的只是数据的逻辑结构。
- 逻辑独立性 指用户程序与数据库中数据的逻辑结构相互独立。
- 整体结构化,用数据模型描述
- 由数据库管理系统管理数据
- 数据安全性保护
- 数据完整性保护
- 并发控制
- 数据库恢复
1.2 数据模型
定义:
- 数据模型是对现实世界数据的特征抽象。
- 数据模型是用来描述数据、组织数据、和对数据进行操作的。
- 数据模型是数据库系统的核心和基础
数据模型应满足三方面的要求:
- 能比较真是的模拟显式世界
- 能容易为人所理解
- 便于在计算机上实现
单一数据模型很难同时满足以上要求。
数据库系统中,针对不同的使用对象和应用目的,采用不同的数据模型。
1.2.1 两类数据模型
根据模型应用的不同目的,分为两大类(层次):
概念模型
- 也称信息模型,按照用户观点对数据和信息建模,主要用于数据库设计
逻辑模型和物理模型
逻辑模型
- 按计算机系统的观点对数据进行建模,主要用于数据库管理系统的实现
- 分类
- 层次模型
- 网状模型
- 关系模型
- 面向对象数据模型
- 对象关系数据模型
- 半结构化数据模型
- 物理模型
- 对数据最底层的抽象,描述数据在系统内部的表示方式和存取方法,是面向计算机系统的
1.2.2 概念模型
用于信息世界的建模,是显示世界到信息世界的第一层抽象。
信息世界的一些基本概念:
- 实体(entity)
- 客观存在并可相互区别的事物称为实体。
- 对应数据表中的一条完整数据
- 属性(attribute)
- 实体所具有的某一特性称为属性。
- 对应数据表中的列
- 码(key)
- 唯一表示实体的属性集称为码。
- 实体型(entity type)
- 具有相同属性的实体必然具有共同的特征和性质。用实体名及其属性名集合来抽象和刻画同类实体,称为实体型
- 例如,学生(学号,姓名,性别,出生年月,所在院系,入学年份)
- 实体集(entity set)
- 同一类型实体集合称为实体集。
- 例如,全体学生就是一个实体集
- 联系(relationship)
- 实体内部的联系指组成实体的各属性之间的联系。
- 实体之间的联系通常指不同实体集之间的联系,即不同表之间的联系。
- 实体之间的联系有一对一、一对多、多对多等多种联系。
概念模型的一种表示方法:
- 实体-联系方法
- 该方法用E-R图来描述显示世界的概念模型,E-R方法也称为E-R模型。
1.2.3 数据模型的组成要素
数据模型由以下三部分组成:
- 数据结构
- 数据操作
- 数据完整性约束
分别描述了系统的静态特性、动态特性和完整性约束。
数据结构
数据结构描述了数据库的组成对象以及对象之间的联系。按描述内容分为两类
- 一类是与对象的类型、内容、性质有关的。如,关系模型中的域、属性、关系等
- 一类是与数据之间联系有关的对象。如,网状模型中的系型(set type)
数据模型可按数据结构划分为:
- 层次模型
- 网状模型
- 关系模型
数据操作
数据操作是指数据库中各种给对象的实例允许执行的操作的集合,包括操作以及有关的操作规则。分为两大类操作:
- 查询
- 更新(包括插入、删除、修改)
数据模型必须定义这些操作的确切含义、操作符号、操作规则(如优先级)以及实现操作的语言。
数据的完整性约束条件
数据的完整型性约束条件是一组完整性规则。
完整性规则指数据及其联系所具有的制约和依存规则:
- 用于限定数据库状态以及状态的变化
- 以保证数据的正确、有效和相容
数据模型应该反映和规定其必须遵守的基本的和通用的完整性约束条件。如,关系模型中,任何关系必须满足实体完整性和参照完整性两个条件。
1.2.4 常用的数据模型
数据库领域中主要的逻辑数据模型有:
- 层次模型
- 网状模型
- 关系模型
- 面型对象的数据模型
- 对象关系数据模型
- 半结构化数据模型
1.2.5 层次模型
层次模型用树形机构来表示各类实体以及实体间的联系。
层次模型的数据结构
在数据库中定义满足下面两个条件的基本层次联系的集合为层次模型:
- 有且只有一个节点没有双亲节点,这个节点称为根节点;
- 根节点外的其他节点有且只有一个双亲节点。
在层次数据库中每个节点表示一个记录类型,由定义可知,父子节点之间的联系是一种一对多的联系。
层次模型只能处理一对多的实体联系。
层次模型的数据操纵与完整性约束
层次模型的数据操纵主要由查询、插入、删除和更新。
在进行插入、删除、更新操作时要满足层次模型的完整性约束条件:
- 插入时,如果没有双亲节点值,就不能插入它的子女节点值
- 删除时,如果删除双亲节点值,则相应的子女节点值也将被同时删除。
层次模型的优缺点
- 优点
- 层次模型的数据结构比较简单清晰
- 层次数据库的查询效率高。(查询性能优于关系数据库,不低于网状数据库)
- 缺点
- 不适合描述实体间非层次性的联系。如多对多的联系
- 可以通过引入冗余数据或者引入虚拟节点等来解决,但是会引发新的问题。如,容易产生数据不一致性,对插入和删除操作的限制比较多等。
- 查询子女节点必须通过双亲节点
- 由于结构严密,层次命令趋于程序化
- 不适合描述实体间非层次性的联系。如多对多的联系
1.2.6 网状模型
克服了层次模型不是和表示非树形结构的弊病,能够描述实体之间更复杂的联系(一对一、一对多、多对多)
网状模型的数据结构
在数据库中,把满足以下两个条件的基本层次联系集合称为网状模型:
- 允许一个以上的节点无双亲。
- 一个节点可以有多于一个的双亲。
网状模型去掉了层次模型的两个限制,更具有普遍性。
网状模型的优缺点
- 优点
- 能够更为直接地描述现实世界(节点可以有多个双亲,节点之间可以由多种联系)
- 具有良好地性能,存取效率高
- 缺点
- 结构比较复杂,应用场景越大,数据库结构越复杂
- 网状模型中的DDL、DML复杂,用户不容易掌握
- 由于记录之间的联系是通过存取路径实现的,应用程序在访问数据时必须选择适当的存取路径,因此用户必须了解系统结构的细节,加重了编写应用程序的负担。
1.2.7 关系模型
关系模型时最重要的一种数据模型。
关系模型的数据结构
从用户的观点看,关系模型由一组关系组成。
每个关系的数据结构时一张规范化的二维表。
关系模型中的常见术语:
- 关系(relation):一个关系对应通常说的一张表。
- 元组(tuple):表中的一行即为一个元组。
- 属性(attribute):表中的一列即为一个属性。
- 码(key):也成码键,表中的某个属性组,它可以唯一确定一个元组。
- 域(domain):一组具有相同数据类型的值的集合。属性的取值范围来自某个域。
- 分量:元组中的一个属性值。
- 关系模式:对关系的描述,一般表示为:关系名(属性1,属性2,...,属性n)
关系模型的数据操纵与完整性约束
关系的完整性约束条件包括三大类:
- 实体完整性
- 参照完整性
- 用户定义完整性
关系模型的优缺点
- 优点
- 关系模型与格式化模型(层次和网状)不同,它是建立在严格的数学概念基础上的。
- 关系模型的概念单一。无论实体还是实体之间的联系都用关系来表示。对数据的检索和更新结果也是关系(即表)。
- 关系模型的存取路径对用户透明,从而具有更高的数据独立性、更好的安全保密性,简化了程序员的工作。
- 缺点
- 由于存储路径对用户隐蔽,查询效率往往不如格式化数据模型
- 为了提高性能,数据库管理系统必须对用户请求进行优化,因此增加了数据库关系系统的开发难度。
1.3 数据库系统的结构
1.3.1 数据库系统模式的概念
数据模型中,由“型”(type)和“值”(value)的概念。
型是指某一类数据的结构和属性的属性。如,学生记录定义为(学号,姓名,...)这样的记录型。
值是型的一个具体赋值。如,(201315130,李明,...)则是该记录型的一个记录值。
模式
模式是数据库中全体数据的逻辑结构和特征的描述。仅涉及型的描述,不涉及具体值。
模式的一个具体值称为模式的一个实例。
- 同一模式可以有很多实例
- 模式是相对稳定的,而实例是相对变动的
1.3.2 数据库系统的三级模式结构
数据库系统的三级模式结构是指数据库系统是由外模式、模式和内模式三级构成。
数据库系统的三级模式是数据的三个抽象级别。
三级模式的作用:
- 把数据的具体组织留给数据库管理系统来管理,使用户能逻辑地、抽象地处理数据,而不必关心数据在计算机中地具体表示方式和存储方式。
模式
模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
一个数据库只有一个模式。
数据库模式以某一中数据模型为基础,统一综合地考虑了所有用户地需求,并将这些需求有机地结合成一个逻辑整体。
定义模式时:
- 不仅要定义数据地逻辑结构,例如:
- 数据记录由哪些数据项构成
- 数据项的名字、类型、取值范围等
- 而且要定义数据之间的联系,定义与数据有关的安全性、完整性要求。
外模式
外模式也称为子模式或用户模式。
它是数据库用户(包括应用程序员和最终用户),能够看见和使用的局部数据的逻辑结构和特征的描述。是数据库用户的数据视图。
外模式是模式的子集。
特点:
如果不同用户在应用需求、看待数据的方式、对数据保密的要求等各方面存在差异,则其外模式描述就是不同的。
同一外模式也可以被某一用户的多个应用系统所使用,但是一个应用只能使用一个外模式。
优点:
- 外模式是保证数据库安全性的一个有力措施,每个用户只能看见和访问所对应的外模式,数据库中的其余数据是不可见的。
内模式
定义:
- 内模式也称存储模式,一个数据库只有一个内模式。
- 它是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式。
例如:它定义了记录的存储方式是堆存储还是按照某个属性值的升(降)序存储;索引按什么方式组织等。
1.3.3 数据库的二级映像功能与数据独立性
二级映像:
- 外模式/模式映像
- 模式/内模式映像
分别处于三级模式之间。
作用:
- 用于在系统内部实现三个抽象层次地联系和转换。
- 保证了数据库系统中地数据能够具有较高的逻辑独立性和物理独立性。
外模式/模式映像
模式描述的使数据的全局逻辑结构,外模式描述的使数据的局部逻辑结构。
定义:
对于每个外模式,数据库系统都有一个外模式/模式映像,它定义了该外模式与模式之间的对应关系。
这些映像通常包含在各自外模式的描述中
作用:
- 模式修改时,可以通过修改该映像,使外模式不变,从而应用程序不必修改,保证了数据的逻辑独立性。
模式/内模式映像
定义:
- 数据库中模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系。
- 该映像通常包含在模式的描述中。
作用:
- 数据的存储结构改变时,可以通过修改该映像,使模式不变,从而应用程序也不必改变,保证了数据的物理独立性。