系统分析师-案例分析-数据库
系统分析师-案例分析-数据库
- 更多软考资料 https://ruankao.blog.csdn.net/
文章目录
- 系统分析师-案例分析-数据库
- 数据库考察知识点
- 规范化
- 函数依赖
- 范式
- 1NF
- 2NF
- 3NF
- 规范化问题
- 不规范化
- 反规范化设计
- 反规范化设计同步问题
- 并发控制
- 性能优化
- 完整性约束
- 视图
- 安全
- 分布式数据库
- 特点
- 优点
- 查询优化
- NoSQL VS SQL
- 类型
- 内存数据库
- 云数据库
数据库考察知识点
年份 | 知识点 | 形式 | 分数 |
---|---|---|---|
2018 | 视图的基本概念与用法 | 简答 | 8 |
2018 | 规范化设计 | 简答 | 8 |
2018 | 事物、触发器、物化视图 | 简答 | 9 |
2019 | 读写分离、主从复制,MySQL复制方式 | 填空 | 8 |
2019 | SQL和NoSQL特点比较 | 填空 | 8 |
2019 | 混合数据库数据同步问题 | 简答 | 9 |
2020 | 索引的副作用 | 简答 | 9 |
2020 | 物理分区模式比较 | 填空+简答 | 4+6 |
2020 | 读写分离、主从复制 | 简答 | 6 |
2021 | 主题数据库的设计要求和基本特征 | 简答 | 10 |
2021 | 云数据库的特点 | 简答 | 8 |
2022 | 两阶段提交协议(2PC)来解决服务数据的一致性问题 | 简答 | 7 |
2022 | 分布式数据库服务数据的一致性问题 | 填空 | 8 |
2022 | 分布式数据库发布更新数据原子性问题 | 简答 | 10 |
2023 | SQL和NoSQL特点以及比较 | 简答 | 8 |
2023 | NoSQL特点以及比较 | 填空 | 8 |
2023 | 混合数据库 | 简答 | 9 |
规范化
函数依赖
- 给定一个X,能唯一确定一个Y,就成X确定Y,或说Y依赖X。记X->Y。
- 部分函数依赖(只发生在联合主键) :A->C,AB -> C。
- 传递函数依赖: A -> B , B -> C , A != B => A -> C。
范式
学生表(学号,课程名,学生姓名,学生地址(省市县),教师号,教师地址,成绩)
(学号 -> 学生姓名,学号 -> 学生地址(省市县),学号 -> 教师号,教师号 -> 教师地址,学号,课程名 -> 成绩)
1NF
每一个分量必须是一个不可分的数据项,即表中不允许小表。
学生表(学号,课程名,学生姓名,学生省,学生市,学生县,教师号,教师地址,成绩)
2NF
实体的非主属性完全完全依赖于主关键字,即消除部分函数依赖。
学生表(学号,课程名,学生姓名,学生省,学生市,学生县,教师号,教师地址)
成绩表(学号,课程名,成绩)
3NF
任何非主属性不依赖于其它非主属性。即在2NF上消除传递依赖。
学生表(学号,课程名,学生姓名,学生省,学生市,学生县,教师号)
教师表(教师号,教师地址)
成绩表(学号,课程名,成绩)
就是主键可以直接决定非主键。
规范化问题
不规范化
- 数据冗余,教师姓名列出现多次。
- 修改异常,如修改教师地址,需要保证同时修改完所有行。
- 插入异常,没有学生信息的时候教师信息无法插入。
- 删除异常,学生信息清空的时候会将教师信息清空。
反规范化设计
规范化设计之后,会降低查询效率。降低连接操作的需求。
- 增加冗余列,在多个表中存在相同的列。
- 增加派生列,在表中增加本表和它表计算生产的列。
- 重新组表,把需要查看的两个表的结果保存为新表。
- 水平分割表,按行分,常用于分部署数据库或者对历史数据不关心的表。
- 垂直分割表,按列分,常用于分部署数据库。
反规范化设计同步问题
- 应用程序同步
- 批量处理同步
- 触发器
并发控制
-
ACID:原子性、一致性、隔离性、持久性
-
引发的问题。丢失更新(A覆盖了B的修改)、不可重复读(A第一次读到的数据后,B修改了数据,A再次读取数据得到的值不一样),脏数据(A读到的数据是回滚前的数据)
-
读写(排它)锁
性能优化
- 提升硬件:CPU 内存 IO 网络
- 软件提升:进程优先级,CPU使用权,内存预分配
- 数据库设计:反规范化设计、分库分表、读写分离、索引优化、SQL查询优化(减少多表和子查询)
- 应用软件:数据库连接池
完整性约束
- 实体完整性(主键唯一非空)、参照完整性(外键唯一或空)、用户定义完整性(用户自定义范围)
视图
视图(View)是从一个或多个表(或视图)导出的表。视图与表不同,视图是一个虚表,即视图所对应的数据不进行实际存储,数据库中只存储视图的定义,在对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表。
视图的优点:
- 视图能简化用户的操作
- 视图机制可以使用户以不同的方式查询同一数据
- 视图对数据库重构提供了一定程度的逻辑独立性
- 视图可以对机密的数据提供安全保护
安全
- 用户标识和鉴别(密码、口令)
- 存取控制(用户权限)
- 密码存储用传递(加密)
- 视图保护(用户权限)
- 审计(记录操作)
分布式数据库
- 由一组数据组成的,这组数据分布在计算机网络的不同计算机上,网络中的每个节点具有独立处理的能力(称为场地自治),它可以执行局部应用,同时,每个节点也能通过网络通信子系统执行全局应用。
特点
- 分布性: 数据物理上分布在不同位置,但逻辑上属于同一个系统。
- 共享性:数据可以被网络上多个用户或系统共享。
- 可用性:系统设计能够面对硬件故障、网络问题等异常时继续提供服务。
- 自治性:系统中每个几点具有独立管理自己的数据和操作的能力。
优点
- 分布式数据库可以解决企业部门分散而数据需要相互联系的问题。
- 如果企业需要增加新的相对自主的部门来扩充机构,则分布式数据库系统可以在对当前机构影响最小的情况下进行扩充。
- 分布式数据库可以满足均衡负载的需要。
- 当企业已存在几个数据库系统,而且实现全局应用的必要性增加时,就可以由这些数据库自下而上构成分布式数据库系统。
- 相等规模的分布式数据库系统在出现故障的概率上不会比集中式数据库系统低,但由于其故障的影响仅限于局部数据应用,因此,就整个系统来说,它的可靠性是比较高的。
查询优化
- 降低通讯为核心
- 全局查询树的变换:例如,在做笛卡尔积之前,先进行投影和选择运算。
- 副本的选择与多副本的更新策略:多个副本存在于不同的节点,如何选择。
- 查询树的分解:对所有节点采取后续遍历法,直到所有叶节点均被成功地遍历为止。
- 半连接与直接连接等:不需要传递整个关系,只要传送连接时与对方匹配的元组即可。
NoSQL VS SQL
特征 | SQL | NoSQL |
---|---|---|
并发支持 | 支持并发、效率低 | 并发性能高 |
存储与查询 | 关系表方式存储、SQL查询 | 海量数据存储、查询效率高 |
扩展方式 | 向上扩展 | 向外扩展 |
索引方式 | B树、哈希等 | 键值索引 |
应用领域 | 面向通用领域 | 特定应用领域 |
数据一致性 | 实时一致性 | 弱一致性 |
数据类型 | 结构化数据 | 非机构化 |
事物 | 高事务性 | 弱事务性 |
水平扩展 | 弱 | 强 |
数据容量 | 有限数据 | 海量数据 |
类型
类型 | 代表 | 典型应用场景 | 数据模型 | 优点 | 缺点 |
---|---|---|---|---|---|
Key-Value | Redis、MemCache | 缓存、日志等 | Key-Value/全键值对 | 键操作性能高(基于键的增删查改都快),可扩展性强 | 数据无结构 |
列式存储 | HBase | OLAP | 列簇式存储 | 查找速度快、可扩展性强 | 功能相对局限 |
文档型 | MongoDB | web应用 | key-value ,value为结构化数据 | 使用JSON或者XML等格式来存储数据,格式灵活 | 查询性能不高、缺乏统一语言 |
图数据库 | NeoJs | 社交网络、推荐系统等 | 节点和关系组成的图 | 利用图结构的各类算法 | 需对图整计算,分布集群方案,实现困难 |
内存数据库
内存数据库抛弃了磁盘数据管理的传统方式,基于全部数据都在内存中重新设计了体系结构,并且在数据缓存、快速算法、并行操作方面也进行了相应的改进,所以数据处理速度比传统数据库的数据处理速度要快很多,一般都在10倍以上。
特点:工作版本常驻内存,活动事务只与实时内存数据库的内存拷贝打交道。
常见的内存数据库:Redis、SQLite、Mircrosoft SQLServer Compact 等。
云数据库
云数据库是指被优化并部署到云端虚拟计算环境中的数据库。可以实现按需付费、按需扩展、高可用性以及存储整合等优势。
云数据库的特点包括高并发、高性能、高可用、高可靠、存储整合、高效部署、按需扩展、按需付费、云端迁移等诸多特点。
相关文章:

