08-数据库设计

08-数据库设计(基于第8小时)

软考-系统架构设计师 | 第2篇 架构设计专业知识 出题形式:单项选择题 + 案例分析题 | 分值占比:4-8 分 教材参考:第8章


0. 考点分析

本小时主要学习数据库基础概念、关系数据库、数据库设计、应用程序与数据库交互、NoSQL数据库等内容。考察侧重概念知识。知识点会涉及单选题(约占2-5分)和案例题(25分)。

作为一名合格的系统架构师,必须掌握数据库设计的基本概念和方法。系统架构设计师考试中的一些案例分析题会来自本小时的内容。


1. 核心知识点

1.1 数据库基础概念

4大基础术语

术语定义
数据(Data)描述事物的符号记录(文字、图形、图像、声音、语言)
数据库系统(DBS)采用数据库技术,有组织、动态存储大量相关联数据的计算机系统
数据库(DB)统一管理的、长期储存在计算机内的、有组织的相关数据的集合
数据库管理系统(DBMS)数据库系统的核心软件,是相互关联的数据集合+访问这些数据的软件

DBMS分类3类

  • RDBS(关系数据库系统)
  • OODBS(面向对象的数据库系统)
  • ORDBS(对象关系数据库系统)

3大发展阶段

阶段特点缺点
人工管理数据量少、不保存、无软件系统处理应用程序与数据依赖性强、数据冗余
文件系统数据可长期保留、不属于特定应用、文件组织多样化数据冗余、不一致性、数据孤立
数据库系统复杂数据模型、高数据独立性

数据模型3要素

  • 数据结构
  • 数据操作
  • 数据的约束条件

数据约束3类

  • 实体完整性:实体的主属性不能取空值
  • 参照完整性:外键参照的完整性(要么为空,要么出现在被参照关系中)
  • 用户定义完整性:具体应用所对应的数据约束(如软考成绩0-75)

DBMS主要功能

  • 数据定义
  • 数据库操作
  • 数据库运行管理
  • 数据组织、存储和管理
  • 数据库的建立和维护

1.2 三级模式两级映像

三级模式

模式别名描述
概念模式全体数据的逻辑结构和特征,所有用户的公共数据视图
外模式子模式/用户模式用户看到或使用的那部分数据的逻辑结构
内模式数据物理结构和存储方式的描述

两级映像

映像独立性
概念模式/内模式映像物理独立性:数据物理存储改变,应用程序不变
外模式/概念模式映像逻辑独立性:数据逻辑结构改变,应用程序不变

1.3 关系数据库基本概念

术语定义
属性(Attribute)描述事物的特征
域(Domain)每个属性的取值范围
目/度(Degree)关系中属性的个数
候选码(Candidate Key)能唯一标识一个元组的属性或属性组
主码(Primary Key)从多个候选码中选定一个
主属性包含在任何候选码中的属性
外码(Foreign Key)不是本关系码但是其他关系码的属性
全码(All-key)所有属性组都是候选码

1.4 关系代数运算

4类运算符

  1. 集合运算符
  2. 专门的关系运算符
  3. 算术比较符
  4. 逻辑运算符

考试重点:集合运算符 + 专门的关系运算符

集合运算符

运算符含义解释
属于R或属于S的元组
属于R但不属于S的元组
属于R同时又属于S的元组
×笛卡尔积n+m列,K1×K2个元组

专门的关系运算符

运算符含义解释
σ选择取得关系R中符合条件的
π投影取得关系R中符合条件的
连接等值连接/自然连接(特殊等值连接,去重)
÷给定R(X,Y)和S(Y,Z),结果P(X)

外连接(扩展运算)

运算符含义
左外连接 ⟕保留左侧关系所有不匹配元组,用null填充右侧属性
右外连接 ⟖保留右侧关系所有不匹配元组,用null填充左侧属性
完全外连接 ⟗完成左外连接和右外连接的操作

1.5 函数依赖

