系统架构设计师 - 数据库系统(2)

数据库系统

  • 数据库系统
    • 规范化理论 ★ ★ ★ ★ ★
      • 函数依赖
      • 求候选键
      • Armstrong公理
      • 范式判断
        • 第一范式 1NF
        • 第二范式 2NF
        • 第三范式 3NF
        • BC 范式 BCNF
      • 模式分解
        • 保持函数依赖分解
        • 无损分解
    • 并发控制 ★
      • 事务的 ACID 特性
      • 并发存在的问题
      • 并发解决方案 - 封锁协议
    • 数据库的安全性 ★
      • 安全性的分类
    • 数据库备份与恢复技术 ★
      • 数据备份
      • 数据库故障与恢复
    • 数据库的性能优化 ★


大家好呀!我是小笙,本章我主要分享系统架构设计师 - 数据库系统(2)知识,希望内容对你有所帮助!!

数据库系统

规范化理论 ★ ★ ★ ★ ★

非规范化的关系模式,可能存在的问题:数据冗余、更新异常(修改操作一致性问题)、插入异常、删除异常

函数依赖

假设 X 决定 Y,即 Y 依赖于 X,记为 X -> Y(可以理解为 在 XY 关系中,任何一个 X 都有与之对应并且唯一的 Y)

部分函数依赖以及传递函数依赖

image-20240411125742159 image-20240411125802478

求候选键

  • 将关系模式的函数依赖关系用“有向图”的方式表示
  • 找入度为0的属性,并以该属性集合为起点,尝试遍历有向图,若能正常遍历图中所有结点,则该属性集即为关系模式的候选键
  • 若入度为0的属性集不能遍历图中所有结点,则需要尝试性的将一些中间结点(既有入度,也有出度的结点)并入入度为0的属性集中,直至该集合能遍历所有结点,集合为候选键

Armstrong公理

关系模式R<U,F>来说有以下的推理规则:

image-20240411204204828

根据以上三条推理规则可以得到下面的推理规则:

  • 合并规则:由 X -> Y,X -> Z 可得 X -> YZ
  • 伪传递规则:由 X -> Y,WY -> Z 可得 XW -> Z
  • 分解规则: 由 X -> Y 以及 Z 属于 Y 可得 X -> Z

注意记忆规则以及对应的推理公式

范式判断

第一范式 1NF

在关系模式R中,当且仅当所有域只包含原子值,即每个属性都是不可再分的数据项,则称关系模式R是第一范式

第二范式 2NF

当且仅当实体E是第一范式(1NF),且每一个非主属性完全依赖主键(不存在部分依赖)时,则称实体E是第二范式

第三范式 3NF

当且仅当实体E是第二范式(2NF),且实体E中没有非主属性传递依赖于码时,则称实体E是第三范式

BC 范式 BCNF

设R是一个关系模式,F是它的依赖集,R属于BCNF当且仅当其F中每个依赖的决定因素必定包含R的某个候选码

例题

1、给定关系模式R(U,F),其中:属性集U={A1,A2,A3,A4,A5,A6},函数依赖集F={A1→A2,A1-→A3,A3→A4,A1A5→A6}。关系模式R的候选码为 A1 A5,由于R存在非主属性对码的部分函数依赖,所以R属于 1NF

  • A1A3 A1A4 A1 A5 A1A6
  • 1NF 2NF 3NF BCNF

模式分解

考虑依据:是否保持函数依赖 & 是否无损

保持函数依赖分解

设数据库模式p={R1,R2,…,Rk}是关系模式R的一个分解,F是R上的函数依赖集,p中每个模式Ri上的FD集是Fi。如果{F1,F2,…,Fk与F是等价的(即相互逻辑蕴涵),那么称分解p保持FD

例题理解

保持函数依赖,通过 R1和R2 能得出 F = {A -> B,A -> C,B -> C} ,通过传递依赖得出 B -> C

image-20240417124641372

没有保持函数依赖,通过 R1和R2 只能得出 F = {A -> B,A -> C} 无法得出 B -> C

image-20240417124711993
无损分解

无损联接分解:指将一个关系模式分解成若干个关系模式后,通过自然联接和投影等运算仍能还原到原来的关系模式

表格法

将一个具有函数依赖:学号→姓名,课程号→课程名,(学号,课程号)→ 分数的关系模式:成绩(学号,姓名,课程号,课程名,分数),分解为:成绩(学号,课程号,分数);学生(学号,姓名);课程(课程号,课程名)

初始表如下:

image-20240624212514368

根据学号 → 姓名,对上表进行处理,将 X 改成符号 √ ;然后考虑课程号→课程名,将 X 改为 √ ,得下表:

image-20240624212629770

从上图中可以看出,第1行已全部为√,因此本次R分解是无损分解

公式法

只能用于分解成两个关系,两个关系直接交集能够推导出差集则为无损连接

例题

1、给出关系R(U,F),U={A,B,C,D,E},F={A -> BC,B -> D,D -> E}。以下关于F说法正确的是 F蕴涵A→D、A→E、B→E,故F存在传递依赖 。若将关系R分解为p = {RI(U1,F1),F2(U2,F2)},其中:U1= {A,B,C},U2= {B,D,E}则分解p 无损连接并保持函数依赖

2、某商场商品数据库的商品关系模式P(商品代码、商品名称,供应商,联系方式,库存量),函数依赖集F={商品代码 -> 商品名称,(商品代码,供应商) -> 库存量,供应商 -> 联系方式}。商品关系摸式P达到 1NF;该关系模式分解成 P1(商品代码,商品名称),P2(商品代码,供应商,库存量),P3(供应商,联系方式) 后,具有无损连接的特性,并能够保持函数依赖。


并发控制 ★

事务的 ACID 特性

  • 原子性:指事务包含的所有操作要么全部成功,要么全部失败回滚。这些操作是一个整体,不能部分地完成
  • 一致性:指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态
  • 隔离性:指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的
  • 持续性:指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,无论发送何种故障,都不应对其有任何影响

并发存在的问题

  • 丢失更新
  • 不可重复读
  • 读"脏"数据

并发解决方案 - 封锁协议

  • S 封锁(读):共享锁
  • X 封锁(写):独占锁
  • 一封锁协议(防止丢失更新问题):事务 T 在修改数据 R 之前必须先对其加 X 锁,直到事务结束才释放
  • 二封锁协议(防止丢失更新,还可防止读“脏”数据问题):一级封锁协议加上事务 T 在读取数据 R 之前先对其加 S 锁,读完后即可释放 S 锁
  • 三封锁协议(可防止上述的三个问题):一级封锁协议加上事务 T 在读取数据 R 之前先对其加 S 锁,直到事务结束才释放
  • 两段锁协议:可串行化的。可能发生死锁

数据库的安全性 ★

安全性的分类

措施说明
用户标识和鉴定最外层的安全保护措施,可以使用用户帐户、口令及随机数检验等方式
存取控制对用户进行授权,包括操作类型(如查找、插入、删除、修改等动作)和数据对象(主要是数据范围)的权限
密码存储和传输对远程终端信息用密码传输
视图的保护对视图进行授权
审计使用一个专用文件或数据库,自动将用户对数据库的所有操作记录下来

例题

1、数据库的安全机制中,通过提供 存储过程 第三方开发人员调用进行数据更新,从而保证数据库的关系模式不被第三方所获取。

  • 索引
  • 视图
  • 存储过程
  • 触发器

数据库备份与恢复技术 ★

数据备份

  • 冷备份也称为静态备份:是将数据库正常关闭,在停止状态下,将数据库的文件全部备份(复制)下来
    • 优点:非常快速的备份方法(只需复制文件);容易归档(简单复制即可);容易恢复到某个时间点上只需将文件再复制回去);能与归档方法相结合,做数据库“最佳状态”的恢复;低度维护,高度安全
    • 缺点:单独使用时,只能提供到某一时间点上的恢复;在实施备份的全过程中,数据库必须要作备份而不能做其他工作;若磁盘空间有限只能复制到磁带等其他外部存储设备上,速度会很慢;不能按表或按用户恢复
  • 热备份也称为动态备份:是利用备份软件,在数据库正常运行的状态下,将数据库中的数据文件备份出来
    • 优点:可在表空间或数据库文件级备份,备份的时间短;备份时数据库仍可使用;可达到秒级恢复(恢复到某一时间点上);可对几乎所有数据库实体做恢复;恢复是快速的
    • 缺点:不能出错,否则后果严重;若热备份不成功所得结果不可用于时间点的恢复;因难于维护,所以要特别小心,不允许“以失败告终“

