当前位置: 首页 > article >正文

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

文章目录

  • 一、前言
  • 二、前言
  • 三、关系代数运算
    • 3.1 运算符
    • 3.2 函数依赖
    • 3.3 规范化
  • 四、数据库优化
  • 五、缓存Redis
    • 5.1 数据类型
    • 5.2 读写操作

一、前言

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

二、前言

数据库的很多概念,平时都有接触过,就不一一讲述。

直接上干货,聚焦于那些频繁出现的考点。

三、关系代数运算

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

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


http://www.kler.cn/a/412516.html

相关文章:

  • 嵌入式linux C++通用makefile模板
  • Pytorch使用手册-Build the Neural Network(专题五)
  • webrtc支持h265
  • 电商项目高级篇06-缓存
  • 【漏洞复现】CVE-2020-13925
  • Dubbo的RPC泛化调用
  • go-学习
  • ThingsBoard规则链节点:GCP Pub/Sub 节点详解
  • 关闭AWS账号后,服务是否仍会继续运行?
  • vue3 多种方式接受props,定义ref,reactive
  • 如何做好一份技术文档
  • [代码随想录Day24打卡] 93.复原IP地址 78.子集 90.子集II
  • 城电科技|三轴光伏太阳花 建设零碳新园区
  • 【计算机视觉+MATLAB】自动检测并可视化圆形目标:通过 imfindcircles 和 viscircles 函数
  • 【竞技宝】LOL-传奇杯:KB3-1击败M3
  • w059基于springboot的课程答疑系统
  • 4 Java数组
  • femor 第三方Emby应用全平台支持v1.0.54更新
  • MySQL-关于InnoDB(1)
  • Spring Boot 3启动加载器详解(含源码解析)
  • Gstreamer中,appsink、appsrc、fakesink与第三方交互
  • Web富文本编辑器 wangeditor 解决 XSS 攻击方法
  • 同步时序电路——描述
  • Tomcat中如何开启gzip压缩?
  • OkHttp3 - 2. OkHttp的核心组件与架构
  • 数据结构C语言描述5(图文结合)--队列,数组、链式、优先队列的实现