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

文章目录

一、前言

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

二、前言

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

三、关系代数运算

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写数据库
    • 成功后写缓存
    • 成功返回。

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

相关推荐
風清掦8 分钟前
【STM32学习笔记-14】WDG看门狗 - 14.2 WWDG窗口看门狗
笔记·stm32·单片机·嵌入式硬件·学习·fpga开发
程序猿阿伟29 分钟前
《一套完整方法论:搞定图形应用的Docker镜像优化》
数据库·docker·容器
二等饼干~za89866838 分钟前
geo优化源码开发搭建技术分享
大数据·网络·数据库·人工智能·音视频
晓梦林1 小时前
bughush靶场学习笔记
笔记·学习
数据库小学妹1 小时前
HTAP混合负载架构:如何用一个数据库同时搞定交易和分析
数据库·经验分享·架构·dba
wuxinyan1231 小时前
工业级大模型学习之路029:解决双智能体调用数据库报错问题
数据库·人工智能·python·学习·智能体
Elastic 中国社区官方博客1 小时前
Elastic 线下 Meetup 将于 2026 年 7 月 26 号下午在深圳举行
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
YL200404261 小时前
【Redis实战篇】秒杀实现方案(以优惠券秒杀为例)
数据库·redis
DIY源码阁1 小时前
JavaSwing宿舍管理系统 - MySQL版
java·数据库·mysql·eclipse