【系统架构设计专业技能 · 数据库设计(二)【系统架构设计师】

news2024/11/15 13:37:29

系列文章目录

系统架构设计专业技能 · 软件工程(一)【系统架构设计师】
系统架构设计高级技能 · 软件架构概念、架构风格、ABSD、架构复用、DSSA(一)【系统架构设计师】
系统架构设计高级技能 · 系统质量属性与架构评估(二)【系统架构设计师】
系统架构设计高级技能 · 软件可靠性分析与设计(三)【系统架构设计师】

系统架构设计专业技能 · 数据库设计(二)

  • 系列文章目录
  • 一、数据库概念
    • 1.1 数据模型
  • 二、数据库模式
  • 三、 关系数据库
    • 3.1 关系模型
    • 3.1 关系运算
    • 3.1 关系数据设计的基本理论
      • 3.1.1 函数依赖
      • 3.1.2 键/候选键
      • 3.1.3 函数依赖的公理(Armstrong 公理)
      • 3.1.4 规范化理论
      • 3.1.5 模式分解(是否保持函数依赖&是否无损)
  • 四、数据库设计
    • 4.1 概念结构设计
      • 4.2.1 E-R模型
      • 4.2.2 ER图两个不同实体的联系:
      • 4.2.3 概念结构设计的过程:
    • 4.2 逻辑结构设计
    • 4.3 并发控制
    • 4.3.1 事务的ACID特性
    • 4.4 数据库的安全性
    • 4.5 数据库备份与恢复
    • 4.6 数据库性能优化
  • 一、应用程序与数据库的交互
  • 一、NoSQL数据库
  • 一、分布式数据库
  • 一、数据库优化技术
  • 一、分布式缓存技术Redis

一、数据库概念

1.1 数据模型

数据模型分为:层次模型、网状模型、面向对象模型、关系模型。

数据模型三要素:数据结构、数据操作、数据的约束条件。

数据的约束条件包括:
(1)实体完整性:
(2)参照完整性:
(3)用户定义完整性:

二、数据库模式

数据库一般采用三级模式,系统开发人员需要通过视图层、逻辑层和物理层三个层次上抽象来降低用户屏蔽系统的复杂性,简化用户与系统的交互。
从数据库管理系统的角度,数据库也分为为外模式、概念模式和内模式。
在这里插入图片描述
数据库系统在三级模式之间提供了两级映像:概念模式/内模式映像、外模式/概念模式映像。这两级映像保证了数据库中的数据具有较高的逻辑独立性和物理独立性。

数据库三级模式

外模式概念模式内模式
又叫子模式或用户模式,用以描述用户看到或使用的那部分数据的逻辑结构,用户根据外模式用数据操作语句或应用程序去操作数据库中的数据是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式,定义所有的内部记录类型、索引和文件的组织方式等

数据库两级映像

逻辑独立性物理独立性
对应外模式和概念模式之间的映像。指应用程序与数据库中的逻辑结构独立,当数据的逻辑结构改变时,应用程序不变对应概念模式和内模式之间的映像。指应用程序与磁盘中的数据互相独立。当数据的物理存储改变时,应用程序不变

三、 关系数据库

3.1 关系模型

数据模型三要素:数据结构、数据操作、数据的约束条件。

关系模型表现形式
形式一:
学生(学号,姓名,年龄,班级编号)

形式二:
学生(U,F)
U = { 学号,姓名, 年龄, 班级编号 }
F = { 学号 → 姓名,学号 → 年龄,学号 → 班级编号}

基本概念:
目或度:关系模式中属性的个数。
候选码(候选键):关系中的某一属性或属性组的值,且唯一地标识一个元组。
主码(主键):若一个关系中有多个候选码,则选定其中一个作为主码。
主属性与非主属性:组成候选码的属性就是主属性,其它的就是非主属性。
外码(外键):其他关系的码,就是外键。
全码:关系模式的所有属性组是这个关系的候选码。

完整性约束:

  • 实体完整性约束:规定基本关系的主属性不能取空值。
  • 参照完整性约束:关系与关系间的引用,其他关系的主键或空值。
  • 用户自定义完整性约束:应用环境决定。
  • 触发器:

3.1 关系运算

并(∪): 关系R与S的并是由属于或属于S的元组构成的集合

交(∩): 关系R与S的交是由属于R同时又属于S的元组的集合

差(—): 关系R与S的差是由属于R但不属于S的元组的集合