根据备份量划分

  • 完全备份:备份所有数据
  • 差量备份:仅备份上一次完全备份之后变化的数据
  • 增量备份:备份上一次备份之后变化的数据

数据库故障与恢复

故障关系故障原因解决方法
事务本身的可预期故障本身逻辑在程序中预先设置 Rollback 语句
事务本身的不可预期故障算术溢出、违反存储保护由DBMS的恢复子系统通过日志,撤销事务对数据库的修改,回退到事务初始状态
系统故障系统停止运转通常使用检查点法(系统重启时自动完成)
介质故障外存被破坏一般使用日志重做业务

补充

  • 撤销事务:故障发生时未完成的事务,放入 Undo 撤销
  • 重做事务:故障发生前已提交的事务,放入 Redo 重做

例题

1、假设某证券公司的股票交易系统中有正在运行的事务,此时,若要转储该交易系统数据库中的全部数据,则应采用 动态全局转储 方式

  • 静态全局转储
  • 动态全局转储
  • 静态增量转储
  • 动态增量转储

数据库的性能优化 ★

image-20240424120541169

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/862091.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

十三、Maven(1)

&#x1f33b;&#x1f33b;目录 一、maven价绍二、maven的功能1、项目自动化构建2、管理jar、war包3、实现项目结构设计 三、maven安装1、maven的安装环境需要jdk2、Maven的安装路径中不能出现中文和空格3、压缩包解压即可4、配置环境变量 四、maven的仓库1. Maven仓库配置2. …

选型手册:Bosch Sensortec 博世 微机电系统(MEMS)传感器和方案

前言 博世传感器公司&#xff08;Bosch Sensortec&#xff09; 是全球领先的微机电系统&#xff08;MEMS&#xff09;传感器和解决方案供应商。公司成立于2005年&#xff0c;是德国罗伯特博世有限公司&#xff08;Robert Bosch GmbH&#xff09;旗下的全资子公司。博世传感器公…

SpringBoot【3】集成 Swagger

SpringBoot 集成 Swagger 前言pom.xml 配置文件application.yml 配置文件config 包Swagger2Config entity 包UserEntity service 包impl 包SwaggerServiceImpl SwaggerService controller 包SwaggerController SwaggerApplication验证 前言 创建项目步骤、及版本选择等&#x…

展开说说:Android列表之RecyclerView

RecyclerView 它是从Android5.0出现的全新列表组件&#xff0c;更加强大和灵活。用于显示列表形式 (list) 或者网格形式 (grid) 的数据&#xff0c;替代ListView和GridView成为Android主流的列表组件。可以说Android客户端只要有表格的地方就有RecyclerView。 RecyclerView 内…

VCS编译bug汇总

‘typedef’ is not expected to be used in this contex 注册前少了分号。 Scope resolution error resolution : 声明指针时 不能与类名同名&#xff0c;即 不能声明为adapter. cannot find member "type_id" 忘记注册了 拼接运算符使用 关键要加上1b&#xff0…

[MySQL]购物管理系统—简略版