系统分析师-案例分析-数据库
系统分析师-案例分析-数据库 更多软考资料 https://ruankao.blog.csdn.net/ 文章目录 系统分析师-案例分析-数据库数据库考察知识点规范化函数依赖范式1NF2NF3NF 规范化问题不规范化反规范化设计反规范化设计同步问题 并发控制性能优化完整性约束视图安全分布式数据库特点优点…...

【RabbitMQ】使用SpringAMQP的消息队列(Hello Word)和工作队列(Work Queue)
SpringAMQP SpringAMQP中文文档 Hello Word **案例1:**利用SpringAMQP实现HelloWord中的集成消息队列功能 项目结构,如图: 1.引入AMQP依赖(父工程中) <!--AMQP依赖,包含RabbitMQ--> <dependen…...

项目集成SkyWalking,基于k8s搭建
一、搭建SkyWalking 官方文档(英文):skywalking/docs at master apache/skywalking 中文可以使用:GitHub - SkyAPM/document-cn-translation-of-skywalking: [已过期,请使用官网AI文档] The CN translation version of Apache…...

mysql-差异备份流程
4.差异备份流程 差异备份流程(重要) 第一次完整备份 innobackupex /xtrabackup innobackupex --userroot --password123456 /xtrabackup2024-05-23_20-25-05 第一次完整备份 2024-05-23_20-40-55 第二次差异备份 2024-05-23_20-47-37 第三次差异备份再往数据库里面…...