类型定义
函数依赖X→Y:对任意元组u,v,u[X]=v[X] ⇒ u[Y]=v[Y]
平凡函数依赖X→Y,但Y⊆X
非平凡函数依赖X→Y,Y⊄X
完全函数依赖X→Y,X的任何真子集都不能函数决定Y
部分函数依赖X→Y,但X的某个真子集也能函数决定Y
传递依赖X→Y,Y→Z,且Y不函数决定X,则Z传递依赖于X

Armstrong公理系统3条推理规则

  • A1 自反律:若Y⊆X⊆U,则X→Y
  • A2 增广律:若X→Y,且Z⊆U,则XZ→YZ
  • A3 传递律:若X→Y,Y→Z,则X→Z

3条导出规则

  • 合并规则:X→Y,X→Z ⇒ X→YZ
  • 伪传递规则:X→Y,WY→Z ⇒ XW→Z
  • 分解规则:X→Y,Z⊆Y ⇒ X→Z

1.6 关系数据库规范化(范式)

4大范式(1NF→BCNF)

范式条件
1NF每个分量是不可再分的数据项
2NF1NF + 每一个非主属性完全依赖主码
3NF2NF + 消除非主属性对主码的传递函数依赖
BCNF1NF + 每个属性都不传递依赖于R的候选码

关系:BCNF ⊂ 3NF ⊂ 2NF ⊂ 1NF

候选码判断方法

  • 看哪个属性只在依赖集F的"→“左边出现过,该关系的候选码必定包含那个属性
  • 例:F={A1→A2, A1→A3, A3→A4, A1A5→A6},只在左边出现的是A1和A5,所以候选码为A1A5

1.7 事务管理(ACID)

特性含义
原子性(Atomicity)事务在数据库中要么全做,要么全都不做
一致性(Consistency)事务执行使数据库从一个一致性状态变到另一个一致性状态
隔离性(Isolation)一个事务的执行不能被其他事务干扰
持久性(Durability)事务一旦提交,对数据库的改变必须是永久的

SQL事务语句

  • BEGIN TRANSACTION:事务开始
  • COMMIT:事务提交(写入磁盘)
  • ROLL BACK:事务回滚

1.8 并发控制

两种封锁类型

封锁说明
X封锁(排他型)事务T对数据A实现X封锁,只允许T读和修改,其他事务必须等T解除X封锁
S封锁(共享型)事务T对数据A实现S封锁,允许T读但不能修改,所有S封锁解除前不允许任何X封锁

1.9 数据库备份与恢复

4种备份分类

维度分类特点
是否允许并发静态备份简单,但降低数据库可用性
动态备份备份和用户事务可并发,但后援副本可能不保证正确
备份范围海量备份每次备份全部数据库
增量备份只备份上次更新过的数据(适合大数据量频繁事务)

4类故障

  1. 事务故障 → UNDO + REDO
  2. 系统故障
  3. 介质故障 → 装入副本+日志执行撤销/重做
  4. 计算机病毒

1.10 数据库设计步骤

6步骤

  1. 用户需求分析
  2. 概念结构设计
  3. 逻辑结构设计
  4. 物理结构设计
  5. 应用程序设计
  6. 运行维护

E-R图3要素

  • 实体(型):矩形框
  • 属性:椭圆形
  • 实体之间联系:菱形框

E-R图合并时需解决3类冲突

  • 属性冲突
  • 命名冲突
  • 结构冲突

1.11 商业智能(BI)

BI = 数据仓库 + OLAP + 数据挖掘

数据仓库4大关键特征

  • 面向主题
  • 集成的
  • 非易失的
  • 时变的

传统数据库 vs 数据仓库

比较传统数据库数据仓库
数据内容当前值历史的、归档的、归纳的、计算的数据
数据目标面向业务操作面向主体域,分析应用
数据特性动态变化、可更新静态、不能直接更新
使用频率

OLTP vs OLAP

项目OLTPOLAP
用户操作人员、低层管理人员决策人员、高级管理人员
功能日常操作处理分析决策
DB设计面向应用面向主题
数据当前、细节、二维历史、聚集、多维
存取读/写数十条读上百万条
工作单位简单事务复杂查询
DB大小100MB-GB级100GB-TB级

