wiki
本章上午客观题约占 6 分,下午案例题至少一题
1. 数据库模型
1. 三级模式
数据库有 “型” 和 “值” 的概念,“型” 指数据的结构和属性说明,“值” 指具体赋值。
数据库系统设计员在视图层、逻辑层、物理层对数据进行抽象,通过外模式、概念模式、内模式描述不同层次上的数据特性。
数据按外模式描述提供给用户,按内模式描述存储在磁盘上,而概念模式提供了两级模式的中间层,使得二者互不影响。
1. 概念模式
也称模式,是数据库中全部数据的逻辑结构和特征的描述,不涉及存储结构、访问技术等细节。
一个具体值成为一个模式实例。统一模式可以有多个实例。
概念模式的数据定义语言为 “模式 DDL(Schema Data Definition Language)”。
2. 外模式
也成为用户模式或子模式,是用户与数据库的接口。用户用数据操作语言对数据库进行操作,实际是对外模式的外部记录进行操作。
外模式的数据定义语言为 “外模式 DDL”。
3. 内模式
也称存储模式,是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式,定义所有内部记录类型、索引、文件组织方式等。
内模式的数据定义语言为 “内模式 DDL”。
2. 二级映像
- 模式/内模式映像:存在与概念级和内部级之间,实现了概念模式和内模式的相互转换
- 外模式/模式映像:存在与外部级和概念级之间,实现了外模式和概念模式的相互转换
3. 数据独立性
- 数据的物理独立性
- 数据的逻辑独立性
2. 数据模型
1. 常用的数据模型
- 概念数据模型:也称信息模型,以用户视角对数据和信息建模,是对现实世界信息的抽象,如 E-R 模型。
- 基本数据模型:以计算机视角对数据建模,是对现实世界数据特征的抽象,用 DBMS 来实现,有层次模型、网状模型、关系模型和面向对象模型等。
2. 数据模型三要素
数据结构、数据操作、数据的约束条件
3. E-R 模型的概念
E-R 图,实体-联系模型(Entity-Relationship Model),用来描述现实世界的概念模型:
- 实体:用矩形表示,每个实体由一组属性表示,包括主键、候选键、外键
- 联系:用菱形表示,分为一对一(1:1)、一对多(1:n)、多对多(m:n)
- 属性:用椭圆表示,是实体某方面的特性。E-R 模型中的属性分为:①简单和复合属性;②单值和多值属性;③null 属性;④派生属性
3. 数据库操作
1. 关系模型的完整性规则
- 实体完整性:主属性不能为空值
- 参照完整性:外键的值必须存在
- 用户定义完整性:满足用户要求
2. 基本关系运算
- 并:R∪S={t|t∈R∨t∈S}
- 差:R-S={t|t∈R∧t∉S}
- 笛卡尔积:R×S={t|t=<tn,tm>∨<tn∉R∨tm∉S}
- 投影 π:选列,从中选出若干列 A 组成新关系,记作 πA(R)={t[A]|t∈R}
- 选择 σ:选行,从中选出满足条件的元组成新关系,记作 σF(R)={t|t∈R∧F(t)=True}
3. 扩展关系运算
- 交:R∩S={t|t∈R∧t∈S}
- 连接
- θ连接
- 等值连接
- 自然连接:去除相同属性的组,而且水平与垂直方向的分量均相等
- 除:符号为 ÷,用关系 S 中与 R 相同的属性组,选取 R 中剩余属性的象集,在 R 中选择包含全部 S 中相同属性的属性。
- 外连接:左外连接、右外连接、全外连接
4. 其他概念
1. 象集
从 R 表中选择指定的属性值 a 所在的行,投影出剩下的其他属性 Z,建立新表。即选行再选列。
1 | 关系 R: a1 在 R 中的象集: |
4. 数据库语言 SQL
SQL(Structured Query Language),被 DBMS 普遍采用。包括数据查询(Query)、数据操作(Manipulation)、数据定义(Definition)、数据控制(Control)功能。
9 个核心动词:
- 数据查询:SELECT
- 数据定义:CREATE、DROP、ALTER
- 数据操纵:INSERT、UPDATE、DELETE
- 数据控制:GRANT、REVORK
1. 基本组成
- 数据定义语言
- 交互式数据操作语言
- 事务控制
- 嵌入式 SQL 和动态 SQL
- 完整性
- 权限管理
5. 数据库管理系统
1. 数据库管理系统
数据库管理系统(DBMS)是操纵和管理数据库的软件,用于建立、使用和维护数据库。
2. DBMS 的功能
- 数据定义
- 数据库的操作
- 数据库的运行管理
- 数据的组织、存储和管理
- 数据库的建立和维护
- 其他功能,如通信、数据转换等
3. DBMS 的特征
- 数据的结构化且统一管理
- 有较高的数据独立性
- 数据的控制功能,对数据库中数据的安全性、完整性、并发和恢复的控制
4. DBMS 的分类
- 关系数据库系统(RDBS)
- 面向对象的数据库系统(OODBS)
- 对象关系数据库系统(ORDBS)
6. 关系数据库规范化
1. 函数依赖
数据依赖是通过一个关系中属性间值的相等与否提现出来的数据间的相互关系。函数依赖是最重要的数据依赖。
函数依赖:设 R(U) 是属性集 U 上的关系模式,X、Y 是 U 的子集。若对于 R(U) 的任意一个可能的关系r,r不可能存在两个元组在 X 上的属性值相等,而在 Y 上的属性值不等,则称 X 函数确定 Y 或 Y 函数依赖于 X,记作 X->Y。
1. 平凡函数依赖、非平凡函数依赖
当 X->Y,若 Y 是 X 的子集,就是平凡函数依赖,反之是非平凡依赖。
对任一关系模式,平凡函数依赖必然成立。
总结为:右边为左边子集:
- 是,平凡函数依赖
- 否,非平凡函数依赖
2. 完全函数依赖、部分函数依赖
当 X->Y,若对于 X 的任一真子集 X’ 都有 X’ 不能决定 Y ,则称 Y 对 X 是完全函数依赖,记作 X-f->Y。
当 X->Y,但 Y 不完全函数依赖于 X ,则称 Y 对 X 是部分函数依赖,,记作 X-p->Y。
总结为:左边有子集能决定右边:
- 是,部分函数依赖
- 否,完全函数依赖
举例1:{学号,课程号}->成绩,但学号和课程号都不能单独决定成绩,因此成绩是 {学号,课程号} 完全函数依赖。
举例2:{学号,课程号}->姓名,只需要学号就能完全确定姓名,因此姓名是 {学号,课程号} 部分函数依赖。
3. 传递依赖
若 X->Y , 但 Y 不是 X 的子集,且 Y->Z,则称 Z 对 X 传递依赖。
举例:学号->学生院系,学生院系->系主任名,因此系主任名对学号传递依赖。
4. 候选码、主码、外码、主属性、非主属性
设 K 为 R(U,F) 中属性组合,若 K->U,且对于 K 的任何一个真子集 K’ 都有 K’ 不能决定 U,则 K 为 R 的候选码,也叫候选关键字。
若有多个候选码,则选一个作为主码,也叫主键。
举例:{班级,姓名}->学生,学号->学生,所以{班级,姓名}、学号都是候选码。
包含在任何一个候选码中的属性为主属性,否则为非主属性。
若 R(U) 中的属性或属性组 X 非 R 的码,但 X 是另一个关系的码,则称 X 为外码,也叫外键。
5. Armstrong 公理系统
Armstrong 公理系统是函数关系的公理系统。设关系模式 R(U,F),其中 U 为属性集,F 是 U 上的一组函数依赖,则有以下推理规则:
- A1 自反律:若 Y⊆X⊆U ,则 X->Y 为 F 所蕴含
- A2 增广率:若 X->Y 被 F 所蕴含,且 Z⊆U ,则 XZ->YZ 为 F 所蕴含
- A3 传递率:若 X->Y,Y->Z 为 F 所蕴含,则 X-Z 为 F 所蕴含
根据上述 3 条推理规则,有课推出下述 3 条推理规则:
- 合并规则:若 X->Y,X->Z,则 X->YZ 为 F 所蕴含
- 伪传递率:若 X->Y,WY->Z,则 XW->Z 为 F 所蕴含
- 分解规则:若 X->Y,Z⊆Y,则 X-Z 为 F 所蕴含
2. 规范化
- 1NF:每个分量(属性)不可分割
- 2NF:满足 1NF,而且消除非主属性对候选键的部分依赖
- 3NF:满足 2NF,而且消除非主属性对候选键的传递依赖
3. 模式分解
模式分解是将一个冗余关系模式拆解为几个等价的关系模式。
保证分解前后的等价性需要考虑:
- 无损连接:在分解之后,n个分解关系通过自然连接(自然连接是在等值连接的基础上去掉相同的列,如果自然连接中找不到等值信息那么自然连接就等价于笛卡尔积)形成的二维表和没分解之前关系的二维表是等价的(元组没有增加也没有减少),则称这种分解形成的关系模式保持无损连接性
- 保存函数依赖:若分解之后的关系模式中仍然存在和没分解之前属性的函数依赖关系,则称保持分解的函数依赖性
7. 数据库的控制功能
1. 事务
事务是指作为单个逻辑工作单元执行的一系列操作,要么完全执行,要么完全不执行。
2. 事务的性质(ACID)
- 原子性(Atomicity):要么都做,要么都不做
- 一致性(Consistency):事务完成时,必须保证所有数据都保持一致的状态
- 隔离性(Isolation):事务之间相互隔离
- 持久性(Durability):事务完成后,即使数据库崩溃,更新操作也将永久有效
3. 数据库的故障类型
- 事务内部故障:如运算溢出、并发事务发生死锁等
- 系统故障:也称为软故障,是指造成系统停运的事件,如 CPU 故障、OS 故障、突然停电等
- 介质故障:也称为硬故障,如磁盘损坏等
- 计算机病毒
4. 备份方法
- 静态、动态转储
- 海量、增量转储
- 日志文件
5. 并发读导致数据不一致
- 丢失修改
- 不可重复读
- 读脏数据
6. 并发控制技术封锁
- 排他锁(X/写锁):只允许上锁事务读写,不允许其他事务加任何锁直到该事务释放 X 锁
- 共享锁(S/读锁):只允许上锁事务读,不允许写,其他事务也只能加 S 锁
7. 三级封锁协议
- 一级:修改数据前先加 X 锁,事务结束后释放,可解决丢失修改问题
- 二级:在一级基础上,读数据之前加 S 锁,读完后释放即可解决读脏数据问题
- 三级:在一级基础上,读数据之前加 S 锁,直到事务结束后释放 S 锁,即可解决丢失修改、读脏数据、不可重复读三个数据不一致的问题
8. 活锁与死锁
9. 并发调度的可串行性
10. 两段封锁协议
指事务必须分成两个阶段对数据进行加锁和解锁,在释放一个封锁以后,事务不在申请获得其它封锁。
- 第一段是获得封锁,也称扩展阶段,事务可以获得任何数据项上任何类型的锁,但是不能释放锁
- 第二段是释放封锁,也称收缩阶段,事务可以释放任何数据项上任何类型的锁,但是不能获得锁
8. 数据仓库和分布式数据库基础
1. 数据仓库
数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。
2. ETL
- 抽取(Extraction)
- 转换(Transformation)
- 加载(Loading)
3. 数据仓库的分类
- 企业仓库
- 数据集市
- 虚拟仓库
4. 分布式数据库
通常使用较小的计算机系统,每台计算机可以单独放在一个地方,每台计算机中都可能有 DBMS 的一份完整拷贝副本或部分拷贝副本,并具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个完整的、全局的逻辑上集中、物理上分布的大型数据库。
5. 分布式数据库的特点
- 高可扩展性
- 高并发性
- 高可用性
6. 分布式数据库的透明性
- 分片透明:用户或应用程序不需要知道逻辑上访问的表具体是怎么分块存储的
- 复制透明:采用复制技术的分布方法,用户不知道数据是复制到哪些节点,如何复制的
- 位置透明:指用户无需知道数据存放的位置
- 逻辑透明:局部数据模型透明,是指用户程序无需知道局部场地使用的是哪些数据模型
9. 其他
1. 数据库设计过程(详见 12.2)
- 需求分析阶段产物:数据流图、数据字典、需求说明书
- 概念设计阶段产物:E-R模型
- 逻辑设计阶段产物:关系模式。设计依据:需求分析、E-R模型、转换原则、规范化理论
- 物理设计阶段产物: