一 章节知识架构图
二 数据库系统的结构
2.1 概念模式
概念模式是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。一个数据库只有一个概念模式。
2.2 外模式
外模式(子模式、用户模式)用以描述用户看到或使用的那部分数据的逻辑结构,用户根据外模式用数据操作语句或应用程序去操作数据库中的数据。
2.3 内模式
内模式定义的是存储记录的类型、存储域的表示以及存储记录的物理顺序,指引元、索引和存储路径等数据的存储组织。一个数据库只有一个内模式。
2.4 逻辑独立性与物理独立性
逻辑独立性:外模式和概念模式之间的映射。应用程序与数据库中的逻辑结构独立,当数据的逻辑结构改变时,应用程序不变。
物理独立性:概念模式和内模式之间的映射。应用程序与磁盘中的数据互相独立。当数据的物理存储改变时,应用程序不变。
真题示例 - 2.1:
在数据库系统中,视图是一个()。
A. 真实存在的表,并保存了待查询的数据
B. 真实存在的表,只有部分数据来源于基本表
C. 虚拟表,查询时只能从一个基本表中导出
D. 虚拟表,查询时可以从一个或者多个基本表或视图中导出
真题示例 - 2.2:
在采用三级模式结构的数据库系统中,如果对数据库中的表 Emp 创建聚簇索引,那么改变的是数据库的()。
A. 模式 B. 内模式 C. 外模式 D. 用户模式
三 数据模型
数据模型主要有两大类,分别是概念数据模型(实体 - 联系模型)和基本数据模型(结构数据模型)。
3.1 概念数据模型
概念数据模型是按照用户的观点来对数据和信息建模,主要用于数据库设计。概念模型主要用实体 - 联系方法(Entity-Relationship Approach)表示,所以也成为 E-R 模型。
3.2 基本数据模型
基本数据模型是按照计算机系统的观点来对数据和信息建模,主要用于 DBMS 的实现。基本数据模型是数据库系统的核心和基础。常用的基本数据模型有层次模型、网状模型、关系模型和面向对象模型。
3.3 数据的约束条件
1)实体完整性
实体完整性是指实体的主属性不能取空值。
2)参照完整性
在关系数据库中主要是值的外键参照的完整性。若 A 关系中的某个或者某些属性参照 B 或其他几个关系中的属性,那么在关系 A 中该属性要么为空,要么必须出现 B 或者其他的关系的对应属性中。
3)用户定义完整性
用户定义完整性反映的某一个具体应用对应的数据必须满足一定的约束条件。
四 关系型数据库
关系
可以理解为一张二维表,每个关系都具有一个关系名,就是通常说的表名。
元组
可以理解为二维表中的一行,在数据库中经常被称为记录。
属性
可以理解为二维表中的一列,在数据库中经常被称为字段。
域
属性的取值范围,也就是数据库中某一列的取值限制。
关键字
一组可以唯一标识元组的属性,数据库中常称为主键,由一个或多个列组成。
关系模式
指关系的描述。其格式为:关系名(属性 1,属性 2,…,属性 N),在数据库中称为表结构。
五 关系代数
5.1 集合运算符
运算符 | 含义 | 名词解释 |
---|---|---|
$\cup $ | 并 | 关系 R 与 S 的并是由属于 R 或属于 S 的元组构成的集合 |
$- $ | 差 | 关系 R 与 S 的差是由属于 R 但不属于 S 的元组构成的集合 |
$\cap $ | 交 | 关系 R 与 S 的交是由属于 R 同时又属于 S 的元组构成的集合 |
$\textcolor{red}{\times} $ | 笛卡尔积 | 两个元组分别为 n 目和 m 目的关系 R 和 S 的笛卡尔积是一个 $(n+m) $列的元组的集合。元组的前 n 列是关系 R 的一个元组,后 m 列是关系 S 的一个元组。 |
示例:
R
A | B | C |
---|---|---|
a1 | b1 | c1 |
a1 | b2 | c2 |
a2 | b2 | c1 |
S
A | B | C |
---|---|---|
a1 | b2 | c2 |
a1 | b3 | c2 |
a2 | b2 | c1 |
$\bf R \times S$
R.A | R.B | R.C | S.A | S.B | S.C |
---|---|---|---|---|---|
a1 | b1 | c1 | a1 | b2 | c2 |
a1 | b1 | c1 | a1 | b3 | c2 |
a1 | b1 | c1 | a2 | b2 | c1 |
a1 | b2 | c2 | a1 | b2 | c2 |
a1 | b2 | c2 | a1 | b3 | c2 |
a1 | b2 | c2 | a2 | b2 | c1 |
a2 | b2 | c1 | a1 | b2 | c2 |
a2 | b2 | c1 | a1 | b3 | c2 |
a2 | b2 | c1 | a2 | b2 | c1 |
5.2 专门的关系运算符
运算符 | 含义 | 名词解释 |
---|---|---|
$\sigma $ | 选择 | 取得关系 R 中符合条件的行 |
$\pi $ | 投影 | 取得关系 R 中符合条件的列 |
$\Join $ | 连接 | 等值连接:关系 R、S 取两者笛卡尔积中属性值相等的元组。 自然连接:一种特殊的等值连接,它要求比较的属性列必须是相同的属性组,并且把结果中重复属性去掉。注意与笛卡尔积的区别。 |
示例 1: 查询年龄小于 20 岁的学生 $\sigma_{Sage} < 20(student) $
Sno | Sname | Ssex | Sage | Sdept |
---|---|---|---|---|
202015001 | 李阳 | 女 | 18 | 计算机 |
202015113 | 王明 | 男 | 18 | 信息安全 |
202015254 | 刘立 | 男 | 19 | 计算机 |
示例 2: 查询学生的姓名和所在系 $\pi_{Sname,Sdept}(Student)$
Sname | Sdept |
---|---|
李阳 | 计算机 |
王明 | 信息安全 |
刘立 | 计算机 |
示例 3:
R
A | B | C |
---|---|---|
a1 | b1 | 5 |
a1 | b2 | 6 |
a2 | b3 | 8 |
a2 | b4 | 12 |
S
B | E |
---|---|
b1 | 3 |
b2 | 7 |
b3 | 10 |
b3 | 2 |
b5 | 2 |
$\begin{matrix} \bf{R \Join S}\\scriptsize{R.B=S.B} \end{matrix}$ (等值连接)
A | R.B | C | S.B | E |
---|---|---|---|---|
a1 | b1 | 5 | b1 | 3 |
a1 | b2 | 6 | b2 | 7 |
a2 | b3 | 8 | b3 | 10 |
a2 | b3 | 8 | b3 | 2 |
$\bf R \Join S$ (自然连接)
A | B | C | E |
---|---|---|---|
a1 | b1 | 5 | 3 |
a1 | b2 | 6 | 7 |
a2 | b3 | 8 | 10 |
a2 | b3 | 8 | 2 |
真题示例 - 5.1:
给定关系 R(A,B,C,D,E) 与 S(A,B,CF,G),那么与关系式 $\pi_{1,2,4,6,7}(\sigma_{1<6}(R \Join S))$ 等价的 SQL 语句如下:select () from R,S where ()
;
A. R.A, R.B, R.E, S.C, G
B. R.A, R.B, D, F, G
C. R.A, R.B, R.D, S.C, F
D. R.A, R.B, R.D, S.C, G
A. R.A=S.A OR R.B=S.B OR R.C=S.C OR R.A<S.F
B. R.A=S.A OR R.B=S.B OR R.C=S.C OR R.A<S.B
C. R.A=S.A AND R.B=S.B AND R.C=S.C AND R.A<S.F
D. R.A=S.A AND R.B=S.B AND R.C=S.C AND R.A<S.B
六 函数依赖
$X \rightarrow Y $, $Y \not\subseteq X $, 则称 $X \rightarrow Y $ 是非平凡的函数依赖。
$X \rightarrow Y $, 但 $Y \subseteq X $, 则称 $X \rightarrow Y $ 是平凡的函数依赖。
例如:关系式 Student (Sno, Sdept, Mname, Cno, Grade)
名称 | 定义 |
---|---|
完全函数依赖 | $(Sno, Cno) \rightarrow Grade $ 是完全函数依赖 |
部分函数依赖 | $(Sno, Cno) \rightarrow Sdept $ 是不分函数依赖 |
传递依赖 | $Sno \rightarrow Sdept $, $Sdept \rightarrow Mname $,则称 Mname 传递依赖于 Sno |
6.1 Armstrong 公理
Armstrong 公理:从已知的一些函数依赖,可以推导出另外一些函数依赖,这就需要一系列推理规则,这些规则常被称作 ”Armstrong“ 公理。
设关系式 R(U, F),U 是关系模式 R 的属性集,F 是 U 上一组函数依赖,则有以下三条推理规则:
- A1 自反律:若 $Y \subseteq X \subseteq U $,则 $X \rightarrow Y $ 为 F 所蕴含。
- A2 增广律:若 $X \rightarrow Y $ 为 F 所蕴含,且 $Z \subseteq U $,则 $XZ \rightarrow YZ $ 为 F 所蕴含。
- A3 传递律:若 $X \rightarrow Y $, $Y \rightarrow Z $ 为 F 所蕴含,则 $X \rightarrow Z $ 为 F 所蕴含。
根据上面三条推理规则,又可推出下面三条推理规则:
- 合并规则:若 $X \rightarrow Y $, $X \rightarrow Z $,则 $X \rightarrow YZ $ 为 F 所蕴含。
- 伪传递规则:若 $X \rightarrow Y $, $WY \rightarrow Z $,则 $XW \rightarrow Z $ 为 F 所蕴含。
- 分解规则:若 $X \rightarrow Y $, $Z \subseteq Y $,则 $X \rightarrow Z $ 为 F 所蕴含。
例 1:
关系式 $S1 (\underline{Sno}, Sdept, Sage) $
超键:Sno、(Sno,Sdept)、(Sno,Sage)、(Sno,Sdept,Sage) 是超键。
主键: $Sno \to Sdept $, $Sno \to Sage $,Sno 是主键(码)
若有关系式 $SC (Sno, Cno, Grade) $ 中,(Sno, Cno) 是主键
例 2:
关系式 $S2 (\underline{Sno, Sname}, Sdept, Sage) $
候选键:Sno、Sname 是候选键,选择 Sno 为主键。不含多余属性的超键称为候选键。
超键:在关系中能唯一标识元组的属性集称为关系模式的超键。
候选键:不含有多余属性的超键称为候选键。
主键:用户挑选出来做元组标识的一个候选键称为主键。
外键:如果关系模式 R 中的某些属性集不是 R 的主键,而是关系模式 S 的主键,则这个属性集对模式 R 而言是外键。
例如:关系式 $SC (\underline{Sno, Cno}, Grade) $ 中,Sno 不是主键,但它是 $S (\underline{Sno},Sdept,Sage) $ 的主键,则 Sno 是关系模式 SC 的外键。
主属性与非主属性:包含在任何一个主键中的属性,称为主属性,否则为非主属性。
例如: $S (\underline{Sno},Sdept,Sage) $,Sno 是主键,也是主属性,Sdept、Sage 是非主属性。
全码(All-key)
例如:关系模式 $R(P, W, A) $ 中,P 是演奏者,W 是作品,A 是听众,该关系模式只有一个包含了全部属性的主键,是全码。
七 规范化
7.1 第一范式(1NF)
若关系模式 R 的每一个分量是不可再分的数据项,则关系模式 R 属于第一范式。如下图不属于第一范式。
例如:关系式 $S (name, address (street, city))$ $\Longrightarrow$ 关系式 $S (name, address)$ 或者 关系式 $S (name, street, city)$
7.2 第二范式(2NF)
若关系模式 $\small R \in 1NF$,且每一个非主属性完全依赖主键时,则关系式 R 是 2NF。
例如:$\small R (学号,姓名,班级,课程,成绩)$
函数依赖:$\small {学号 \to 姓名,学号 \to 班级,(学号,课程) \to 成绩}$
主键:(学号,课程号)
这里姓名,班级部分依赖于主键,不属于 2NF,需将其分解为:
R1(学号,姓名,班级)
R2(学号,课程,成绩)
7.3 第三范式(3NF)
即当 2NF 消除了非主属性对码的传递函数依赖,则称为 3NF。
7.4 不满足范式要求
会出现以下问题:
① 冗余较大 ② 修改异常 ③ 插入异常 ④ 删除异常
真题示例 - 7.1:
给定关系模式 $\small R(U, F) $,其中:属性集 $\small U={A1, A2, A3, A4, A5, A6} $,函数依赖集 $\small F={A1 \to A2, A1 \to A3, A3 \to A4, A1A5 \to A6} $。关系模式 R 的候选码为()。
A. A1A3 B. A1A4 C. A1A5 D. A1A6
快速解题思路:观察选项哪个只在函数依赖集左边出现过。
真题示例 - 7.2:
给定关系 $\small R(U, Fr) $ 其中属性集 $\small U={A,B,C,D} $,函数依赖集 $\small Fr={A \to BC, B \to D } $,给定关系 $\small S(U, Fs) $,其中属性集 $\small U={ACE} $,函数依赖集 $\small Fs={A \to C, C \to E } $ R 和 S 的主键分别为()。
A. A 和 A B. AB 和 A C. A 和 AC D. AB 和 AC
真题示例 - 7.3:
给定关系 $\small R(U, Fr) $ 其中属性集 $\small U={A, B, C, D} $,函数依赖集 $\small Fr={A \to BC, B \to D} $,关系 $\small S (U, Fs) $,其中属性集 $\small U={ACE} $,函数依赖集 $\small Fs={A \to C,C \to E} $。关于 Fr 和 Fs 的叙述,正确的是()。
A. Fr 蕴含 $\small A \to B $, $\small A \to C $,但 Fr 不存在传递依赖
B. Fs 蕴含 $\small A \to E $,Fs 存在传递依赖,但 Fr 不存在传递依赖
C. Fr,Fs 分别蕴含 $\small A \to D $, $\small A \to E $,故 Fr,Fs 都存在传递依赖
D. Fr 蕴含 $\small A \to D $,Fr 存在传递依赖,但是 Fs 不存在传递依赖
真题示例 - 7.4:
给定关系模式 $\small R(U, F) $,其中:属性集 $\small U={A1, A2, A3, A4, A5, A6} $,函数依赖集 $\small F={A1 \to A2, A1 \to A3, A3 \to A4, A1A5 \to A6} $。由于 R 存在非主属性对码的部分函数依赖,所以 R 属于()。
A. 1NF B. 2NF C. 3NF D. BCNF
八 数据库设计
设计阶段 | 成果 |
---|---|
需求分析 | 需求规格说明书、数据字典 |
概念设计 | 概念模型,E-R 图 |
逻辑设计 | 逻辑模型,关系模式 |
8.1 概念设计
冲突类型
属性冲突
属性域冲突:不同学校编码方式不同
属性值冲突:重量采用千克、磅
结构冲突
同一对象在不同应用中的抽象不同:职工在某一应用中是实体,在另一应用中是属性。
同一实体在不同 E-R 图中属性个数和排列次序不同
命名冲突
同名异义
异名同义
8.2 逻辑设计
逻辑设计也称为逻辑结构设计,其任务是将概念模型转化为其特定的 DBMS 上的逻辑模型(层次模型、网状模型、关系模型)。
E-R 图向关系模式转换规则:
- E-R 图的实体转换为关系
- E-R 的属性转换为关系的属性
- E-R 图的关键字转换为关系的关键字
复合属性的转换:
将每个分量属性作为复合属性所在实体的属性或将复合属性本身作为所在实体的属性。
多值属性的转换:
- 将多值属性与所在实体的主键一起组成一个新的关系
- 将多值属性提升为一个实体,通常为弱实体
派生属性:
因为派生属性可由其他属性计算得到,因此,在转化成关系模式时,通常不转换派生属性。
例如:“学生”实体中有“生日”和“年龄”等属性,从“生日”可以计算出“年龄”属性的值,“年龄”属性就是派生属性。
BLOB 型属性:
典型的 BLOB 是一张图片或一个声音文件,由于它们的容量比较大,必须使用特殊的方式来处理。处理 BLOB 的主要思想就是让文件处理器(例如,数据库管理器)不去理会文件是什么,而是关心如何去处理它。因此,从优化的角度考虑,应采用的设计方案是将 BLOB 属性与关系的主键独立为一个关系模式。
联系的属性,1:1 的联系:
一个 1:1 联系可以转换为一个独立的关系模式。
例如:管理(职工号,班级号,…)或者也可以与任意一端对应的关系模式合并。
例如:班级(班级号,学生人数,职工号, …)或教师(职工号,姓名,性别,职称,班级号,…)
联系的属性,1:n 的联系:
- 一个 1:n 的联系可以转换为一个独立的关系模式。
例如:组成(学号,班级号,…) - 与 n 端对应的关系模式合并。
例如:学生(学号,姓名,出生日期,所在系,班级号…)
联系的属性,n:m 的联系:
一个 n:m 的联系可以转换为一个独立的关系模式。
例如:选修(学号,课程号,成绩…),其中学号和课程号为关系模式的组合(联合)主键
联系的属性,多元的联系:
一个多元联系可以转换为一个独立的关系模式。
例如:讲授(职工号,课程号,书号…),其中课程号、职工号、书号为关系模式的组合(联合)主键。
真题示例 - 8.1:
描述企业应用中的实体及其联系,属于数据库设计的()阶段。
A. 需求分析 B. 概念设计 C. 逻辑设计 D. 物理设计
九 事务管理
数据库系统运行的基本工作单位是事务,事务相当于操作系统中的进程,是用户定义的一个数据库操作序列,这些操作序列要么全做要么全不做,是一个不可分割的工作单位。
事务特性(ACID):
- 原子性(Atomicity)
操作。操作序列要么全做要么全不做 - 一致性(Consistency)
数据。数据从一个一致性状态变到另一个一致性状态 - 隔离性(Isolation)
执行。不能被其他事务干扰。 - 持续性(Durability)
变化。一旦提交,改变就是永久的。
十 并发控制
处理并发控制的主要方法是采用封锁技术。它有两种类型:排他型封锁(X 封锁)和共享型封锁(S 封锁):
10.1 排他型封锁(简称 X 封锁)(写锁)
如果事务 T 对数据 A(可以是数据项、记录、数据集,乃至整个数据库)实现了 X 封锁,那么只允许事务 T 读取和修改数据 A,其他事务要等事务 T 解除 X 封锁以后,才能对数据 A 实现任何类型的封锁。
10.2 共享型封锁(简称 S 封锁)(读锁)
如果事务 T 对数据 A 实现了 S 封锁,那么允许事务 T 读取数据 A,但不能修改数据 A,在所有 S 封锁解除之前不允许任何事物对数据 A 实现 X 封锁。
真题示例 - 10.1:
若事务 T1 对数据 D1 加了共享锁,事务 T2、T3 分别对数据 D2、D3 加了排它锁,则事物 T1 对数据();事务 T2 对数据()。
A. D2、D3 加排它锁都成功
B. D2、D3 加共享锁都成功
C. D2 加共享锁成功,D3 加排它锁失败
D. D2、D3 加排它锁和共享锁都失败
A. D1、D3 加共享锁都失败
B. D1、D3 加共享锁都成功
C. D1 加共享锁成功,D3 加排它锁失败
D. D1 加排它锁成功,D3 加共享锁失败
案例分析
案例分析一般出题形式如下:
- 实体联系
根据题干补充 ER 图缺失的实体及其联系 - 关系模式
根据题干补充 ER 图缺失的关系 - 主键外键
找出题干关系模式的主键、外键 - 其他
数据库基础知识或修改/增加关系模式
真题示例
试题二
回答问题 1 至问题 4,将解答填入答题纸的对应栏内
【说明】
某汽车维修公司为了便于管理车辆的维修情况,拟开发一套汽车维修管理系统,请根据下述需求描述完成该系统的数据库设计。
【需求描述】
(1)客户信息包括:客户号、客户名、客户性质、折扣率、联系人、联系电话。客户性质有个人或单位。客户号唯一标识客户关系中的每一个元组。
(2)车辆信息包括:车牌号、车型、颜色和车辆类别。一个客户至少有一辆车,一辆车只属于一个客户。
(3)员工信息包括:员工号、员工名、岗位、电话、家庭住址。其中员工号唯一标识员工关系中的每一个元组。岗位有业务员、维修工、主管。业务员根据车辆的故障情况填写维修单。
(4)部门信息包括:部门号、名称、主管和电话,其中部门号唯一确定部门关系的每一个元组。每个部门只有一名主管,但每个部门有多个员工,每名员工只属于一个部门。
(5)维修单信息包括:维修单号、车牌号、维修内容、工时。维修单号唯一标识维修单关系中的每一个元组。一个维修供可接多张维修单,但一张维修单只对应一个维修工。
【概念模型设计】
根据需求阶段收集的信息,设计的实体联系图(不完整)如图 2-1 所示。
【逻辑结构设计】
根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整):
客户(客户号,客户名,(a),折扣率,联系人,联系电话)
车辆(车牌号,(b),车型,颜色,车辆类别)
员工(员工号,员工名,岗位,(c),电话,家庭住址)
部门(部门号,名称,主管,电话)
维修单(维修单号,(d),维修内容,工时)
【问题 1】(6 分)
根据问题描述,补充 3 个联系,完善图 2-1 的实体联系图。联系名可用联系 1、联系 2 和联系 3 代替,联系的类型为 1:1、1:n 和 m:n (或 1:1、1:* 和 *:* )
【问题 2】(4 分)
根据题意,将关系模式中的空 (a) ~ (d) 的属性补充完整,并填入答题纸对应的位置上。
【问题 3】(2 分)
分别给出车辆关系和维修单关系的主键与外键。
【问题 4】(3 分)
如果一张维修单涉及多项维修内容,需要多个维修工来处理,那么哪个联系类型会发生何种变化?你认为应该如何解决这一问题?
真题答案
题号 | 答案 |
---|---|
2.1 | D |
2.2 | B |
5.1 | B、C |
7.1 | C |
7.2 | A |
7.3 | C |
7.4 | A |
8.1 | B |
10.1 | D、C |
案例分析
【问题 1】
客户和车辆的联系类型为 1:n
部门和员工的联系类型为 1:n
维修工和维修单的联系类型为 1:n
【问题 2】
(a) 客户性质 (b)客户号 (c) 部门号 (d) 车牌号,员工号
【问题 3】
车辆关系:主键:车牌号;外键:客户号
维修单关系:主键:维修单号;外键:车牌号,员工号
【问题 4】
维修单与维修工的联系将从 1:n 变成 m:n。
将维修单号,员工号,维修内容独立出来形成一张表。删除维修单中的员工号,维修内容。
感谢您的耐心阅读!来选个表情,或者留个评论吧!