1.12 应用程序与数据库交互

4种方式

方式说明
库函数级别(如OCI)最底层API,强依赖特定DB,学习难度大
嵌入式SQL(Embeded SQL)SQL直接写入高级程序语言源代码
通用数据接口标准(ODBC)解决异构数据库共享,统一处理关系数据库
ORM对象关系映射,实现面向对象语言与不同类型系统数据的转换

ODBC相关接口:DAO、RDO、ADO、JDBC

ORM框架对比

  • Hibernate:全自动ORM,强大复杂笨重,学习成本高
  • MyBatis:半自动框架
  • JPA:Java自带框架

1.13 NoSQL数据库

4种类型

类型特点代表产品
列式存储数据库应对分布式海量数据,键指向多列Cassandra、HBase、Riak
键值对存储数据库简单、易部署,但部分值查询更新效率低Redis、Voldemort、Oracle BDB
文档型数据库处理网页等复杂数据时比键值对查询效率高CouchDB、MongoDB、SequoiaDB
图数据库适合社交网络、生物信息网络等图建模数据Neo4J、InfoGrid、Infinite Graph

NoSQL 5大特征:易扩展、大数据量、高性能、灵活的数据模型、高可用

NoSQL 4层框架(从下至上)

  1. 数据持久层(Data Persistence)
  2. 数据分布层(Data Distribution Model)
  3. 数据逻辑模型层(Data Logical Model)
  4. 接口层(Interface)

NoSQL适用场景

  • 数据模型比较简单
  • 需灵活性更强的IT系统
  • 对数据库性能要求较高
  • 不需要高度的数据一致性

1.14 分布式数据库

6层体系结构(自顶向下)

  1. 全局视图(全局外模式):用户视图,全局概念模式的子集
  2. 全局概念模式:数据的整体逻辑结构
  3. 分片模式:关系模式分解为数据片
  4. 分配模式:定义数据片段的存放节点(分布式本质)
  5. 局部概念模式:局部数据库的概念模式
  6. 局部内模式:局部数据库的内模式

分布式数据库4大特点

  • 共享性:不同节点数据共享
  • 自治性:每个节点独立管理本地数据
  • 可用性:某场地故障可使用其他副本
  • 分布性:数据分布在不同场地

分布透明性3层次(由高到低)

  1. 分片透明性:只对全局关系操作,不必考虑分片(最高)
  2. 位置透明性:了解分片但不必了解存储场地
  3. 局部数据模型透明性(逻辑透明):了解分片和存储场地但不必了解局部数据模型

1.15 数据库优化技术

集中式数据库反规范化设计5种

  • 增加冗余列(避免连接操作)
  • 增加派生列(减少计算量)
  • 重新组表(减少连接)
  • 水平分割表(按记录分割)
  • 垂直分割表(按列分割,主键+部分列/主键+其他列)

反规范化优缺点

  • 优点:避免连接操作,提高性能
  • 缺点:数据重复存储,浪费磁盘空间,产生数据不一致
  • 解决:触发器、事务机制、应用保证、批处理脚本

分布式数据库优化4技术

  1. 主从复制(3种同步模式:全同步、半同步、异步)
  2. 读写分离
  3. 分表(垂直切分/水平切分)
  4. 分库(按业务模块分开)

binlog 3种模式

  • 基于SQL语句的复制(SBR):binlog日志量少,可能造成主从不一致(如time函数)
  • 基于行的复制(RBR):不记录SQL,记录更新前后数据,可保证主从一致
  • 混合复制(MBR):以上两种的混合,自动选择

1.16 分布式缓存Redis

Redis定位

  • 分布式缓存技术
  • 也是键值对数据库类型(NoSQL)
  • 基于内存的读写,比磁盘数据库性能高
  • key-value形式保存

5种核心数据类型

