软考高级架构师-数据库系统(重点)
2025.08.13数据库系统题型为选择题、案例题、论文题,分值在4-9分。
数据库模式
数据库三级模式结构:
- 外模式:它是数据库的用户视图或子模式。它是从概念模式派生出来的,代表了特定应用程序或特定用户组所看到和使用的数据库局部逻辑结构和数据。 当概念模式发生变化(如增加一个新字段、修改表结构),只要这些变化不影响某个外模式所需的数据,那么基于该外模式的应用程序无需修改就能继续工作。DBA只需要修改外模式到概念模式的映射即可。
- 概念模式:它是数据库的全局逻辑视图。它描述了整个数据库中所有数据的逻辑结构和约束(实体、属性、关系、数据类型、完整性约束、安全性约束等)。 就像一栋大楼的完整建筑设计蓝图,展示了所有房间、走廊、管道、电路的结构和连接,但不指定具体用什么品牌的砖头或电线(物理细节),也不指定某个租户看到的办公室布局(用户视图)。
- 内模式:它是数据库的物理存储视图。它描述了数据在计算机存储设备(如磁盘)上如何实际存储的细节。 当内模式发生变化(如更换存储设备、优化索引结构、重组文件物理位置),只要这些变化不改变概念模式(即数据的逻辑结构),那么概念模式和外模式都无需修改,应用程序也感知不到变化(可能性能会变好或变差)。
关系的3种类型,反映了数据在不同场景下的存在形式:
- 基本关系(通常又称为基本表或基表):实际存在的表,实际存储数据的逻辑表示。
- 查询表:查询结果对应的表。
- 视图表:由基表或其他视图表导出的表,本身不独立存储,数据库只存放它的定义,常称为虚表。
视图类型:
- 数据库视图:它一个虚拟表(逻辑上的表),其内容由查询定义(仅保存SQL查询语句)。 同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并没有真正存储这些数据,而是通过查询原始表动态生成所需要的数据。
- 物化视图:它不是传统意义上虚拟视图,是实体化视图,其本身会存储数据。同时当原始表中的数据更新时,物化视图也会更新。
视图的优点:
- 视图能简化用户操作
- 视图使用户能以多种角度看待同一数据
- 视图对重构数据库提供了一定程度的逻辑独立性
- 视图可以对机密数据提供安全保护
分布式数据库
分布式数据库是相对应集中式数据库而言,分布式数据库是将数据库分布到多个数据库服务器上,每个数据库服务器负责处理一部分数据。
分布式数据库特点:
- 数据独立性。除了数据的逻辑独立性与物理独立性外,还有数据分布独立性(分布透明性)。
- 集中与自治共享结合的控制结构。各局部的DBMS可以独立地管理局部数据库,具有自治的功能。 同时,系统又设有集中控制机制,协调各局部DBMS的工作,执行全局应用。
- 适当增加数据冗余度。在不同的场地存储同一数据的多个副本,可以提高系统的可靠性和可用性,同时也能提高系统性能。 (提高系统的可用性,即当系统中某个节点发生故障时,因为数据有其他副本在非故障场地上,对其他所有场地来说,数据仍然是可用的,从而保证数据的完备性。
- 全局的一致性、可串行性和可恢复性。
分布式数据库模式:
- 全局外模式:用户或应用程序视角的数据视图,屏蔽底层分布式细节。提供定制化的数据逻辑视图(如部分表、字段),用户无需知晓数据分片、存储位置或复制机制。
比如,用户查询
SELECT * FROM orders
,无需知道orders
表实际被分片存储在多个节点。 - 全局概念模式:整个分布式数据库的逻辑结构,描述所有数据的实体、关系、约束。整个分布式数据库的逻辑结构,描述所有数据的实体、关系、约束,提供数据一致性的逻辑约束(如全局唯一约束)。
- 分片模式:描述如何将全局数据拆分为分片。
- 水平分片:按行拆分(如 user_id < 1000 的订单存到节点A)。
- 垂直分片:按列拆分(如订单的 id, amount 存节点A,address, phone 存节点B)。
- 混合分片:组合上述两种方式。
- 分布模式:描述分片在物理节点上的位置和副本管理。
- 局部概念模式:单个节点上分片的逻辑结构。描述该节点存储的分片对应的表结构、约束,与全局概念模式对齐,但仅包含局部数据。
- 局部内模式:单个节点上数据的物理存储细节。比如,orders_shard1 在 Node1 使用 B+树索引存储为 /data/orders_shard1.ibd。
分布式数据库管理系统:
- 组成:局部数据库管理系统(LDBMS)、全局数据库管理系统(GDBMS)、全局数据字典、通信管理(CM)
- 结构:全局控制集中的分布式数据库管理系统、全局控制分散的分布式数据库管理系统、全局控制部分分散的分布式数据库管理系统(分布式数据库管理系统-DDBMS)
分片透明性:
- 分片透明:是指用户不必关心数据是如何分片的,它们对数据的操作在全局关系上进行,即如何分片对用户是透明的。
- 复制透明:用户不用关心数据库在网络中各个节点的复制情况,被复制的数据的更新都由系统自动完成。
- 位置透明:是指用户不必知道所操作的数据放在何处,即数据分配到哪个或哪些站点存储对用户是透明的。
- 局部映像透明性(逻辑透明):是最低层次的透明性,该透明性提供数据到局部数据库的映像,即用户不必关心局部DBMS支持哪种数据模型、使用哪种数据操纵语言,数据模型和操纵语言的转换是由系统完成的。 因此,局部映像透明性对异构型和同构异质的分布式数据库系统是非常重要的。
分布式事务,两阶段提交协议2PC:
- 2PC事务提交的两个阶段
- 表决阶段,目的是形成一个共同的决定
- 执行阶段,目的是实现这个协调者的决定
- 两条全局提交规则
- 只要有一个参与者撤销事务,协调者就必须做出全局撤销决定
- 只有所有参与者都同意提交事务,协调者才能做出全局提交决定
数据库设计过程
- 需求分析:明确系统要存储哪些数据及操作需求。输出:需求说明书(包含数据字典、业务规则、数据流图)。
- 概念结构设计:创建独立于技术实现的高层数据模型。输出:ER模型。
- 逻辑结构设计:将概念模型转化为数据库可识别的结构(如表、键)。输出:关系模式图(含所有表结构)。
- 物理设计:针对具体数据库系统(MySQL、Oracle等)优化存储和性能。输出:SQL DDL脚本(建表语句、索引、分区方案)。
概念结构设计-ER模型
概念结构设计的目标是准确反映现实世界的信息需求,捕获用户关心的所有数据对象及其联系。使用图形化表示(ER图),让用户、设计人员、开发者等不同角色都能清晰沟通。
它的产物是ER模型,E是实体(Entity)客观存在并可相互区分的事物或概念,它代表现实世界中一类独立的对象; R是联系(Relationship)是实体集之间或实体集内部的相互关联,在ER图中通常用菱形表示,并用无向线将菱形与相关联的实体集连接起来。菱形框内写上联系名。
映射基数/联系基数(Mapping Cardinalities): 定义了一个实体通过联系能关联到的另一个实体的数量。这是描述联系本质的关键。
两个不同实体集之间的联系:
- 一对一(1:1)
- 一对多(1:n)
- 多对多(n:n)
当系统由多个子系统组成或由不同团队/用户组分别设计局部ER图时,就需要合并ER图(也称为视图集成或综合)。集成的方法:
- 多个局部E-R图一次集成。
- 逐步集成,用累加的方式一次集成两个局部E-R。
集成产生的冲突及解决办法:
- 属性冲突:包括属性域冲突和属性取值冲突
- 命名冲突:包括同名异义和异名同义。
- 结构冲突:包括同一对象在不同应用中具有不同的抽象,以及同一实体在不同局部E-R图中所包含的属性个数和属性排列次序不完全相同。
逻辑结构设计-关系模式
关系模型与逻辑结构设计是数据库设计流程中的核心环节,它承接着概念结构设计(ER模型),并为物理结构设计奠定基础。
相关概念:
- 主键(Primary Key, PK): 唯一标识表中每条记录的列或列组合(非空且唯一)。例如:学生表的主键是学号。
- 外键(Foreign Key, FK): 一个表中的列,引用另一个表的主键,用于强制表间关系和参照完整性。例如:选课表中的学号是外键,引用学生表的学号。
- 候选键(Candidate Key): 能作为主键的列或列组合(满足唯一性和最小性)。
完整性约束:
- 实体完整性:规定基本关系的主属性,不能取空值。
- 参照完整性:外键值必须是被引用表的主键值或NULL。
- 用户定义完整性: 业务规则(如年龄 > 0,性别 IN (‘男’,‘女’))。
从ER图到关系模式,这是逻辑设计的核心任务,需遵循系统化的转换规则将ER模型映射为关系表。 一个实体型必须转换为一个关系模式。
联系转关系模式:
- 一对一联系的转换有两种方式。
- 独立的关系模式:并入两端主键及联系自身属性。(主键:任一端主键)
- 归并(任意一端):并入另一端主键及联系自身属性。(主键:保持不变)
- 一对多联系的转换有两种方式。
- 独立的关系模式:并入两端主键及联系自身属性。(主键:多端主键)
- 归并(多端):并入另一端主键及联系自身属性。(主键:保持不变)
- 多对多联系的转换只有一种方式。
- 独立的关系模式:并入两端主键及联系自身属性。(主键:两端主键的组合键)
关系代数
关系代数是关系型数据库的理论基础。它是一种过程性查询语言,提供了一组形式化的操作符,用于对关系(即数据库表) 进行操作,最终产生一个新的关系作为结果。
核心的关系代数操作符:
- 选择 (Selection - σ):从一个关系中选择满足指定条件的元组(行)。
- 投影 (Projection - π):从一个关系中选择指定的属性(列),并去除重复元组(如果需要)。
- 并 (Union - ∪):将两个具有相同模式的关系中的所有元组合并起来,并自动去除重复元组。
- 差 (Set Difference - -):找出属于第一个关系但不属于第二个关系的元组。两个关系必须具有相同模式。
- 笛卡尔积 (Cartesian Product - ×):将两个关系的所有元组进行组合。如果 R 有 m 个元组,S 有 n 个元组,则 R × S 有 m * n 个元组。
- 自然连接 (Natural Join - ⋈):根据两个关系中具有相同名称的属性进行等值连接,并自动去除重复的属性。
规范化理论(重点、难点)
非规范化的关系模式,可能存在的问题包括:数据冗余、更新异常(修改操作一致性问题)、插入异常、删除异常。
- 数据冗余:相同的信息在多个元组中重复存储,浪费存储空间。
- 更新异常:修改数据时,可能需要修改多处冗余副本。如果只修改了部分副本而没有全部修改,就会导致数据不一致。
- 插入异常:因为缺少主键的一部分(或其他强制依赖),无法插入某些合法或必需的信息。
- 删除异常:删除某些信息时,可能会意外地丢失其他本应保留的信息。