参考教材:数据库系统概论 第五版(王珊萨师煊版本)
四个基本概念:数据、数据库、数据库管理系统、数据库系统
对数据进行分类、组织、编码、存储、检索和维护
数据管理技术的发展过程:
人工管理阶段、文件系统阶段、数据库系统阶段
特点 | 人工管理阶段 | 文件系统阶段 | 数据库系统阶段 |
---|---|---|---|
管理者 | 程序员 | 文件系统 | 数据库管理系统 |
数据面向对象 | 某一应用程序 | 某一应用 | 部门企业 |
数据的共享程度 | 无共享,冗余度极大 | 共享性差,冗余度答 | 共享性高,冗余度低 |
数据独立性 | 不独立 | 独立性差 | 具有高度的物理独立性和一定的逻辑独立性 |
数据结构化 | 无结构 | 记录内有结构、整体无结构 | 整体结构化,用数据模型描述 |
数据控制能力 | 应用程序自己控制 | 应用程序自己控制 | DBMS提供数据安全性、完整性、并发控制和恢复能力 |
数据模型是数据库用来对现实世界进行抽象的的工具,是数据库中用于提供信息表示和操作手段的形式框架
分为两类:概念模型(实体-联系)、逻辑模型和物理模型
概念模型:实体、属性、码、实体型、实体集、联系
第二类中的逻辑模型:层次模型、网状模型、关系模型、面向对象数据模型、对象关系数据模型、半结构化数据模型等
第二类中的物理模型:是对数据最底层的抽象。描述了数据在系统内部的表示方式和存取方法
模式是数据库中全体数据的逻辑结构和特征的描述,它仅仅涉及型(type)的描述,不涉及具体的值。模式的一个具体值称为模式的一个实例。
模式:
模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图
外模式:
外模式也称用户模式,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述。是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
内模式:
也称存储模式,一个数据库只有一个内模式。它是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式
数据库、数据库管理系统(及其开发工具)、应用程序、数据库管理员
关系的描述称为关系模式 ,可形式化的表示为R(U,D,DOM,F)
其中R为关系名,U为组成该关系的属性名集合,D为U中属性所来自的域,DOM为属性向域的映象集合,F为属性间数据的依赖关系集合。
关系模式是型;关系是值,是关系模式的实例。
例如S(num,name,age)是关系模式,组成的表是关系,即某一时刻关系模式的值
保护数据库以防止不合法使用所造成的的数据泄露、更改或破坏
审计功能是用户对数据库执行操作时,将这些操作自动记录到数据库的审计日志中
因为数据库安全保护措施不是完美无缺的。利用数据库审计信息,数据库管理人员可以重现并分析导致数据库现有状态的一系列事件,找出非法存取数据的人、事件和内容等。
数据库数据中的正确和相容性
前者是为了防止存在不符合语义的数据,对错误输入输出进行约束。后者是为了防止恶意的破坏和非法的存取。一个是防止非法用户和非法操作,一个是防止不符合语义的数据。
设R(U)是一组关系模式,X,Y是U上的子集。对于R(U)中的任意一个可能的关系r,如果r中不存在两个元组,它们在X上的属性值相同,而在Y上的属性值不同
X函数确定Y或Y函数依赖X,记做X->Y; F(X)=Y
设K是关系R(U,F)中的一组属性,如果U完全依赖于K,那么K是R的候选码
关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式
一个低一级的范式的关系模式通过模式分解可以转换为若干个高一级范式的关系模式的集合,这个过程叫做规范化
每一个非主属性完全函数依赖于任何一个候选码
不属于2NF会产生以下几个问题:
码X,非主属性Z,不存在X->Y(X不函数依赖于Y),Y->Z(Z不属于Y)
如果X->Y,Y不属于X,且X必包含码
数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效的存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。
它是关于数据库中数据的描述,即元数据,而不是数据本身。数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实、完善的。
通常包括:数据项、数据结构、数据流、数据存储和处理。
标准SQL是非过程化的查询语言,缺少流程控制能力,难以实现应用业务的逻辑控制
SQL编程技术可以有效克服SQL语言实现复杂应用方面的不足,提高应用系统和数据库管理系统间的互操作性。
存储过程是由过程化SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中
优点:
是为解决异构数据库间的数据共享而产生的,它建立了一组规范,并提供了一组访问数据库的应用程序编程接口(API)。ODBC具有两重约束力:一方面规范应用开发,另一方面规范关系数据库管理系统应用接口
组成:
分为4个阶段:查询分析、查询检查、查询优化和查询执行
物理优化的目的是为了选择高效合理的操作算法或存取路径,方法有
ACID
保证了事务的原子性和隔离性
恢复机制两个关键问题:如何建立冗余数据,以及如何利用这些冗余数据实施数据库恢复。建立数据库冗余数据最常用的技术是数据转储和登记日志文件
如果数据库运行过程中出现故障导致事务非正常结束,有些事务尚未完成就被中断,那么就破坏了事务的原子性,这些事务的一部分操作已经写入了数据库,这时数据库处于不一致的状态
例如银行转账
因为这是两个不同的操作,如果中间发送故障,两个只能完成一个。如果先写了数据库操作,而在日志中没有这个记录,那么就无法恢复这个修改了。如果先写了日志,但没有写入数据库。那么恢复时只要多执行一次UNDO操作,并不会影响数据库操作。
检查点记录是一类新的日志记录。它的内容包括:
自动将整个数据库或者关键数据复制到另一个磁盘上。每当主数据库更新时,把更新后的数据复制过去,即自动保证镜像数据和主数据的一致性。
用途
UNDO是恢复到第一个失败的事务就OK了,正向做不到。REDO是恢复到最后一个成功的事务之后。
UNDO保证原子性,REDO保证持续性
数据库时共享资源,通常有多个事务同时执行。当多个事务同时并发地存取时就会产生同时读/写同一个数据。若对并发操作不加以控制就可能导致存取不正确的数据,破坏事务的一致性。
并发控制保证了事务的一致性和隔离性
避免不一致性的方法就是并发控制,常用的并发控制有封锁法、时间戳法、乐观控制法、多版本并发控制法等
封锁就是事务T对某一数据进行操作前,先向系统发送请求,对其加锁,加锁以后事务就对这个数据有了一定的控制前,在事务T释放锁之前,其他事务不能对该数据进行更新或者读取
封锁类型有:排它锁、共享锁
当一系列封锁操作无法按照其正确顺序执行时,就可能导致事务无限等待某个封锁。
避免活锁的方法就是使用FCFS
举例说明什么是死锁。
防止死锁的方法有两种:预防死锁、死锁诊断与解除
预防死锁有两种办法:一次封锁法、顺序封锁法
死锁诊断与解决:超时法、事务等待图法
解除法:选择处理死锁代价最小的事务,将其解除
可串行化的并发调度是正确的调度。可串行化调度定义:多个事务并发执行是正确的,当且仅当其结果与按某一次序执行的串行执行的结果相同。
冲突可串行化,使用两段锁协议