在这里插入图片描述

笛卡尔积(X): 两个关系分别为n列和m列的关系R和S的笛卡尔积是一个(n + m)列的元组的集合。其中的前n列是关系R的一个元组,后m列是关系S的一个元组,记作R X S,如果R和S有相同的属性名,可在属性名前加关系名作为限定,以示区别。若R有K1个元组,S有K2个元组,则R和S的笛卡尔积有K1 X K2个元组。

选择(σ)取得关系R中符合条件的行。

投影(π)取得关系R中符合条件的列。

在这里插入图片描述

连接(Φ):
等值连接:选取关系R、S,取两者笛卡尔积中属性值相等的元组。
自然连接:一种特殊的等值连接,它要求比较属性列必须相同的属性组,并且把结果中重复属性去掉。

在这里插入图片描述

3.1 关系数据设计的基本理论

关系数据库设计的目标是生成一组合适的、性能良好的关系模式,以减少系统中信息存储的冗余度,但又可以方便地获取信息。

3.1.1 函数依赖

设R(U,F)是属性U上的一个关系模式,X和Y是U的子集,r为R的任意关系,如果对于r中的任意两个元组u,v,只要有u[Y] = v[Y],则称X函数决定于Y,或称Y函数依赖于X,记X → Y,称为函数依赖。
例如:学号→ 系号, 系号 → 系名

在这里插入图片描述

3.1.2 键/候选键

在这里插入图片描述

  • 主属性与非主属性:组成候选码的属性就是主属性,其它就是非主属性。

求候选键实例

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

3.1.3 函数依赖的公理(Armstrong 公理)

从已知的函数依赖,可以推导出另外一些函数依赖,这就需要一系列的推理规则,这些规则常被称为”Armstrong 公理“。

设定关系式R(U, F),U是关系模式R的属性集,F是U的一组函数依赖,则有以下三条推理规则
(1) 自反律若Y ⊆ X ⊆ U, 则X → Y为F所蕴含
(2) 增广律若Z ⊆ U且X → Y为F所蕴含,则XZ → YZ为F所蕴含
(3) 传递律X → Y,Y → Z为F所蕴含,则X → Z为F所蕴含

根据上面的推理规则,又可以推出下面三条规则
(1) 合并规则若X → Y,X → Z,则X → YZ为F所蕴含
(2) 伪传递规则若X → Y,WY → Z,则XW → Z为F所蕴含
(3) 分解规则若X → Y,Z ⊆ Y,则X → Z为F所蕴含

证明如下:
在这里插入图片描述

3.1.4 规范化理论

关系数据库设计的方法之一就是满足适当范式模式,通常可以通过判断分解后的模式达到几范式来评价模式的规范化程度。范式包括:1NF、2NF、3NF、BCNF、4NF、5NF。
在这里插入图片描述
(1)第一范式(1NF)在关系模式R中,当且仅当所有域只包含原子值,既每个属性都是不可再分的数据项,则关系模式R属于第一范式

例如:以下不满足1NF,高级职称人数可以再分教授和副教授
在这里插入图片描述

(2)第二范式(2NF)若关系模式R ∈ 1NF,且每个非主属性完全依赖主码时(不存在部分依赖),则关系模式R属于第二范式

例如:以下不满足2NF,课程号可以包含学分
在这里插入图片描述

(3)第三范式(3NF)若关系模式R ∈ 2NF,且没有非主属性对主码的传递函数依赖。则关系模式R属于第三范式

例如:以下不满足3NF,系名和系位置依赖系号
在这里插入图片描述

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

例如:
在这里插入图片描述

3.1.5 模式分解(是否保持函数依赖&是否无损)

四、数据库设计

数据库设计的基本步骤,可以分为用户需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施阶段(应用程序设计)、运行维护
数据库设计过程:
在这里插入图片描述

4.1 概念结构设计

4.2.1 E-R模型

ER模型简称E-R图 ,是描述概念世界、建立概念模型的实用工具。E-R图的三个要素:
(1)实体:用矩形表示,框内标注实体名称。
(2)属性:用椭圆图形表示,并用连线与实体连接起来。
(3)实体之间的联系:用菱形框表示,框内标注联系名称,用连线将菱形框分别与有关实体相连,并在连线上注明联系类型。
在这里插入图片描述

4.2.2 ER图两个不同实体的联系:

在这里插入图片描述

