三. 数据库系统
1. 数据库的基本概念
(1)数据库系统的体系结构
- 集中式数据库系统
数据是集中的,数据管理也是集中的,数据库系统的素有功能都集中在 DBMS 所在的计算机。
- C/S 结构
即客户端和系统端,客户端负责数据表示服务,服务器负责数据库服务,数据库系统分为前端和后端。如 ODBC、JDBC。
- 分布式数据库
物理上分布、逻辑上集中;物理上分布,逻辑上分布;特点;透明性。
- 并行数据库
共享内存式和无共享式。
分布式数据库特点:
- 数据独立性:除了数据的逻辑独立性与物理独立性外,还有数据分布独立性。
- 集中与自治共享结合的控制结构:各局部的 DBMS 可以独立地管理局部数据库,具有自治的功能。同时,系统又设有集中控制机制,协调各局部 DBMS 的工作,执行全局应用。
- 适当增加数据冗余度:在不同的场地存储同一数据的多个副本,可以提高系统的可靠性和可用性,同时也能提高系统性能。
(提高系统的可用性是指,当系统中某个节点发生故障时,因为数据有其它副本在非故障场地上,对其它所有场地来说,数据仍然是可用的,从而保证数据的完备性。)
- 全局的一致性、可串行性和可恢复性。
分布式数据库透明性:
- 分片(分块)透明:用户不必关心数据是如何分片的,它们对数据的操作在全局关系上进行。
- 复制透明:用户不用关心数据库在网络中各个节点的复制情况,被复制的数据的更新都由系统自动完成。
- 位置透明:用户不必知道所操作的数据放在何处,即数据分配到哪个或哪些站点存储。
- 局部映像透明性(逻辑透明):最低层次的透明性,该透明性提供数据到局部数据库的映像,即用户不必关心局部 DBMS 支持哪种数据模型、使用哪种数据操纵语言,数据模型和操纵语言的转换是由系统完成的。因此,局部映像透明性对异构型和同构异质的分布式数据库系统是非常重要的。
例题1:
在分布式数据库中有分片透明、复制透明、位置透明和逻辑透明等基本概念,其中:()是指局部数据模型透明,即用户或应用程序无需知道局部使用的是哪种数据模型;()是指用户或应用程序不需要知道逻辑上访问的表具体是如何分块存储的。
A.分片透明 B.复制透明 C.位置透明 D.逻辑透明
A.分片透明 B.复制透明 C.位置透明 D.逻辑透明
解析1:
根据数据库透明性的定义可知,局部数据模型透明是指逻辑透明,选 D。用户无需知道逻辑上访问的表具体是如何分块存储的,这是指分片透明。选 A。
例题2:
当某一场地故障时,系统可以使用其他场地上的副本而不至于使整个系统瘫痪。这称为分布式数据库的()。
A.共享性 B.自治性 C.可用性 D.分布性
解析2:
由分布式数据库特点可知,这是分布式数据库的可用性,选 C。共享性是指数据库系统所有数据都是共享的,没有完全分隔;自治性指的是各局部的 DBMS 可以独立地管理局部数据库;分布性指的是物理节点上的分布。
(2)三级模式和两级映像
外模式也称为用户模式,概念模式也称为模式,内模式也称为存储模式。
逻辑独立性:数据的逻辑结构发生变化后,用户程序不用修改。但是为了保证应用程序能够正确执行,需要修改外模式和概念模式之间的映射。
物理独立性:数据的物理结构发生变化后,应用程序不用修改。但是为了保证应用程序能够正确执行,需要修改内模式和概念模式之间的映射。
例题1:
数据库系统通常采用三级模式结构:外模式、模式和内模式。这三级模式分别对应数据库的()。
A.基本表、存储文件和视图。
B.视图、基本表和存储文件。
C.基本表、视图和存储文件。
D.视图、存储文件和基本表。
解析1:
由图示可知,外模式对应视图,模式对应基本表,内模式对应文件,选 B。
例题2:
以下关于数据库两级映像的叙述中,正确的是()。
A.模式/内模式映像实现了外模式到内模式之间的相互转换。
B.模式/内模式映像实现了概念模式到内模式之间的相互转换。
C.外模式/模式映像实现了概念模式到内模式之间的相互转换。
D.外模式/内模式映像实现了外模式到内模式之间的相互转换。
解析2:
由两种映像的定义可知,B 选项正确。其中,没有 D 选项这种映射关系。
例题3:
数据的物理独立性和逻辑独立性分别是通过修改()来完成的。
A.外模式与内模式之间的映像、模式与内模式之间的映像。
B.外模式与内模式之间的映像、外模式与模式之间的映像。
C.外模式与模式之间的映像、模式与内模式之间的映像。
D.模式与内模式之间的映像、外模式与模式之间的映像。
解析3:
由物理独立性和逻辑独立性的定义可知,D 选项正确。
(3)数据仓库
数据仓库的范围通常比数据库大得多。
数据仓库的特点:
- 面向主题:数据按主题组织。
- 集成的:消除了源数据中的不一致性,提供整个企业的一致性全局信息。
- 相对稳定的(非易失的):主要进行查询操作,只有少量的修改和删除操作。
- 反映历史变化(随着时间变化):记录了企业从过去某一时刻到当前各个阶段的信息,可对发展历程和未来趋势做定量分析和预测。
OLAP:联机分析
OLTP:联机事务
例题:
某集团公司下属有多个超市,每个超市的所有销售数据最终要存入公司的数据仓库中。假设该公司高管需要从时间、地区和商品种类三个维度来分析某家电商品的销售数据,那么最适合采用()来完成。
A.Data Extraction B.OLAP C.OLTP D.ETL
解析:
从三个维度去分析商品的销售数据,采用 OLAP 联机分析更合适,它侧重于数据后期的处理过程。A 项数据提取是在数据预处理阶段,D 项就是数据预处理,C 项 OLTP 联机事务就是我们常用的数据库的数据处理方式,从数据的记录到增删改查等操作,侧重于事务。因此选 B。
2. 数据库设计过程
记住需求分析、概念结构设计、逻辑结构设计三个阶段的产物,以及规范化理论的应用是在逻辑结构设计阶段。
在物理设计阶段,聚簇索引会涉及到物理特性的修改。
例题:
关系规范化在数据库设计的()。
A.需求分析 B.概念设计 C.逻辑设计 D.物理设计
解析:
根据数据库设计过程图示可知,关系规范化的应用是在数据库设计的逻辑设计阶段,选 C。
3. 概念结构设计
(1)概念设计过程
合并(集成) 局部模型的方法:
- 多个局部 E-R 图一次集成。
- 逐步集成,用累加的方式一次集成两个局部 E-R。
合并产生的冲突:(针对同一对象)
- 属性冲突:包括属性域冲突和属性取值冲突。
- 命名冲突:包括同名异义和异名同义。
- 结构冲突:包括同一对象在不同应用中具有不同的抽象,以及同一实体在不同局部 E-R 图中所包含的属性个数和属性排列次序不完全相同。
(2)E-R 图
实体:实体是现实世界中可以区别于其它对象的事件或事物。(实体集是实体的集合)
属性:属性是实体某方面的特性。
联系:实体的联系分为实体内部的联系和实体与实体间的联系。实体间的联系类型有:1:1, *:1, *:*
属性的分类:
- 简单属性和复合属性
简单属性是原子的,不可再分的;复合属性可以细分为更小的部分(即划分为别的属性)。
- 单值属性和多值属性
定义的属性对于一个特定的实体都只有单独的一个值,称为单值属性;
在某些特定情况下,一个属性可能对应一组值,称为多值属性。
- NULL 属性:表示无意义或不知道。
- 派生属性:可以从其他属性得来。
联系的类型:
一对一(1:1);一对多(1:n);多对一(n:1);多对多(m:n)
一对多和多对一有方向性,应注意区分两个实体之间谁是一谁是多。
三元联系:
两个以上不同实体集之间的联系(三元联系);多重度的确定(可根据语义直接转换)
以三元关系中的一个实体作为中心,假设另两个实体都只有一个实例:
- 若中心实体只有一个实例能与另两个实体的一个实例进行关联,则中心实体的连通数为 "一"。
一个病房有多个病人和多名医生,一名医生只负责一个病房,一个病人只属于一个病房。
- 若中心实体有多于一个实例能与另两个实体的实例进行关联,则中心实体的连通数为 "多"。
供应商为多个项目供应多种零件,每个项目可用多个供应商的零件,每种零件可由不同的供应商供应。
同一个实体集内的二元联系:
扩充的 E-R 模型:
弱实体:在现实世界中有一种特殊的依赖联系,该联系是指某实体是否存在对于另一些实体具有很强的依赖关系,即一个实体的存在必须以另一个实体为前提,而将这类实体称为弱实体,如家属与职工的联系,附件与邮件。
特殊化:在现实世界中,某些实体一方面具有一些共性,另一方面还具有各自的特性,一个实体集可以按照某些特征区分为几个子实体。
聚集:一个联系作为另一个联系的一端。
4. 逻辑结构设计
(1)关系模式相关概念
从概念结构设计到逻辑结构设计实则就是转换为数据模型。
数据模型三要素:数据结构、数据操作、数据的约束条件。
常见的数据模型:层次模型;网状模型;关系模型;面向对象模型等
关系模型的结构:关系模式名称(属性 1,属性 2,……)
关系模型相关概念:
- 目或度:关系模式中属性的个数。
- 候选码(候选键):唯一标识元组,且无冗余。它可以有一个,也可以有多个,可以是单属性,也可以是多属性集合。
- 主码(主键):任选一个候选码。
- 主属性与非主属性:组成候选码的属性就是主属性,其它的就是非主属性。
- 外码(外键):其它关系的主键。
- 全码:关系模式的所有属性组是这个关系的候选码。
例如,学校中有关系模型:学生(学号,姓名,身份证号),成绩(学号,课程号,成绩)。
那么学生关系模型的目是 3,成绩关系模型的目是 3;学生关系模型的候选码有两个,学号和身份证号,为了减少冗余,任选其一即可,例如选学号。成绩关系模型的候选码是(学号,课程号)的组合键(注意:多个候选键和多个属性的组合候选键不同);那么学生关系模型中的主键就是学号,成绩关系模型的主键就是(学号,课程号);学生关系模型中,学号和身份证号是主属性,姓名是非主属性,成绩关系模型中,学号和课程号是主属性,成绩是非主属性;成绩中的学号是学生关系模型中的主键,是自己的外键;全码应当是所有属性组都是候选码。
关系的三种类型:
基本关系;查询表;视图表
完整性约束:
- 实体完整性约束:主键唯一,非空。
- 参照完整性约束:外键要么是其它关系的主键,要么为空(还未分配)。
- 用户自定义完整性约束:不同用户有不同的定义,例如男女性别表示、年龄段等。
触发器可以完成复杂的完整性约束条件的设定。
(2)E-R 图转关系模式
一个实体型必须转换为一个关系模式。
联系转关系模式:
- 一对一联系的转换
独立的关系模式:并入两端主键及联系自身属性。(主键:任一端主键)
归并(任意一端):并入另一端主键及联系自身属性。(主键:保持不变)
例如:
实体型必须转换为一个关系模式:(下划线表示主键)
校长(姓名,性别,职称,年龄)
学校(校名,地址,电话)
任职(任职时间,姓名,校名):联系转换为独立的关系模式,自身属性和两端主键,主键任选其一即可。
归并:两种归并方式
校长(姓名,性别,职称,年龄,任职时间,校名)
学校(校名,地址,电话)/
校长(姓名,性别,职称,年龄)
学校(校名,地址,电话,任职时间,姓名)
- 一对多联系的转换
独立的关系模式:并入两端主键及联系自身属性。(主键:多端主键)
归并(多端):并入另一端主键及联系自身属性。(主键:保持不变)
例如:
实体型转关系模式:
客户(客户名,身份证号,地址,电话)
账户(账户号,余额)
存款者(开户时间,身份证号,账户号) :主键为多端的主键。
归并:一种方式,向多端归并
客户(客户名,身份证号,地址,电话)
账户(账户号,余额,开户时间,身份证号)
- 多对多联系的转换
独立的关系模式:并入两端主键及联系自身属性。(主键:两端主键的组合键)
例如:
实体型转关系模式:
学生(学号,姓名,性别,年龄)
课程(课程号,课程名,老师)
考试(成绩,学号,课程号):主键为两端主键的组合键
无法进行归并。
总结:
联系类型 | 实体(独立关系模式) | 联系(独立关系模式) | 联系(归并关系模式) | 归并特点 |
一对一 | √ | √ | √ | 并入任一端 |
一对多 | √ | √ | √ | 并入多端 |
多对多 | √ | √ | × | 无法归并 |
5. 关系代数
关系 S1 | ||
Sno | Sname | Sdept |
No0001 | Mary | IS |
No0003 | Candy | IS |
No0004 | Jam | IS |
关系 S2 | ||
Sno | Sname | Sdept |
No0001 | Mary | IS |
No0008 | Katter | IS |
No0021 | Tom | IS |
简单的关系代数运算:交集、并集、差集
并集:
S1 ∪ S2(并) | ||
Sno | Sname | Sdept |
No0001 | Mary | IS |
No0003 | Candy | IS |
No0004 | Jam | IS |
No0008 | Katter | IS |
No0021 | Tom | IS |
交集:
S1 ∩ S2 (交) | ||
Sno | Sname | Sdept |
No0001 | Mary | IS |
差集:(有方向)
S1 - S2(差) | ||
Sno | Sname | Sdept |
No0003 | Candy | IS |
No0004 | Jam | IS |
S2 - S1(差) | ||
Sno | Sname | Sdept |
No0008 | Katter | IS |
No0021 | Tom | IS |
复杂的关系代数运算:笛卡尔积、投影、选择
笛卡尔积:
S1 × S2(笛卡尔积) | |||||
Sno | Sname | Sdept | Sno | Sname | Sdept |
No0001 | Mary | IS | No0001 | Mary | IS |
No0001 | Mary | IS | No0008 | Katter | IS |
No0001 | Mary | IS | No0021 | Tom | IS |
No0003 | Candy | IS | No0001 | Mary | IS |
No0003 | Candy | IS | No0008 | Katter | IS |
No0003 | Candy | IS | No0021 | Tom | IS |
No0004 | Jam | IS | No0001 | Mary | IS |
No0004 | Jam | IS | No0008 | Katter | IS |
No0004 | Jam | IS | No0021 | Tom | IS |
投影:
Sno | Sname |
No0001 | Mary |
No0003 | Candy |
No0004 | Jam |
选择:
Sno | Sname | Sdept |
No0008 | Katter | IS |
关于列名称的表达:S1.1 = S2.1 等价于 S1.No0001 = S2.No0001,如果要表达第一列的取值,使用 S1 = '1' 表达,加引号。
关系代数运算之自然连接:
关系 S1 | ||
Sno | Sname | Sdept |
No0001 | Mary | IS |
No0003 | Candy | IS |
No0004 | Jam | IS |
关系 S2 | |
Sno | Age |
No0001 | 23 |
No0008 | 21 |
No0021 | 22 |
Sno | Sname | Sdept | Age |
No0001 | Mary | IS | 23 |
属性列数:二者之和减去重复列数。3 + 2 - 1 = 4(重复的是 Sno 列)
元组行:同名属性列取值相等。(Sno 列的 No0001)
等价于
S1 × S2(笛卡尔积) | ||||
Sno | Sname | Sdept | Sno | Age |
No0001 | Mary | IS | No0001 | 23 |
No0001 | Mary | IS | No0008 | 21 |
No0001 | Mary | IS | No0021 | 22 |
No0003 | Candy | IS | No0001 | 23 |
No0003 | Candy | IS | No0008 | 21 |
No0003 | Candy | IS | No0021 | 22 |
No0004 | Jam | IS | No0001 | 23 |
No0004 | Jam | IS | No0008 | 21 |
No0004 | Jam | IS | No0021 | 22 |
先进行笛卡尔积运算,得到的结果进行选择,第 1 列等于第 4 列(元组行),然后对第 1、2、3、5 列进行投影(属性列数),即可得到结果。
二者的性能对比: 与 S1 × S2
前者自然连接的性能要更优。
在实际运算过程中,两侧的表格要尽量先进行压缩,再运算。即如果有筛选过程,就先进行筛选,然后再进行自然连接或笛卡尔积运算。
所以如果考虑性能,两侧运算表格要尽可能小。
在 SQL 语句中的表示:
SELECT(某属性列)FROM(某表)WHERE(判断条件)
选择的属性列是投影的结果;对应的表格如果有多个,则是笛卡尔积的结果;判断条件是选择。
如果 WHERE 有多个,可以用 AND 或 表示,如果满足一个即可,可以用 OR 或
表示。
例题1:
给定关系R(A,B,C,D)和关系S(A,C,E,F),对其进行自然连接运算 后的属性列为()个;与
等价的关系代数表达式为()。
A.4 B.5 C.6 D.8
A.
B.
C.
D.
解析1:
自然连接运算后属性列为二者之和减去重复列,即 4 + 4 - 2 = 6,所以第一个空选 C。自然连接运算等价于经过筛选的笛卡尔积运算,所以首先进行笛卡尔积 R × S,然后看题目给出的条件是,选择关系R中的B列大于关系S中的E列,也就是笛卡尔积结果表中第 2 列大于第 7列,2>7,但不要忘记同名列取值相等,即对元组行的选择,也就是第 1 列等于第 5 列(R.A = S.A),第 3 列等于第 6 列(R.C = S.C),1=5 和 3=6,最后进行投影,即二者之和减去重复列,投影第 1、2、3、4、7、8 列。这些条件需同时满足,所以用 AND 连接,或 ,选项 B 正确。选项 A 没有考虑自然连接到笛卡尔积转换的条件,选项 CD 中 '7' 代表取值为 7,不是第 7 列。或者直接根据之前例子中自然连接与笛卡尔积之间的等价换算,快速排除 AC 项,D 项加引号的 7 代表取值,所以选 B。
例题2:
下列查询 B = "大数据"且 F = "开发平台",结果集属性列为 A、B、C、F 的关系代数表达式中,查询效率最高的是()。
A.
B.
C.
D.
解析2:
如果考虑性能,两侧运算表格要尽可能小。所以将关系R和S都经过筛选后再进行运算,表格会比只筛选一个关系或者不筛选要小得多,所以选项 D 正确。
6. 规范化理论
(1)规范化理论基本概念
函数依赖:
设 R(U) 是属性 U 上的一个关系模式,X 和 Y 是 U 的子集,r 为 R 的任一关系,如果对于 r 中的任意两个元组 u,v,只要有 u[X] = v[X],就有 u[Y] = v[Y],则称 X 函数决定 Y,或 Y 函数依赖于 X,记为 X→Y。
关系模式:R(A,B,C)
依赖集1:{AB -> C,A -> C},称为部分函数依赖。
依赖集2:{A -> B,B -> C},可得出 A -> C,称为传递函数依赖。通常情况下,将 A -> C 称为冗余依赖,因为无需声明,可推导得到。
Amstrong 公理体系:
关系模式 R<U,F> 有以下的推理规则,
- A1.自反律:若
,则 X → Y 成立。
- A2.增广律:若
且 X → Y,则 XZ → YZ 成立。
- A3.传递律:若 X → Y 且 Y → Z,则 X → Z 成立。
根据 A1,A2,A3 三条推理规则可以得出以下三条推论,
- 合并规则:由 X → Y,X → Z,有 X → YZ。(A2,A3)
- 伪传递规则:由 X → Y,WY → Z,有 WX → Z。(A2,A3)
- 分解规则:由 X → Y 且
,有 X → Z。(A1,A3)
后续会持续学习整理。