数据库管理系统基本原理
数据库管理系统由一个互相关联的数据的集合和一组用于访问这些数据的程序组成
数据库:互相关联的数据集合
目的:数据库系统的一个目的是为了给用户提供数据的抽象视图
数据库管理员DBA:对数据和访问这些数据的程序集中控制的人
文件处理系统
- 文件处理系统:传统操作系统支持的,永久记录呗存储在不同的文件中,需要编写不同的应用程序来将记录从有关文件去除或者加入到文件中。
- 信息检索:查询非结构化文本数据
- 缺点:
- 数据的冗余和数据不一致性
- 数据访问困难。传统的文件处理环节不支持一种方便而高效的方式去获取数据,所以需要设计数据检索系统。
- 数据孤立。(数据分散在不同的文件中)
- 完整性问题。
- 原子性问题。
- 并发访问异常。
- 安全性问题。非数据库系统的所有用户都能访问所有数据。
数据抽象:
1. 物理层。描述数据怎么存储,底层的数据结构。
2. 逻辑层。描述数据以及这些数据之间的关系。
3. 视图层。描述整个数据库的某个部分
模式:数据库的总体设计
- 实例:特定时刻存储再数据库中的信息的集合
- 物理模式:在物理层描述
- 逻辑模式:在逻辑层描述数据库设计
- 子模式:描述不同的视图
物理数据独立性:程序员使用逻辑模式构造数据库应用程序,应用程序不依赖于物理模式,物理模式改变了,应用程序也不需要重写。
模型
-
数据模型:描述数据、数据联系、数据语义以及一致性约束的概念工具的集合。它提供了一种描述物理层、逻辑层以及视图层数据库设计的方式。
-
模型的分类:
- 关系模型。用表的集合来表示数据和数据间的关系。
- 实体-联系模型。(E-R)是基于对显示世界的一种认识
- 基于对象的数据模型。E-R模型增加了面响对象概念的扩展
- 半结构化数据模型。XML
- 网状模型、层次数据模型等(现在已经很少存在了)
DML和DDL
数据操纵语言DML:用户可以访问或者操纵那些按照某种适当的数据模型组织起来的数据。可以进行信息的检索、插入、删除、修改
-
过程化DML:指定需要的数据和获取数据的方式
-
声明式DML:只要求用户指定需要什么数据,不指定如何获得
-
查询:要求对信息进行检索的语句。
-
查询语言:DML涉及信息检索的部分
数据库定义语言DDL:定义数据库模式和数据的其他特性的语言。
数据存储和定义语言:说明数据库的存储结构和访问方式的DDL
一致性约束:数据库的数据值必须满足的一些条件。每当数据库更新,就会检查这些约束。
- 域约束:每个属性都必须对应于一个所有可能取值构成的域(整数、字符型等等)。域用于约束它可以取的值。
- 参照完整性:一个关系中给定属性集上的取值也在另一关系的某一属性集的取值中出现。
- 断言:数据库需要时刻满足某一条件。域约束和参照完整性是断言的特殊形式。
- 授权:对于不同用户在数据库中的不同数值上允许不同的访问类型。读权限,插入权限,更新权限,删除权限。
数据字典:DDL以一些语句输入后,产生的一些输出。只能由数据库本身访问和修改。
元数据:关于数据的数据,数据字典包含了元数据。
关系数据库
- 表:每个表有多个列,每个列名字唯一
- 实体:现实世界中可区别于其他对象的一件事情或一个物体。例如每个人,每个账户。
数据库中的实体通过属性的集合来描述 - 联系:几个实体之间的关联
- 实体集:同一类型的所有实体的集合
- 联系集:同一类型所有联系的集合
实体联系模型是广泛用于数据库设计的数据模型。
可用ER图表示数据库总体逻辑模式,常用UML。 - 矩形代表实体集,菱形代表联系集
DML需要由宿主语言执行,如C,C++,Java
两种方式:API调用和扩展宿主语言(DML预编译器,DML转换成宿主语言)
数据库设计:主要是数据库模式设计
- 概念设计阶段:开发出数据库模式,包括了数据库属性以及如何将这些属性组织到多个表中去。
- 逻辑设计阶段:将高层的概念模式映射到要使用的数据库系统的实现数据模型上
- 物理设计阶段
规范化:生成一个关系模式集合,使得存储信息时没有不必要的冗余,同时又能够很轻易地检索数据。
数据库系统由存储管理器和查询处理器组成
存储管理器
查询处理器:
- DDL解释器: 解释DDL语句并将这些定义记录在数据字典里面
- DML编译器:将查询语言的DML语句翻译成一系列查询执行引擎能够理解的低级指令。
一个查询可以被翻译成多种等价的执行方案中的一种,DML编译器可以进行查询优化,翻译成最优的执行方案。
查询执行引擎:执行由DML编译器产生的低级指令
事务管理:
- 原子性:要么发生要么不发生
- 一致性:操作前后数据库保持一致
- 持久性:保持数据
- 事务:是数据库应用中完成单一逻辑功能的操作集合
- 事务管理器:恢复管理器+并发控制管理器
- 恢复管理器:发生故障进行故障恢复,回复到故障发生之前的状态
- 并发控制管理器:控制并发事务间的相互影响,保证事务的一致性