基于动态规划算法的DNA序列比对函数,给出两条序列(v和w)的打分矩阵
一.什么是动态规划算法 1.1总体思想 动态规划算法与分治法类似,基本思想也是将待求解的问题分成若干个子问题 经过分解得到的子问题往往不是互相独立的,有些子问题被重复计算多次 如果能够保存已解决的子问题答案,在需要时再找出来已求得…...

Tailwind CSS快速入门
文章目录 初识安装Tailwindcss试用安装快速书写技巧扩展好处Todo 初识 只需书写 HTML 代码,无需书写 CSS,即可快速构建美观的网站 Tailwind CSS 是一个功能类优先的 CSS 框架,它通过提供大量的原子类(utility classes)…...

Postman使用技巧
Postman是一款广泛使用的API开发和测试工具,专为简化Web服务API的开发、测试、文档编制和协作过程而设计。它支持各种HTTP请求方法,包括GET、POST、PUT、DELETE等,允许用户轻松地构建和发送请求,以及检查响应。 本文介绍几个提升效…...

sqli-labs靶场
less---11 1.求闭合字符 输入1报错说明存在注入点 存在注入点 2.查库名 使用报错注入查库名 admin” and (select 1 from (select count(*),concat(database(),floor(rand(0)*2))x from information_schema.tables group by x)y)# //floor函数报错 3.查表名 admin and upd…...

基于springboot的大创管理系统
摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了大创管理系统的开发全过程。通过分析大创管理系统管理的不足,创建了一个计算机管理大创管理系统的方案。文章介绍了大创管理系统的系统分析部分&…...

常用torch.nn
目录 一、torch.nn和torch.nn.functional二、nn.Linear三、nn.Embedding四、nn.Identity五、Pytorch非线性激活函数六、nn.Conv2d七、nn.Sequential八、nn.ModuleList九、torch.outer torch.cat 一、torch.nn和torch.nn.functional Pytorch中torch.nn和torch.nn.functional的区…...

力扣226.翻转二叉树101.对称二叉树
解决二叉树的问题,经常要习惯从递归角度思考 左子树/右子树是否具备某属性、是否属于什么类型(和题目要求的判断当前树是否xxx一样); 对左/右子树进行什么操作(和题目要求的对当前树的操作一样)。 226.翻转…...

word如何按照原本页面审阅文档
1 视图-阅读视图 2 视图,自己看,懒得打字了哈哈...

前端基础入门三大核心之HTML篇:探索WebAssembly —— 开启网页高性能应用新时代
前端基础入门三大核心之HTML篇:探索WebAssembly —— 开启网页高性能应用新时代 WebAssembly基础概念工作原理概览WebAssembly实战示例基本使用 安全性与性能优化防范漏洞实践实际工作中的使用技巧结语与讨论 随着Web技术的飞速发展,前端开发者面临越来越…...

NDIS小端口驱动(四)
NDIS中断相关 1. 注册和取消注册中断: 微型端口驱动程序调用 NdisMRegisterInterruptEx 来注册中断。 驱动程序分配并初始化 NDIS_MINIPORT_INTERRUPT_CHARACTERISTICS 结构,以指定中断特征和函数入口点,驱动程序将结构传递给 NdisMRegister…...

用户态网络缓冲区设计
基于数组实现的环形缓冲区: 优点 使用固定大小的连续空间做用户态缓冲区,利用了内存访问的局部性,可以提高缓存命中率,提高程序性能,在处理大量数据时,缓存的利用率对性能有着很大的影响 正是基于性能的…...

Linux运维工程师基础面试题整理(三)
Linux运维工程师基础面试题整理(三) 1. 文件inode号有什么用?2. 文件的权限怎么设置与管理?3. 如何SSH免密配置?4. 如何快速部署一个web服务?5. 如何更新Linux系统内核?6. centos中如何配置本地yum源?7.Linux 防火墙如何简单配置?8. 有哪些工具可以批量管理Linux服务器…...

基于单片机与传感器技术的汽车起动线路设计
摘 要:在以发动机为动力源的汽车中,起动系统承担起使发动机由非工作状态进入工作状态的重要作用,属于发动机的附属系统。在传统汽车起动系统的基础上提出将单片机与传感器技术运用到起动控制线路中,通过传感器采集发动机工作状态信…...

C#如何通过反射获取外部dll的函数
在C#中,你可以使用反射(Reflection)来加载外部的DLL(动态链接库)并获取其中的函数(在C#中通常称为方法)。但是,请注意,反射主要用于访问类型信息,并且对于非托…...

从零开始傅里叶变换
从零开始傅里叶变换 1 Overview2 傅里叶级数2.1 基向量2.2 三角函数系表示 f ( t ) f(t) f(t)2.2.1 三角函数系的正交性2.2.2 三角函数系的系数 2.3 复指数函数系表示 f ( t ) f(t) f(t)2.3.1 复指数函数系的系数2.3.2 复指数函数系的正交性 2.4 傅里叶级数总结 3 傅里叶变换…...

