【软考速通笔记】系统架构设计师⑥——数据库设计基础知识

文章目录

一、前言

笔记目录大纲请查阅:【软考速通笔记】系统架构设计师------导读

二、前言

数据库的很多概念,平时都有接触过,就不一一讲述。
直接上干货,聚焦于那些频繁出现的考点。

三、关系代数运算

3.1 运算符

运算符 含义 解释
R∪S,表示关系R和关系S中所有不重复的元组构成的集合
R∩S,表示同时属于关系R和关系S的元组构成的集合
--- R-S,表示属于关系R但不属于关系S的元组构成的集合
× 笛卡尔积 R×S,表示关系R中的每个元组与关系S中的每个元组进行所有可能的组合构成的新关系。结果关系的属性个数是R和S属性个数之和,元组个数是R和S元组个数的乘积
σ 选择 R中符合条件的行,σcon®,表示从关系R中选择满足给定条件con的元组构成的新关系
π 投影 R中符合条件的列,πA®,表示从关系R中选择属性包含在A中的列构成的新关系
连接 记作R⋈θS,当θ为等号(=)时,称为等值连接
÷ R÷S,其结果是一个新的关系,其属性是R中去除S中的属性后剩余的属性
子集 A⊆B,A是B的子集
依赖 X→Y,X决定Y,Y依赖X

3.2 函数依赖

  • (学号,课程号)→成绩,是完全函数依赖。
  • (学号,课程号)→系号,是部分函数依赖。因为不需要课程号,只要学号就能退出系号。

3.3 规范化

BCNF ⊆ 3NF ⊆ 2NF ⊆ 1NF

  • 1NF
    • 每个表的每个列都是不可分割的基本数据项(即每个列都是原子性的,不可再分)。
    • 每列的值都是唯一的,没有重复的列。
    • 每个单元格中只能有一个值。
  • 2NF
    • 满足1NF。
    • 表中的每个实例或行必须可以被唯一地区分,即表必须有一个主键。
    • 所有非主键属性完全依赖于主键,没有部分依赖。
  • 3NF
    • 满足2NF。
    • 所有字段都只与主键直接相关,而不是与另一个非主键字段相关。
    • 消除了传递依赖,即非主键字段不能相互依赖。
  • BCNF
    • 满足3NF。
    • 对于任何非平凡的函数依赖 X → Y,X 必须是候选键。
    • 解决了3NF未能解决的一些问题,特别是当一个表有多个候选键时。

四、数据库优化

  • 增加冗余列:冗余列是指即重复存储的数据,通过增加冗余列可以减少复杂的表连接操作,提高查询效率。
  • 增加派生列:派生列(计算列)是基于表中其他列的值通过某种计算得到的列。存储派生列减少每次查询时的重复计算,提升查询性能。
  • 重新组表:对表结构进行优化,如分解大表或合并小表,以提高数据管理和查询效率。
  • 水平分割表:将表按行分割,分布到不同的数据库或表中,以减轻单个表的压力。
  • 垂直分割表:将表按列分割,将不常用的列移动到单独的表中,以减少数据的I/O操作。
  • 数据热备份:通过实时备份技术,确保数据的安全性和一致性,同时不影响数据库的性能。
  • 读写分离:将读操作和写操作分离到不同的数据库实例或服务器上,减轻主数据库压力,提高系统吞吐量和响应时间。
  • 分库:根据业务不同把相关的表切分到不同的数据库中,如web、bbs、blog等库。如果业务量很大,还可将切分后的库做主从架构,进一步避免单个库压力过大。
  • 分表:当数据库中某个表数据量过大时,考虑将表拆分成多个小表,减轻单个表的压力,提高处理效率。

五、缓存Redis

5.1 数据类型

类型 描述 用于
string 字符串、整数或者浮点 计数器、播放量
hash 代替string,节省空间 描述用户信息
set 无序集合,不能重复 去重、抽奖
list 双向链表 队列、回复评论和点赞
zset 有序集合 首页推荐10个最热门的帖子

5.2 读写操作

  • 读操作
    • 根据key读缓存
    • 读取成功则直接返回
    • 若不存在,则根据可以读数据库
    • 读取成功则写入缓存
    • 成功返回。
  • 写操作
    • 根据key写数据库
    • 成功后写缓存
    • 成功返回。

若觉得文章对你有帮助,随手『点赞』、『收藏』、『关注』,也是对我的支持。

相关推荐
芭拉拉小魔仙10 分钟前
浏览器数据存储方法深度剖析:LocalStorage、IndexedDB、Cookies、OPFS 与 WASM - SQLite
数据库·sqlite·wasm
Code哈哈笑16 分钟前
【笔记】离散数学 1-3 章
笔记
老王笔记44 分钟前
MySQL如何区分幻读和不可重复读
数据库·mysql
不爱学习的啊Biao1 小时前
【08】MySQL复杂查询:子查询语句详解与示例
数据库·mysql·子查询
st_331 小时前
Junit5 单元测试入门
数据库·单元测试·log4j
s***g5401 小时前
MySQL-操作数据库备份与恢复
数据库·mysql
CQU_JIAKE1 小时前
11.5【算法】6-1 表彰优秀学生(多态)
数据库
星原飞火1 小时前
2-2-18-13 QNX系统架构之原生网络(Qnet)
网络·车载系统·系统架构·qnx·blackberry·qnet
Elastic 中国社区官方博客2 小时前
使用数据层进行数据生命周期管理
大数据·数据库·elasticsearch·搜索引擎·全文检索·时序数据库
我爱李星璇2 小时前
Spring Boot项目的创建
java·数据库·spring boot