系统架构设计师(三):数据库系统

系统架构设计师(三):数据库系统

引言

本文对应《系统架构设计师教程》(以下简称官方教材 )第二章 2.3.3 数据库及第六章**数据库设计基础知识 **的内容。本文重点聚焦在第六章。

数据库概念

数据:数据库存储的基本对象,是描述事物的符号记录。数据种类包括:文本、图形、图像、音频、档案记录等。

数据库DB:长期存储在计算机内、有组织、可共享的大量数据的集合。

数据库基本特征

  • 数据按一定的数据模型组织、描述和存储。
  • 可为用户共享。
  • 冗余度小。
  • 数据独立性高。
  • 易扩展。

数据库系统

数据库系统DBS:采用数据库技术,有组织、动态存储大量相关数据,方便用户访问,由以下四部分组成:

  1. 数据库:统一管理、长期存储在计算机内,有组织的相关数据的集合。
  2. 硬件:构成计算机系统包括存储数据所需要的外部设备。
  3. 软件:操作系统、数据库管理系统及应用程序。
  4. 人员:系统分析和数据库设计人员、应用程序员、最终用户、数据库管理员DBA。

数据库管理系统DDMS

实现对共享数据有效的组织、管理和存取,包括数据定义、数据库操作、数据库运行管理、数据的存储管理、数据库的建立和维护等。

数据库三级模式与两级映像

数据库三级模式

  • 外模式:对应数据库视图层,将表进行一定的处理后提供给用户使用。
  • 模式:对应逻辑层,又称逻辑模式,根据应用、需求将物理数据划分成一张张表。
  • 内模式:对应物理层,管理如何存储物理的数据。

数据库两级映像

  • 外模式-模式映像:是表和视图之间的映射,存在于概念级和外部级之间。如果表中的数据发生了修改,只需要修改此映射关系,而无需修改应用程序。
  • 模式-内模式映像:是表和数据的物理存储直接的映射,存在于概念级和内部级之间。如果修改了数据存储方式,只需要修改此映射关系,而无需修改应用程序。

数据库设计

  1. 需求分析:获得用户对系统的三个要求:信息要求、处理要求、系统要求。产出物有:数据流图数据字典需求说明书
  2. 概念结构设计:设计E-R图,即实体-联系图,工作步骤包括:选择局部应用逐一设计分E-R图E-R图合并 。产出物:E-R图
  3. 逻辑结构设计:将E-R图转成关系模式,工作步骤包括:确定数据模型E-R图转为指定的数据模型确定完整性约束和确定用户视图 。产出物:关系模式
  4. 物理设计:确定数据该如果存储到物理空间,工作步骤包括:确定数据分布存储结构访问方式 。产出物:数据存储方式与访问方式
  5. 数据库实施阶段:根据逻辑设计和物理设计阶段的结果,建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
  6. 数据库运行和维护阶段:数据库应用系统经过试运行即可投入运行,该阶段需要不断对系统进行评价、调整与修改。

E-R图合并冲突

  • 属性冲突:同一实体的同一个属性在不同的分E-R图中,取值或者数据类型不一样。例如学号在一个分E-R图中用的是数值类型,在另一个分E-R图中用的是字符串类型。解决方式:协商统一。
  • 命名冲突:同一实体的相同意义的属性,在不同的分E-R图有不同的意义,包含同名异议和异名同义。例如手机号在一个分E-R图中用的是"手机号",在另一个分E-R图中用的是"联系方式"。解决方式:协商统一。
  • 结构冲突:同一个实体,在不同的分E-R图中属性个数和属性排列次序不完全相同。解决方式:个数不同:保留较多的结构,缺省部分补充。

键和属性

  • 超键:能唯一标识表中属性的组合
  • 候选键:超键中去掉冗余的属性,剩余属性就是候选键,候选键可以有一个,也可以有多个。
  • 主键:任选一个候选键,即可作为主键。
  • 外键:其他表中的主键。
  • 主属性:候选键内的属性为主属性,其他属性为非主属性。
  • 简单属性:属性不可拆分。
  • 复合属性:属性可拆分,例如地址信息,可拆分为省市区。
  • 派生属性:可以通过计算得出的属性,例如年龄,可以通过出生日期计算。
  • 多值属性:一个属性取值有多个,如一个人可以有多个联系方式。

候选键判定

  1. 将关系模式的函数依赖关系用"有向图"的方式表示。
  2. 找入度为0的属性,并以该属性集合为起点,遍历有向图,如果能正常遍历图中所有节点,则该属性为关系模式的候选键。
  3. 如果入度为0的属性集合不能遍历所有节点,则需要尝试将中间节点并入属性集合中,直到该集合能遍历所有节点。

