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

news2024/11/25 0:26:26

系列文章目录

系统架构设计专业技能 · 软件工程(一)【系统架构设计师】
系统架构设计高级技能 · 软件架构概念、架构风格、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/904360.html

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

相关文章

高频面试题:多线程顺序打印ABC字符20次

一个关于多线程协作的题目经常会出现在大厂的面试中:有三个线程分别打印A、B、C,请让这三个线程按顺序打印出ABC20次。 我们知道,线程调度机制是非确定性的,如果不加上额外的并发控制,直接启动三个线程,那么…

【软件测试】Java和Python做自动化测试哪个更有优势?

Java和Python做自动化测试,哪个更有优势?这两个语言都是很流行的语言,所以从技术上很难说谁好谁不好的。因为要说好不好得看使用的环境和要求。就像生活在中国,你天天说英语,别人会说你“又拽鸟语啊”?但是…

Postman的高级用法—Runner的使用​

1.首先在postman新建要批量运行的接口文件夹,新建一个接口,并设置好全局变量。 2.然后在Test里面设置好要断言的方法 如: tests["Status code is 200"] responseCode.code 200; tests["Response time is less than 10000…

接口自动化中如何完成接口加密与解密?

加密是一种限制对网络上传输数据的访问权的技术。将密文还原为原始明文的过程称为解密,它是加密的反向处理。在接口开发中使用加密、解密技术,可以防止机密数据被泄露或篡改。在接口自动化测试过程中,如果要验证加密接口响应值正确性的话&…

简单认识镜像底层原理详解和基于Docker file创建镜像

文章目录 一、镜像底层原理1.联合文件系统(UnionFS)2.镜像加载原理3.为什么Docker里的centos的大小才200M? 二、Dockerfile1.简介2.Dockerfile操作常用命令 三、创建Docker镜像1.基于已有镜像创建2.基于本地模板创建3.基于Dockerfile创建4.Dockerfile多阶段构建镜像 一、镜像底…

卷积神经网络全解:(AlexNet/VGG/ GoogLeNet/LeNet/ResNet/卷积/激活/池化/全连接)、现代卷积神经网络、经典卷积神经网络

CNN,卷积神经网络,Convolution Neural Network 卷积计算公式:N (W-F2p)/s1 这个公式每次都得看看,不能忘 1 经典网络 按照时间顺序 1.1 LeNet LeNet是 Yann LeCun在1998年提出,用于解决手…

Ribbon:负载均衡及Ribbon

什么是负载均衡&#xff1f; 第一种轮询算法&#xff0c;依次遍历去执行&#xff0c;达到负载均衡 集成Ribbon 导入pom&#xff0c;在消费者服务里的pom文件导入 <!-- Ribbon 集成 --><!-- https://mvnrepository.com/artifact/org.springframework.cloud/spr…

《合成孔径雷达成像算法与实现》Figure3.12

clc clear close all% 参数设置 TBP 724; % 时间带宽积 T 42e-6; % 脉冲持续时间 t_0 1e-6; % 脉冲回波时延 Nfft 2^11; % fft长度% 参数计算 B TBP/…

第8步---MySQL的存储过程和触发器

第8步---MySQL的存储过程和触发器 1.存储过程 5开始支持的 sql集&#xff0c;类似Java中的代码中的方法 实现对sql的封装和服用 有输入和输出 可以声明变量 可以实现一下复杂的控制语句 1.1入门案例 基本语法 测试数据 -- 创建表的测试数据 create table dept(deptno int pri…

jstack(Stack Trace for Java)Java堆栈跟踪工具

jstack&#xff08;Stack Trace for Java&#xff09;Java堆栈跟踪工具 jstack&#xff08;Stack Trace for Java&#xff09;命令用于生成虚拟机当前时刻的线程快照&#xff08;一般称为threaddump或者javacore文件&#xff09;。 线程快照就是当前虚拟机内每一条线程正在执…

Linux:iptables SNAT与DNAT

目录 一、SNAT 1.1 SNAT原理与应用 1.2 SNAT转换前提条件 1.3 SNAT工作原理 1.4 SNAT实例 二、DNAT 2.1DNAT原理与应用 2.2 DNAT转换前提条件 2.2实例 一、SNAT 1.1 SNAT原理与应用 SNAT 应用环境:局域网主机共享单个公网IP地址接入Internet (私有IP不能在Internet中正…

JAVAEE免费工程师教程之springboot综合案例

day04_springboot综合案例 用户管理 查询用户 查询所有用户执行流程 编写UserMapper接口 public interface UserMapper {// 查询所有用户List<UserInfo> findAllUsers(); }编写UserService public interface UserService extends UserDetailsService {/*** 查询所有…

(2023,UniversalFakeDetect)跨生成模型泛化的通用假图像检测器

Towards Universal Fake Image Detectors that Generalize Across Generative Models 公众号&#xff1a;EDPJ 目录 0. 摘要 1. 简介 2. 相关工作 3. 基础 3.1 问题设置 3.2 分析为什么先前的工作无法泛化 4. 方法 5. 实验 5.1 研究生成模型 5.2 真假分类基线 5.3 …

三重奏的和谐:如何完美对齐公司、部门与个人目标

引言 在企业的运营和管理中&#xff0c;目标的设定与对齐是至关重要的。它不仅决定了公司的方向和愿景&#xff0c;还影响到每一个部门和团队成员的工作内容和效果。如何确保公司目标、部门目标和团队个人目标之间的完美对齐&#xff0c;是每一个管理者都需要面对的挑战。 目…

HCIP学习--STP

在交换机上的线路冗余会产生的问题 昨天讲到了一个冗余的概念&#xff0c;下面就这个冗余引出来的问题来记录今天的内容 线路的冗余对于路由器来岁意味择可以选择更多的路线&#xff0c;但是对于交换机来说可不是啥好事情 比如下图假设A下面有一台设备要发送一个广播&#x…

第二讲:BeanFactory的实现

BeanFactory的实现 1. 环境准备2. 初始化DefaultListableBeanFactory3. 手动注册BeanDefinition4. 手动添加后置处理器5. 获取被依赖注入的Bean对象6. 让所有的单例bean初始化时加载7. 总结 Spring 的发展历史较为悠久&#xff0c;因此很多资料还在讲解它较旧的实现&#xff0c…

ROS与STM32通信(二)-pyserial

文章目录 下位机上位机自定义msg消息发布订阅 ROS与STM32通信一般分为两种&#xff0c; STM32上运行ros节点实现通信使用普通的串口库进行通信&#xff0c;然后以话题方式发布 第一种方式具体实现过程可参考上篇文章ROS与STM32通信-rosserial&#xff0c;上述文章中的收发频率…

一例Vague病毒的分析

这是一例通过U盘传播的文件夹病毒&#xff0c;有收集用户文件的行为&#xff0c;但是&#xff0c;没有回传和远控行为&#xff0c;有点奇怪&#xff0c;其中的字符串进行了加密。 样本比较简单&#xff0c;使用IDA很容易就看明白了。 根据匹配到威胁情报&#xff0c;有叫Vague蠕…

阿里云服务器和轻量云服务器对比有什么区别?

阿里云轻量应用服务器和云服务器ECS有什么区别&#xff1f;ECS是专业级云服务器&#xff0c;轻量应用服务器是轻量级服务器&#xff0c;轻量服务器使用门槛更低&#xff0c;适合个人开发者或中小企业新手使用&#xff0c;可视化运维&#xff0c;云服务器ECS适合集群类、高可用、…

初识SD绘画

最近sd绘画可谓是火的一塌糊涂&#xff0c;AI的绘画能力是真强大。废话不多说&#xff0c;直入主题。 1&#xff0c;sd的本地安装大体有2种&#xff0c;一种是官网安装&#xff0c;一种是秋叶大神的整合包。我安装的是秋叶大神的包&#xff0c;里面的插件和模型都有了&#xf…