解决1万条数据前端渲染不卡的问题
万级数据前端渲染优化 解决思路requestAnimationFrame完整代码 解决思路 将数据分组,通过定时器或requestAnimationFrame两种方式分组渲染到Dom上 requestAnimationFrame 渲染数据-动画requestAnimationFram方法 使用requestAnimationFrame可以将动画的每一帧绘制…...

如何编写一个API——Python代码示例及拓展
下面是一个必备的API的demo,包括用户认证、数据库交互、错误处理和更复杂的异步任务处理。使用Flask来创建一个RESTful API,涉及用户注册、登录、以及获取用户信息的功能。 示例1:编写API 安装依赖 首先,你需要安装以下库来支持示例的功能: pip install flask flask-c…...

UMPNet: Universal Manipulation Policy Network for Articulated Objects
1. 摘要 UMPNet是一个基于图像的策略网络,能够推理用于操纵铰接物体的闭环动作序列。该策略支持6DoF动作表示和可变长度轨迹。 为处理多种类的物体,该策略从不同的铰接结构中学习,并泛化到未见过的物体或类别上。该策略是以自监督探索的方式…...

高通 Android 12/13冻结屏幕
冻结屏幕很多第一次听到以为是Android一种异常现象,实则不然,就是防止用户在做一些非法操作导致问题防止安全漏洞问题。 1、主要通过用户行为比如禁止下拉状态栏和按键以及onTouch事件拦截等,不知道请看这篇文章(Touch事件传递流…...

C++实现图的存储和遍历
前言 许多新手友友在初学算法和数据结构时,会被图论支配过。我这里整理了一下图论常见的存储和遍历方式,仅供参考。如有问题,欢迎大佬们批评指正。 存储我将提到四种方式:邻接矩阵、vector实现邻接表、数组模拟单链表实现的前向星…...

AI--构建检索增强生成 (RAG) 应用程序
LLM 所实现的最强大的应用之一是复杂的问答 (Q&A) 聊天机器人。这些应用程序可以回答有关特定源信息的问题。这些应用程序使用一种称为检索增强生成 (RAG) 的技术。 典型的 RAG 应用程序有两个主要组件 索引:从源中提取数据并对其进行索引的管道。这通常在线下…...

QT7_视频知识点笔记_4_文件操作,Socket通信:TCP/UDP
1.事件分发器,事件过滤器(重要程度:一般) event函数 2.文件操作(QFile) 实现功能:点击按钮,弹出对话框,并且用文件类读取出内容输出显示在控件上。 #include <QFi…...

智慧社区管理系统:打造便捷、安全、和谐的新型社区生态
项目背景 在信息化、智能化浪潮席卷全球的今天,人们对于生活品质的需求日益提升,期待居住环境能与科技深度融合,实现高效、舒适、安全的生活体验。在此背景下,智慧社区管理系统应运而生,旨在借助现代信息技术手段&…...

CustomTkinter:便捷美化Tkinter的UI界面(附模板)
CustomTkinter是一个基于Tkinter的Python用户界面库。 pip3 install customtkinter它提供了各种UI界面常见的小部件。这些小部件可以像正常的Tkinter小部件一样创建和使用,也可以与正常的Tkinter元素一起使用。 它的优势如下: CustomTkinter的小部件和…...

使用MicroPython和pyboard开发板(15):使用LCD和触摸传感器
使用LCD和触摸传感器 pybaord的pyb对LCD设备也进行了封装,可以使用官方的LCD显示屏。将LCD屏连接到开发板,连接后。 使用LCD 先用REPL来做个实验,在MicroPython提示符中输入以下指令。请确保LCD面板连接到pyboard的方式正确。 >>…...

c++20 std::jthread 源码简单赏析与应用
std::jthread 说明: std::jthread 是 C20 中引入的一个新特性,它是线程库中的一个类,专门用于处理 std::thread 与 std::stop_token 和 std::stop_source 之间的交互,以支持更优雅和安全的线程停止机制。 std::stop_source控制…...