完整性约束

  • 实体完整性约束:即主键约束,主键值不能为空,不可重复。
  • 参照完整性约束:即外键约束,外键必须是其他表中已经存在的主键的值,或者为空。
  • 自定义完整性约束:根据用户需求自定义,如性别只能是男、女。

数据模型

数据模型分类

关系模型二维表形式表示的实体-联系模型,是将实体-联系模型转换而来的,经过开发人员设计的。
概念模型:从用户的角度进行建模的,是现实世界到信息世界的第一抽象,是真正的实体-联系模型。
网状模型:实体类型及其实体之间的联系,一个事物和另外几个事物都有联系,形成一张网。
面向对象模型:采用面向对象的方法设计数据库,以对象为单位,每个对象包括属性和方法,具有类和继承等特点。

数据模型三要素

  • 数据结构:所研究的对象类型的集合。
  • 数据操作:对数据库中各种对象的实例允许执行的操作的集合。
  • 数据的约束条件:一组完整性规则的集合。

E-R图

E-R图用来描述概念数据模型,使用椭圆表示属性长方形表示实体、嵌套长方形表示弱实体(一般没有)、菱形表示联系,联系两端要写联系类型(1对11对多多对多 )。如下图学生选课E-R图:

关系代数

集合运算

集合运算:将每一行都作为一个整体进行计算,包含并运算(∪)、交运算(∩)、差运算(-),它们要求运算对象和运算结果结构相同。

并运算(∪)

并运算:S1∪S2:结果是两张表中所有记录数合并,相同记录只显示一次。

交运算(∩)

交运算:S1∩S2:结果是两张表中相同的记录。

差运算(-)

差运算:S1-S2:结果是S1表中有而S2表中没有的那些记录。

一元运算

一元运算:针对单张表或单个关系模式结果的运算,包括投影(π)和选择(δ)。

投影(π)

投影:类似查询语句中的Select后面的数据列,按条件选择某关系模式中的某列,列也可以用数字表示。例如从S1中选择Sno列和Sname列:

从上述结果可以看出,投影会改变表结构。

选择(δ)

选择:类似查询语句中的Where条件,按条件选择某关系模式中的某条记录。例如从S1中选出学号为N001的数据行:

复杂运算

复杂运算:主要包含笛卡尔积(*)和自然连接(⨝),它们允许运算对象和运算结果结构不同。

笛卡尔积(*)

笛卡尔积:S1*S2:类似查询语句中的联合查询(S1,S2),结果包括S1和S2的所有属性列,并且S1中的每条记录依次和S2中的所有记录组合成一条新的记录,最终属性列为S1+S2属性列,记录数为S1的记录数*S2的记录数。

自然连接(⨝)

自然连接:显示全部的属性列,去除重复属性列,显示两个关系模式中属性相同且值相同的记录,即所有同名属性列取值相等。

上述自然连接结果,相当于:
S 1 ⨝ S 2 = π 1 , 2 , 3 , 5 ( δ 1 = 4 ( S 1 ∗ S 2 ) ) S1⨝S2 = π_{1,2,3,5}(δ_{1=4}(S1*S2)) S1⨝S2=π1,2,3,5(δ1=4(S1∗S2))
关系代数中,自然连接的性能优于笛卡尔积。

规范化理论

函数依赖

函数依赖:给定一个X,能确定唯一一个Y,就称X确定Y,或者说Y依赖于X。函数依赖又分为部分函数依赖和传递函数依赖:

  • 部分函数依赖:A可以确定C,(A, B)可以确定D,(A, B)中的一部分A可以确定C,则称为部分函数依赖。
  • 传递函数依赖:当A和B不等价时,A可以确定B,B可以确定C,则A可以确定C,称为传递函数依赖。

函数依赖定律

  • 自反律:若Y⊆X⊆U,则X → Y。
  • 增广律:若X → Y,且Z⊆U,则XZ → ZY。
  • 传递律:若X → Y,Y →Z,则X → Z。
  • 合并律:若X → Y,X → Z,则X → YZ。
  • 伪传递律:若X → Y,WY → Z,则XW → Z。
  • 分解律:若X → Y,Z⊆Y,则X → Z。

范式

第一范式1NF

关系中每个属性不可再分,即每个属性都只能是简单属性,不能是复合属性。

上图不满足第一范式,因为地址属性可以再分,无法在数据库中建表。

第二范式2NF

在第一范式的基础上,消除非主属性对候选键的部分函数依赖,则属于第二范式。

上图不满足第二范式,因为候选键为(学号, 课程号),而学生姓名依赖于学号,存在非主属性对候选键的部分函数依赖。

如果想解决上述问题,则需要把学号和学生姓名拆成一张表:S1(学号, 课程号, 成绩);S2(学号, 学生姓名)。

如果候选键有且仅有一个,且满足第一范式,则一定也满足第二范式,因为候选键不可拆分,不存在部分函数依赖。