数据类型存储值适用场景案例
string字符串/整数/浮点缓存层、计数器视频播放量、文章浏览量
hash键值对无序散列表描述用户信息,节省空间用户信息存储
set无序集合,值不重复去重、抽奖、初始化用户池共同好友、标签管理
list双向链表,模拟栈/队列顺序访问回复评论、点赞、粉丝列表
zset有序集合,每个元素有分数排行榜当天最热前10名、热搜榜

业务功能 → 数据类型对应关系

  • string → 计数器(用户帖子的评论计数器)
  • list → 粉丝列表、好友信息发布/订阅
  • set → 标签管理、共同好友
  • hash → 用户信息结构化存储
  • zset → 排名(最热前10名、热搜榜)

读写数据步骤

  • 读:①根据key读缓存 → ②成功直接返回 → ③若key不在缓存则读数据库 → ④成功后写缓存 → ⑤成功返回
  • 写:①根据key值写数据库 → ②成功后更新缓存key值 → ③成功返回

2种过期策略

  • 定期删除:随机抽取设置了过期时间的key
  • 惰性删除:查询时检测key是否过期,过期则删除

6种淘汰机制

  • volatile-lru / volatile-lfu / volatile-random / volatile-ttl
  • allkeys-lru / allkeys-lfu / allkeys-random

2种持久化方式对比

项目RDB内存快照AOF日志
原理数据集快照写入磁盘持续保存Redis更新命令
磁盘刷新频率
文件大小
数据恢复效率
数据安全

3大缓存异常问题

异常原因解决方案
缓存穿透请求访问了不存在的key,绕过缓存访问DB①限制IP访问次数 ②布隆过滤器 ③预热Redis ④DB中也没有的key在Redis中设为null
缓存雪崩大量key同时过期,请求直接访问DB①主从复制+cluster集群 ②过期时间加随机值 ③服务降级/熔断/限流
缓存击穿少量热点key过期失效,请求直接访问DB①设置较长过期时间/永久有效 ②分布式锁控制DB访问流量

Redis集群3方式

  • 主从复制集群
  • 哨兵集群
  • Cluster集群

集群切片3方式

  • 客户端分片
  • 代理分片
  • 服务器端分片

2. 关键概念速查

概念定义/说明常见考点
3级模式外模式/概念模式/内模式对应视图层/逻辑层/物理层
2级映像概念↔内模式=物理独立;外模式↔概念=逻辑独立独立性识别
关系代数并/差/交/笛卡尔积/选择/投影/连接/除集合运算vs专门关系运算
1NF分量不可再分最基础范式
2NF1NF+非主属性完全依赖主码消除部分函数依赖
3NF2NF+消除非主属性对主码的传递依赖消除传递依赖
BCNF1NF+每个属性不传递依赖候选码最高范式(教材重点)
ACID原子性/一致性/隔离性/持久性事务4特性
X封锁排他型,只允许一个事务独锁写锁
S封锁共享型,可读不可修改读锁
E-R图矩形=实体,椭圆=属性,菱形=联系概念结构设计
数据仓库面向主题/集成/非易失/时变4大特征
OLTP联机事务处理,操作型日常操作
OLAP联机分析处理,分析型决策支持
列式存储应对分布式海量数据Cassandra/HBase
文档型处理复杂数据查询效率高MongoDB
图数据库适合图建模数据Neo4J
分片透明性不必考虑分片最高级分布透明
位置透明性了解分片,不必了解场地中级
Redis string字符串/数字计数器、缓存
Redis list双向链表粉丝列表、评论
Redis set无序集合不重复共同好友、标签
Redis hash键值对散列表用户信息
Redis zset有序集合带分数排行榜
缓存穿透不存在key访问DB布隆过滤器
缓存雪崩大量key同时过期过期时间加随机值
缓存击穿热点key过期分布式锁
RDB内存快照恢复快但安全低
AOF更新命令日志恢复慢但安全高

3. 典型例题

题目1:数据库系统 vs 文件系统

题目:数据库系统与文件系统的区别不包括( )。 A.对应用程序的高度独立性 B.数据的充分共享性 C.文件组织形式的多样化 D.操作方便性

答案:C