4.2.3 概念结构设计的过程:

在这里插入图片描述

  • 集成的方法
    多个局部ER图一次集成
    逐步集成,用累加的方式一次集成两个局部ER。

  • 集成产生的冲突及解决办法
    属性冲突:包括属性域冲突和属性取值冲突
    命名冲突:包括同名异议和异名同义
    结构冲突:包括统一对象在不同应用中具有不同的抽象,以及同一实体在不同局部ER图中所包含的属性个数和属性排列次序不完全相同。

4.2 逻辑结构设计

在这里插入图片描述

  • ER图向关系模式的转换
    实体向关系模式的转换
    联系向关系模式的转换
  • 关系模式的规范化
  • 确定完整性约束(保证数据的正确性)
  • 用户视图的确定(提高数据的安全性和独立性)
    根据数据流图确定处理过程的视图
    根据用户视图确定不同用户使用的视图
  • 应用程序的设计

☆ 一个实体型必须转换为一个关系模式
☆ 联系转关系模式
在这里插入图片描述

  • (1)一对一联系的转换有两种方式
    独立的关系模式:并入两端主键及联系自身属性。(主键:任一端主键)
    归并(任意一端):并入另一端主键及联系自身属性。(主键:保持不变)

  • (2)一对多联系的转换有两种方式
    独立的关系模式:并入两端主键及联系自身属性。(主键:多端主键)
    归并(多端):并入另一端主键及联系自身属性。(主键:保持不变)

  • (3)多对多联系的转换只有一种方式
    独立的关系模式:并入两端主键及联系自身属性。(主键:两端主键的组合键)

4.3 并发控制

4.3.1 事务的ACID特性

4.4 数据库的安全性

4.5 数据库备份与恢复

4.6 数据库性能优化

一、应用程序与数据库的交互

一、NoSQL数据库

一、分布式数据库

一、数据库优化技术

一、分布式缓存技术Redis

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

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

相关文章

小程序商品如何指定打印机

有些商家,可能有多个仓库。不同的仓库,存放不同的商品。当客户下单时,小程序如何自动按照仓库拆分订单,如何让打印机自动打印对应仓库的订单呢?下面就来介绍一下吧。 1. 设置订单分发模式。进入管理员后台&#xff0c…

AutoSAR系列讲解(深入篇)13.7-Mcal Adc配置(上)

目录 一、AdcGeneral 二、AdcSafety 三、AdcConfigSet 在之前的章节中,咱们在Port的配置中讲解了工具的初步使用与一些技巧;在Dio的配置中讲解了生成的代码的内容;在mcu的配置里讲解了外部一些 第三方简便工具的使用。这一次咱们配合ADC模块,就详细的讲讲每个配置项的作…

Java --- 二维数组