第三范式3NF

在第二范式的基础上,消除非主属性对候选键的传递函数依赖,则属于第三范式。

上图不满足第二范式,因为候选键为(学号),班级名称依赖于班级号,班级号依赖于学号,存在非主属性对候选键的传递函数依赖。

如果想解决上述问题,则需要把班级号和班级名称拆成一张表:S1(学号, 学生姓名, 班级号);S2(班级号, 班级名称)。

BC范式BCNF

在第三范式的基础上,消除主属性对候选键的部分和传递函数依赖,则属于第BC范式。

不是所有的关系都能拆分到BC范式。

假设存在关系模式R(S, T, J)存在关系F={(SJ→ T),(T → J) },其中候选键为(ST, SJ),所有属性都为主属性,不存在非主属性,则满足第三范式;存在(T → J)的部分函数依赖,因此不满足BC范式。

第四范式4NF(了解即可)

不允许存在多值函数依赖。

模式分解

保持函数依赖

定理:如果关系模式 R分解为 R1、R2...Rn,则保持函数依赖要求:

原模式 R中的所有函数依赖(FD),可以由分解后各子模式 Ri中的函数依赖逻辑蕴含(即通过子模式的 FD 推导得出)。

例1:关系模式R(A,B,C),F={A→B, B→C},将其拆分成R1(A,B),R2(B, C),属于函数依赖。

例2:关系模式R(A,B,C),F={A→B, B→C, A→C},将其拆分成R1(A,B),R2(B, C),属于函数依赖:因为R1(A,B),R2(B, C),A→B, B→C,逻辑蕴涵A→C。

可以通过推导得出的函数依赖,称为冗余函数依赖,在考虑是否保存函数依赖时,可以将其忽略,如例2中的A→C。

无损分解

将一个关系模式分解成若干个关系模式,通过自然连接和投影等运算,仍然能还原到原来的关系模式,称为无损分解。

如果两个关系模式没有同名属性列,则一定是有损分解。

定理:如果关系模式R分解为R1、R2,则R1、R2无损分解的充分必要条件是:

R1∩R2 → (R1 - R2) 或 R1∩R2 → (R2 - R1)。

R1∩R2结果为∅,则一定是有损分解。

数据控制

安全性

措施 说明
用户标识和鉴定 最外层的安全保护措施,可以使用用户账户、口令及随机数检验等方式。
存取控制 对用户授权,包含操作类型(如增、删、改、查等)和数据对象(主要是数据范围)的权限。
密码存储和传输 对远程终端信息用密码传输。
视图保护 对视图进行授权(视图不可修改)。
审计 使用一个专用文件或数据库,自动将用户对数据的所有操作记录下来。

故障恢复

  • 冷备份:也称静态备份,将数据库正常关闭,在停止状态下,将数据库文件全部备份下来,是最简单、高度安全的。
  • 热备份:也称动态备份,利用备份软件,在数据库正常运行的状态下,将数据库中的数据文件备份出来,恢复速度最快,但一旦备份失败,备份可能完全不可用,难以维护。
  • 完全备份:备份所有数据
  • 差量备份:仅备份上一次完全备份之后变化的数据。
  • 增量备份:备份上一次备份后变化的数据。
故障关系 故障原因 解决方法
事物本身的可预期故障 本身逻辑 在程序中预先设置Rollback语句。
事物本身的不可预期故障 算术溢出、违反存储保护 由DBMS的恢复子系统通过日志,撤销事务对数据库的修改,回退到事务初始状态。
系统故障 系统停止运转 使用检查点法。
介质故障 外存被破坏 使用日志重做业务。
相关推荐
DB虚空行者2 小时前
MySQL误删/批量更新数据恢复实战:基于Flashback工具的完整方案
数据库·mysql
IvorySQL2 小时前
外键的本质竟然是触发器?深入解析 PostgreSQL 约束底层
数据库·postgresql·开源
九皇叔叔2 小时前
MySQL Next-Key Lock 锁表事故全拆解(从现象到根治)
数据库·mysql
最后一个bug2 小时前
CPU的MMU中有TLB还需要TTW的快速查找~
linux·服务器·系统架构
短剑重铸之日3 小时前
7天读懂MySQL|Day 4:锁与并发控制
数据库·mysql·架构
2401_876221344 小时前
数据库系统概论(第6版)模拟题2
数据库
爱学习的小可爱卢4 小时前
数据库MySQL——MySQL 可重复读隔离级别:Read View 底层原理与幻读问题深度剖析(面试必知)
数据库·mysql
lifewange4 小时前
数据库索引里面的游标是什么?
数据库·oracle
PhDTool5 小时前
计算机化系统验证(CSV)的前世今生
数据库·安全·全文检索