参考教材:《数据库系统概念》(本科教学版)第一章
文件处理系统弊端:
数据的冗余和不一致
数据访问困难
数据孤立
完整性问题(涉及约束)
原子性问题(原子操作)
并发访问异常
安全性问题
数据库系统(DataBase System)=数据的集合(数据库)+访问数据的程序
安全,完整,多用户并发使用,故障后系统恢复
一些操作:批量转载,转储(静态,动态,海量,增量),介质故障恢复,重组织,性能监视
DBMS数据库管理系统
数据抽象(简化用户与系统的交互)
1.物理层:最低,详细描述复杂的底层数据结构,物理上的存储细节(如连续存储位置组成的存储快之类的)
2.逻辑层:描述存储什么数据,数据之间的关系
3.视图层:只描述整个数据库的某个部分
DBS体系结构:
数据库->内模式(存储模式,自动生成的存储结构)->模式(基本表)->外模式(从模式中抽取部分,不唯一,直接面向应用)->应用
外模式/模式映像->逻辑独立性(模式改变是应用程序无需改变)
模式/内模式映像->物理独立性
数据库实例:特定时刻存储在数据库中的信息的集合(变化频繁)
数据库模式:数据库的总体设计(不怎么变)
数据模型(描述数据,数据联系,数据语义,一致性工具的概念工具的集合):
三要素:数据结构(静态特性),数据操作(动态特性),数据上的约束
1.关系模型(relation model):表,固定格式的记录(字段固定)
2.实体-联系模型(entity-relationship model):E-R
3.基于对象的数据模型(object-based data model):面向对象,E-R模型增加了封装,方法,对象标识等概念后的扩展
4.半结构化数据模型(semistructured data model):相同类型的数据项含有不同的属性集的数据定义(一般用XML来表示)
5.网状数据模型,层次数据模型…(旧,复杂)
数据库语言
1.数据库操作语言(Data-Manipilation Language,DML):表达数据库的查询与更新
(1):过程化DML(procedural):要求用户指定需要什么数据以及如何获取这些数据
(2):声明式DML(declarative):只要求指定需要什么数据(如sql中的select from)
2.数据定义语言(Data-Definition Lang,DDL):定义数据库模式(如sql中的create table)
数据库系统所使用的存储结构,访问方式,一致性约束(域约束domain constraint
,参照完整性referential integrity (例如 course 关系中的dept_name必须是department关系中的某一记录的dept_name)
,断言assertion(数据库需要时刻满足的某一条件,前两个是它的特殊形式)
,授权authorization(读权限,插入权限,更新权限,删除权限)
DDL以一些语句作为输入,生成的输出放在data dictionary,其中包括元数据mata data
(关于数据的数据,表的结构信息如有哪些字段等等)
应用程序->宿主语言(c,c++,java...)-(通过接口ODBC,JDBC...或扩展宿主语言的语法)->DML,DDL->数据库
扩展宿主语言的语法:在宿主语言的程序中嵌入DML调用。通常用一个特殊字符作为DML调用的开始,通过DML预编译器,将DML语句转变成宿主语言中的过程调用。
规范化:生成一个关系模式集合,减少冗余,范式normal form
,函数依赖functional dependency
存储管理器:负责数据库中数据的存储,检索,更新
存储管理部件包括:
1.权限及完整性管理器authorization and integrity manager
2.事物管理器transaction manager
:保证即使发生故障数据库也保持在一致状态,保证并发事物的执行不发生冲突
3.文件管理器file manager
:管理磁盘存储空间的分配,存储信息的数据结构
4.缓冲区管理器buffer manager
:负责将数据从磁盘上取到内存中(类比两个校区用校车运送教师的例子)
存储管理器实现的几种数据结构:
1.数据文件data files
:存储数据库自身
2.数据字典data dictionary
:元数据
3.索引index
事务管理
对数据库的几个操作合起来形成一个逻辑单元
原子性atomicity,一致性consistency,持久性durability,独立性
事务:完成单一逻辑功能的操作结合
故障恢复:当事务的某一步发生故障的时候,要恢复的整个事务执行以前的一致状态(恢复管理器)
并发控制管理器:控制并发事务间的互相影响,保证数据库一致性
消除死锁:当事务通过调度器授权锁竞争资源时,每个事务所需要的资源都被另一个事务占有没有一个可以执行,通过删除一个或多个事务来解决
查询处理器
1.DDL 解释器interpreter
2.DML 编译器compiler
:将DML语句翻译为多种可执行方案,并选择代价最小的一种(查询优化)
3.查询执行引擎query evaluation engine
数据库体系结构
客户/服务器系统,并行数据库系统,分布式数据库系统
数据挖掘data mining
:半自动分析大型数据库并从中找出有用的模式
信息检索information retrieval
:查询非结构化的文本数据
数据库管理员DBA
数据库系统历史