解析:数据库的特点包括对应用程序的高度独立性、数据的充分共享性、操作方便性。文件组织形式的多样化是文件系统的特点,不是数据库系统的特点(数据库的数据按同一种数据结构存储)。

题目2:DBMS功能

题目:( )描述的是DBMS向用户提供数据操纵语言,实现对数据库中数据的基本操作,如检索、插入、修改和删除。 A.数据定义 B.数据库操作 C.数据库运行管理 D.数据组织、存储与管理

答案:B

解析:DBMS功能主要包括数据定义、数据库操作、数据库运行管理、数据组织存储与管理、数据库的建立和维护。数据库操作是DBMS向用户提供数据操纵语言(DML),实现对数据库数据的基本操作(检索、插入、修改、删除)。

题目3:范式判断

题目:给定关系模式R(U,F),其中:属性集U={A1,A2,A3,A4,A5,A6};函数依赖集F={A1→A2, A1→A3, A3→A4, A1A5→A6}。关系模式R的候选码为(1),由于R存在非主属性对码的部分函数依赖,所以R属于(2)。 (1)A.A1A3 B.A1A4 C.A1A5 D.A1A6 (2)A.1NF B.2NF C.3NF D.BCNF

答案:C A

解析:判断候选码:A1和A5都只在依赖集F的”→“左边出现过,所以候选码是A1A5。“R存在非主属性对码的部分函数依赖"说明不满足2NF要求(2NF要求非主属性完全依赖主码),因此R只能是1NF

题目4:Redis数据类型应用

题目:某互联网文化发展公司因业务发展,需要建立网上社区平台,为用户提供对网络文化产品进行评论交流的平台。功能包括:(a)用户帖子的评论计数器;(b)支持粉丝列表功能;(c)支持标签管理;(d)支持共同好友功能等;(e)提供排名功能,如当天最热前10名帖子排名;(f)用户信息的结构化存储;(g)提供好友信息的发布/订阅功能。请选择Redis数据类型填空。

  • string → (1)
  • list → (2)
  • set → (3)
  • hash → (4)
  • zset → (5)

答案

  • (1)(a) 计数器场景
  • (2)(b)(g) 粉丝列表+发布/订阅
  • (3)(c)(d) 标签+共同好友(去重)
  • (4)(f) 用户信息结构化
  • (5)(e) 排行榜

解析:string适合计数器,list双向链表模拟粉丝列表/订阅,set无序去重适合共同好友/标签,hash结构化适合用户信息,zset有序集合适合排行榜。


4. 高频考点

  1. ACID 4特性:原子性+一致性+隔离性+持久性(5年8考)
  2. 范式判断:1NF→2NF→3NF→BCNF的递进条件(部分依赖→传递依赖)
  3. 候选码判断方法:只在F的”→“左边出现过的属性必在候选码中
  4. 关系代数运算:选择(行)vs 投影(列)的区别,外连接3种
  5. 三级模式两级映像:物理独立性=概念↔内模式;逻辑独立性=外模式↔概念
  6. 数据完整性3类:实体完整性(主属性非空)+ 参照完整性(外键)+ 用户定义完整性
  7. OLTP vs OLAP:操作型vs分析型,10个对比维度
  8. NoSQL 4类型:列式/键值/文档/图,适用场景不同
  9. Redis 5种数据类型应用场景:string(计数)/hash(用户)/set(去重)/list(队列)/zset(排行榜)
  10. 缓存三大异常:穿透(不存在key)/雪崩(大量key同时过期)/击穿(热点key过期)
  11. RDB vs AOF持久化:快照vs日志,恢复效率vs数据安全
  12. 反规范化5种方法:冗余列/派生列/重组表/水平分割/垂直分割
  13. 分布式数据库6层结构:全局视图→全局概念→分片→分配→局部概念→局部内模式
  14. 分布透明性3层次:分片>位置>局部数据模型(从高到低)
  15. binlog 3种模式:SQL语句/行/混合,各有优缺点
使用 Hugo 构建
主题 StackJimmy 设计