第一章 数据库系统概论
数据与数据管理
数据:描述事物的符号记录。
数据管理:对数据进行有效的分类、组织、编码、存储、检索、维护和应用——数据处理的中心问题。
数据库管理系统:由一个相互关联的数据的集合和一组用以访问、管理和控制这些数据的组成。
数据库:数据的集合。
数据模型:描述一个数据结构、数据操作、以及数据约束的数学形式。
- 概念模型(信息模型):概念层次的数据模型。
- 逻辑模型:用来描述数据库数据的整体逻辑结构,也是现实世界的第二层抽象。
- 物理模型:用来描述数据的物理存储结构和存取方法。
数据结构:描述数据库的组成对象(实体)以及对象之间的关系。
数据操作:对数据库中各种对象(型)的实例(值)允许执行的操作集合,包括操作及有关的操作规则。它是对系统动态特性的描述。
数据完整性规则:数据、数据语义和数据联系所具有的制约和一村规则,包括数据结构完整性规则和数据操作完整性规则。用以限定负荷数据模型的数据库状态以及状态的比,以保证数据的正确、有效和相容。
数据完整性约束:一组数据完整性规则。
数据库技术的产生与发展
人工管理阶段
文件系统阶段
特点
- 实现了文件内的数据结构性
- 应用程序与数据之间有了一定的物理独立性
问题
- 数据共享性差,数据冗余和不一致
- 数据独立性差
- 数据孤立,数据获取困难
- 完整性问题
- 原子性问题
- 并发访问异常
- 安全性问题
数据库管理系统阶段
特点
- 数据结构化
- 数据共享度高,冗余度低,易扩充
- 数据独立性高
- 物理独立性
- 逻辑独立性
- 数据由数据库管理系统统一管理和控制
- 数据的安全性保护
- 数据的完整性保护
- 并发控制
- 数据库的恢复
关系模型
由一组关系构成,每个关系的数据结构是一张规范化的二维表。
常用术语
关系(relation):一个关系对应一张二维表,每一个关系有一个名称,即关系名;
元组(tuple):表中的一行称为一个元组;
属性(attribute):表中的一列称为一个属性,每一个属性有一个名称,即属性名;
码(key):也称为码键。表中的某个属性或属性组,它可以唯一地确定关系中的一个元组,如关系Student中的学号,它可以唯一地标识一个学生 ;
域(domain):属性的取值范围;
分量(component):元组中的一个属性值;
外码(foreign key):表中的某个属性或属性组,用来描述本关系中的元组(实体)与另一关系中的元组(实体)之间的联系
- 外码的取值范围对应于另一个关系的码的取值范围的子集
- 如关系Score中的学号,它描述了关系Score与关系Student的联系(即哪个学生选修了课程),因此学号是关系Score的外码
- 同理,课程号也是关系Score的外码,它描述了关系Score与关系Course的联系(即哪门课程被学生选修了)
关系模式(relational schema):通过关系名和属性名列表对关系进行描述,即二维表的表头部分(表格的描述部分)
规范条件
关系的每一个元组必须是可区分的,即存在码属性。
关系的每一个属性(即元组的分量)必须是一个不可分的数据项,即不允许表中有表。
关系数据模型的操作
主要包括查询和更新(插入、删除和修改)。
完整性约束
基本概念
候选码: 一个或一组属性能唯一地标识一个元组,而其子集不能
主码: 若有多个候选码.则选其中一个为主码
外键(外码): 一个表中一个(多个)属性,不是自身的主码,且这个属性和另一个表中的主码属性是同一个属性,则这个(组)属性称为外码
实体完整性:主码不能重复,主码不能为空
参照完整性:外键不能为空(或者均为空值)外键等于被参照表的主码值
用户自定义完整性:用户自定义的完整性约束条件
优点
- 严格的数学基础:有关系代数作为语言模型,有关系数据理论作为理论基础
- 概念单一:无论实体还是实体之间的联系都是用关系来表示,对数据(关系)的操作(查询和更新)结果还是关系。所以其数据结构简单、清晰,用户易懂易用
- 存取路径透明:具有更高的数据独立性、更好的安全保密性,简化了程序员的工作,提高了软件的开发和维护效率
缺点
- 由于存取路径对用户透明,查询效率往往不如非关系数据模型
- 为了提高性能,DBMS必须对用户的查询请求进行查询优化,这样就增加了DBMS的开发难度
数据抽象
DBMS
隐藏关于数据存储和维护的某些细节,为用户提供数据在不同层次上的视图,即数据抽象,方便不同的使用者可以从不同的角度去观察和利用数据库中的数据
物理层抽象
最低层次的抽象,描述数据实际上是怎样存储的
逻辑层抽象
描述数据库中存储什么数据以及这些数据之间存在什么关系。
提供给数据库管理员和数据库应用开发人员使用的,他们必须明确知道数据库中应该保存哪些信息 。
视图层抽象
最高层次的抽象,只描述整个数据库的某个部分。
系统可以为同一数据库提供多个视图,每一个视图对应一个具体的应用,亦称为应用视图 。
数据库的三级模式
模式
也称为逻辑模式,对应于逻辑层数据抽象,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
模式的一个具体值称为模式的一个实例(instance)。
它是DBMS模式结构的中间层,既不涉及数据的物理存储细节和硬件环境,也与具体的应用程序、所使用的应用开发工具及高级程序设计语言无关。
外模式
也称子模式或用户模式,对应于视图层数据抽象。
是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一具体应用有关的数据的逻辑表示。
外模式是保证数据库安全性的一个有力措施,每个用户只能看见和访问所对应的外模式中的数据,数据库中的其余数据是不可见的 。
内模式
也称存储模式,对应于物理层数据抽象,它是数据的物理结构和存储方式的描述,是数据在数据库内部的表示方式。
数据库的两层映像功能与数据独立性
外模式/模式映像
对应于一个模式可以有多个外模式。对于每一个外模式,数据库管理系统都有一个模式/外模式映像,它定义了该外模式与模式之间的对应关系
在各自的外模式描述中定义外模式/模式映像
保证了数据与应用程序的逻辑独立性,简称为数据的逻辑独立性
模式/内模式映像
数据库中只有一个模式,也只有一个内模式,模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系
在模式描述中定义模式/内模式映像
保证了数据与应用程序的物理独立性,简称为数据的物理独立性
数据库管理系统——DBMS
数据库管理系统(DBMS)是一组软件,负责数据库的存取、维护和管理。
功能
数据定义:DBMS提供数据定义语言(DDL)。
数据组织、存储和管理:DBMS要分类组织、存储和管理各种数据,包括数据字典、用户数据、数据的存取路径等 。
数据操纵:DBMS还提供数据操纵语言(DML) 。
数据库的事务管理和运行管理:数据库在建立、运行和维护时由DBMS统一管理、统一控制,以保证数据的安全性、完整性(一致性),以及多用户对数据并发操作时的数据库正确性(称为并发控制)和系统发生故障后的数据库正确性(称为恢复与备份) 。
数据库的建立和维护
其他功能
组成
查询处理器:对用户请求的SQL操作进行查询优化,从而找到一个最优的执行策略,然后向存储管理器发出命令,使其执行。
存储管理器:根据执行策略,从数据库中获取相应的数据,或更新数据库中相应的数据。
事务管理器:负责保证系统的完整性,保证多个同时运行的事务不发生冲突操作,以及保证当系统发生故障时数据不会丢失 。
开发、管理和使用数据库系统的人员:
- 数据库管理员
- 系统分析员
- 数据库设计人员
- 应用程序员
- 最终用户
数据库管理员的主要职责
- 决定数据库中的信息内容和结构
- 决定数据库的存储结构和存取策略
- 定义数据的安全性要求和完整性约束条件
- 监控数据库的使用和运行
- 数据库的改进和重组重构
第三章 SQL
数据库
1 | -- 创建数据库 |
数据表
1 | -- 创建数据表 |
查询
1 | select [distinct] * from table_name where some_column = some_value |
插入
1 | -- 不指定列 |
修改
1 | update table_name set column1 = value1, column2 = value2 |
删除
1 | delete from table_name where some_column = some_value |
第十章 事务管理与恢复
事务
事务是具有完整逻辑意义的数据库操作序列的集合。
特性:
- 原子性:事物的所有操作要么全部执行,要么全部不执行。
- 一致性:总是将数据库从一个一致性状态转化到另一个一致性状态。
- 隔离性:并发执行的各个事务不能互相干扰。
- 持久性:一个事务成功提交后,他对数据库的改变必须是永久的。
事务并发可能会出现 3种 不一致性:不可重复读、读脏数据和丢失更新。
基本锁
共享锁(S锁)
又称读锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。
排它锁(X锁)
又称写锁。若事务T对数据对象A加上X锁,事务T可以读A也可以修改A,其他事务不能再对A加任何锁,直到T释放A上的锁。这保证了其他事务在T释放A上的锁之前不能再读取和修改A。
特点
共享锁与排它锁不相容。
排它锁与排它锁不相容。