一、二维数组的定义 public class TwoArrayTest {public static void main(String[] args) {//二维数组声明与初始化//方式1:静态初始化int[][] arr new int[][]{{1,2,3},{1,2,3},{1,2,3}};//方式2:动态初始化int[][] arr2 new int[3][3];arr2[0][1] …

Windows小记

一、域控制器升级的先决条件验证失败。 新建域时,本地 Administrator 帐户将成为域 Administrator 帐户。无法新建域,因为本地 Administrator 帐户密码不符合要求。 目前,本地 Administrator 帐户不需要密码。我们建议你使用网络用户命令行工…

微软Win11 Dev预览版Build23526发布

近日,微软Win11 Dev预览版Build23526发布,修复了不少问题。牛比如斯Microsoft,也有这么多bug,所以你写再多bug也不作为奇啊。 主要更新问题 [开始菜单] 修复了在高对比度主题下,打开开始菜单中的“所有应…

LLaMA-7B微调记录

Alpaca(https://github.com/tatsu-lab/stanford_alpaca)在70亿参数的LLaMA-7B上进行微调,通过52k指令数据(https://github.com/tatsu-lab/stanford_alpaca/blob/main/alpaca_data.json),在8个80GB A100上训…

rn和flutter出现“Running Gradle task ‘assembleDebug

在第一次运行rn和flutter时,会卡在Running Gradle task assembleDebug,可以使用阿里的镜像,如下图: maven { url https://maven.aliyun.com/repository/google/ } google() maven { url https://maven.aliyun.com/repository/jcen…

pointnet C++推理部署--tensorrt框架

classification 如上图所示,由于直接export出的onnx文件有两个输出节点,不方便处理,所以编写脚本删除不需要的输出节点193: import onnxonnx_model onnx.load("cls.onnx") graph onnx_model.graphinputs graph.inpu…

使用SSH隧道将Ubuntu云服务器Jupyter Notebook端口映射到本地

本文主要实现了在Ubuntu云服务器后台运行Jupyter Notebook,并使用SSH隧道将服务器端口映射到本地 1. 生成配置文件 运行以下命令生成Jupyter Notebook的配置文件: jupyter notebook --generate-config这将在用户主目录下生成一个名为.jupyter的文件夹&…

微人事 登录问题完善

重启服务端的时候,发现前端页面会操作不了,这样后端session会失效,我们就需要让页面重新跳转到登录页 springsecurity配置类后端配置 前端拦截器进行拦截跳转

【Git】分支管理

文章目录 一、理解分支二、创建、切换、合并分支三、删除分支四、合并冲突五、合并模式六、分支策略七、bug分支八、强制删除分支 努力经营当下 直至未来明朗! 一、理解分支 HEAD指向的是master分支,master中指向的是最新一次的提交,也就是m…

T113-S3-TCA6424-gpio扩展芯片调试

目录 前言 一、TCA6424介绍 二、原理图连接 三、设备树配置 四、内核配置 五、gpio操作 总结 前言 TCA6424是一款常用的GPIO(通用输入输出)扩展芯片,可以扩展微控制器的IO口数量。在T113-S3平台上,使用TCA6424作为GPIO扩展芯…

使用 Elasticsearch 轻松进行中文文本分类

本文记录下使用 Elasticsearch 进行文本分类,当我第一次偶然发现 Elasticsearch 时,就被它的易用性、速度和配置选项所吸引。每次使用 Elasticsearch,我都能找到一种更为简单的方法来解决我一贯通过传统的自然语言处理 (NLP) 工具和技术来解决…

leetcode 198. 打家劫舍

2023.8.19 打劫问题是经典的动态规划问题。先设一个dp数组,dp[i]的含义为:前 i 个房屋能盗取的最高金额。 每间房屋无非就是偷,或者不偷这两种情况,于是可以写出递推公式: …

使用nrm快速切换npm源以及解决Method Not Implemented

文章目录 什么是nrm如何使用nrm查看本机目前使用的npm 源安装nrm查看可选源查看当前使用源切换源添加源删除源测试源的响应时间 如果你遇到这个报错,就可以采用这种方案解决哦解决方案:1. 切换为官方源2. 查看漏洞3. 修复漏洞4. 下面命令慎重使用&#x…

【Linux】进程信号篇Ⅰ:信号的产生(signal、kill、raise、abort、alarm)、信号的保存(core dump)

文章目录 一、 signal 函数:用户自定义捕捉信号二、信号的产生1. 通过中断按键产生信号2. 调用系统函数向进程发信号2.1 kill 函数:给任意进程发送任意信号2.2 raise 函数:给调用进程发送任意信号2.3 abort 函数:给调用进程发送 6…

域名解析和代理

购买域名 这里使用腾讯云进行购买。 对域名进行解析 通过添加记录接口对域名进行解析。 此时我们的服务器地址就被解析到域名上了。 我们可以通过以下格式进行访问: [域名]:[对应的项目端口] 效果为下: 通过nginx进行代理 如果我们使用上述的方式进行访问还是…

轻松搭建书店小程序

在现今数字化时代,拥有一个自己的小程序成为了许多企业和个人的追求。而对于书店经营者来说,拥有一个能够提供在线购书服务的小程序将有助于吸引更多的读者,并提升销售额。本文将为您介绍如何轻松搭建书店小程序,并将其成功上线。…

Spring事件监听源码解析

spring事件监听机制离不开容器IOC特性提供的支持,比如容器会自动创建事件发布器,自动识别用户注册的监听器并进行管理,在特定的事件发布后会找到对应的事件监听器并对其监听方法进行回调。Spring帮助用户屏蔽了关于事件监听机制背后的很多细节…

Spring事务和事务传播机制(1)

前言🍭 ❤️❤️❤️SSM专栏更新中,各位大佬觉得写得不错,支持一下,感谢了!❤️❤️❤️ Spring Spring MVC MyBatis_冷兮雪的博客-CSDN博客 在Spring框架中,事务管理是一种用于维护数据库操作的一致性和…