本文内容需以MySQL支持 特别感谢baidu comate AI提供的少量虚拟数据 0.建库(建立数据库——utf8字符集&#xff0c;utf8_general_ci排序规则) 1.此项目ER图如下 2.DDLDML(共九表&#xff0c;27数据) SET FOREIGN_KEY_CHECKS 0;DROP TABLE IF EXISTS goods; CREATE TABLE g…

前端vue-cli相关知识与搭建过程(项目创建,组件路由)very 详细

一.关于vue-cli 1.什么是vue Vue (读音 /vju ː /&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式框架。Vue 的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c;还便于与第三方库或既有项目整合。 Vue.js 是前端的主流框架之一&#xff0c;和 Angular.js…

【公开数据集获取】

Open Images Dataset https://www.youtube.com/watch?vdLSFX6Jq-F0

【M365运维】Outlook和Teams里不显示用户的组织架构

【问题】 由于一些误操作&#xff0c;把用户账户禁用并重新启用后&#xff0c;发现在Outlook和Teams里无法查看用户的组织结构图了。如下图所示&#xff1a; - 在Outlook 里&#xff0c;用户标签页的组织一直显示“正在加载..."&#xff0c;成员身份也是“找不到任何组。…

【GD32】08 - IIC(以SHT20为例)

GD32中的IIC 今天来了解一下GD32中的硬件IIC&#xff0c;其实我个人是觉得软件IIC比较方便的&#xff0c;不过之前文章里用的都是软件IIC&#xff0c;今天就算是走出自己的舒适圈&#xff0c;我们来了解了解GD32中的硬件IIC。 我这里用的型号是GD32F407&#xff0c;不同型号的…

等保测评初级简答题试题

基本要求&#xff0c;在应用安全层面的访问控制要求中&#xff0c;三级系统较二级系统增加的措施有哪些&#xff1f; 答&#xff1a;三级比二级增加的要求项有&#xff1a; 应提供对重要信息资源设置敏感标记的功能&#xff1b; 应按照安全策略严格控制用户对有敏感标记重要…

策略模式和状态模式

策略模式 在上下文中携带策略接口作为成员变量&#xff0c;在使用上下文之前需要设置策略setStrategy&#xff08;&#xff09;&#xff0c;然后使用策略接口成员变量来进行策略的执行。 步骤1&#xff1a;定义策略接口 // 策略接口 public interface Strategy {int execut…

干涉阵型成图参数记录【robust】

robust 这个玩意经常忘记&#xff0c;就是取2的时候是更加显示大尺度的结构&#xff0c;取-2更加显示小尺度结果&#xff0c;一般取0就是正常就好了

【Hive中常见的优化手段----数据采集!Join 优化!Hive索引!数据倾斜!mapreduce本地模式!map和reduce数量调整!】

前言&#xff1a; &#x1f49e;&#x1f49e;大家好&#xff0c;我是书生♡&#xff0c;今天主要和大家分享一下Hive中常见的优化手段----数据采集&#xff01;常见的Join 优化有哪几种&#xff01;什么是Hive索引&#xff01;数据怎么发生倾斜&#xff01;什么是mapreduce的本…

力扣每日一题 6/24 模拟 数组 单调栈

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 503.下一个更大元素II 【中等】 题目&#xff1a; 给定一个循环数组 nums…

使用原子子表创建可重用的子组件

原子子表是一个图形对象&#xff0c;可帮助您在Stateflow图表中创建独立的子部件。原子子表允许&#xff1a; 对具有多个状态或层次结构的图表进行微小更改后&#xff0c;模拟速度更快。 在多个图表和模型中重复使用相同的状态或子表。 易于团队开发&#xff0c;适用于在同一图…

Python网络爬虫实战6—下一页,模拟用户点击,切换窗口

【前期提要】感兴趣的可以看看往期文章哈~ Python网络爬虫5-实战网页爬取 Python网络爬虫4-实战爬取pdf Pyhon网络爬虫3-模拟用户点击 Python网络爬虫实战2-下载url下的pdf Python网络爬虫基础1 1.需求背景 针对长虹美菱电器说明书网页形式&#xff0c;编写爬虫代码&#xff…

【财务数字化转型之底座】集团企业财务数据中台系统建设方案

引言&#xff1a;随着企业规模的不断扩大和业务的复杂化&#xff0c;传统的财务管理模式已难以满足集团企业的数据整合、分析和决策需求。因此&#xff0c;建设一个高效、稳定、安全的财务数据中台系统&#xff0c;成为集团企业数字化转型的重要一环。本方案旨在构建一个集数据…

算力服务先锋!和鲸科技入选《2024中国智算产业生态图谱》

2024 年 6 月 18 日&#xff0c;由科智咨询发起的《2024中国智算产业生态图谱》正式发布&#xff0c;依托 ModelWhale 构建的智算算力资源服务&#xff0c;以及深耕多年的 ModelWhale 数据科学协同平台优势&#xff0c;和鲸科技成功入选。 “智算时代”技术不断进步&#xff0c…

指针并不是用来存储数据的,而是用来存储数据在内存中地址(内存操作/函数指针/指针函数)

推荐&#xff1a;1、4、5号书籍 1. 基本概念 首先&#xff0c;让小明了解指针的基本概念&#xff1a; 指针的定义&#xff1a;指针是一个变量&#xff0c;它存储的是另一个变量的地址。指针的声明&#xff1a;例如&#xff0c;int *p表示一个指向整数的指针变量p。 2. 形象…