系统架构设计师|数据库基础-006

news2024/9/21 12:05:05

📫 作者简介:「六月暴雪飞梨花」,专注于研究Java,就职于科技型公司后端工程师
🏆 近期荣誉:华为云云享专家、阿里云专家博主、 腾讯云优秀创作者、腾讯云TDP-KOL、墨天轮技术专家博主、ACDU成员
🎉 三连支持:欢迎 ❤️关注、👍点赞、👉收藏三连,支持一下博主~

文章目录

  • 前言
  • 1 数据库
    • 1.1 相关概念
    • 1.2 数据库模型
    • 1.3 关系数据库
    • 1.4 设计范式
  • 2 数据库设计
    • 2.1数据库设计步骤
    • 2.2应用程序和数据库
  • 3 NoSQL
  • 总结

前言

从前几篇的反应来看,反响还是不错的,本篇开始梳理数据库(系统架构设计师)相关的知识。如果出入或偏颇,还望指出。

1 数据库

1.1 相关概念

【数据】
数据(Data):是描述事物的符号记录,它具有多种表现形式,可以是文字、图形、图像、声音和语言等。

【信息】
信息(Information):是现实世界事物的存在方式或状态的反映,信息有自然属性可感知可存储可加工可传递可再生)、社会属性(社会各行各业不可缺少的资源)。
在这里插入图片描述

数据和信息的关系:数据是信息的符号表示,而信息是具有特定释义和意义的数据。

【数据库】
数据库(Database,DB):是统一管理的、长期储存在计算机内的,有组织的相关数据的集合。数据库的特点是数据间联系密切、冗余度小、独立性较高、易扩展、可共享。

【数据库系统】
数据库系统(Database System,DBS):是一个采用了数据库技术,有组织地、动态地存储大量相关联数据,从而方便多用户访问的计算机系统。广义上讲, DBS包括了数据库管理系统(DataBase Management System,DBMS)。

【数据库管理系统】
数据库系统(Database Manage System,DBMS):数据库管理系统主要有数据定义,数据库操作,数据库运行管理,数据组织、存储和管理,数据库的建立和维护等5个方面功能。

【数据处理】
数据处理是对各种数据进行收集、存储、加工和传播的一系列活动。

【数据管理】
数据管理是对数据进行分类、组织、编码、存储、检索和维护的活动。
在这里插入图片描述

1.2 数据库模型

数据库的基础部分是数据模型,而数据模型又分为数据结构、数据操作和约束数据条件。
(1)数据结构。对象类型的集合,是对系统静态特性的描述。
(2)数据操作。对数据库中各种对象(型)的实例(值)允许执行的操作集合,包括操作及操作规则。如操作有检索、插入、删除和修改,操作规则有优先级等。数据操作是对系统动 态特性的描述。
(3)数据的约束条件。是一组完整性规则的集合。数据的约束条件用于保证数据的正确、有效和相容。

【数据库的发展历史】
按照不同的数据模型,可以将数据库的发展历史分为3个阶段:层次和网状数据库系统、关系数据库系统、第三代数据库系统。
层次和网状数据库系统:树形结构表示数据与数据间的联系,底层可用图结构表示。
关系数据库系统:目前最常用的数据模型之一,最大特色是描述数据的一致性。关系模型是由若干个关系模式组成的集合。一个关系模式相当于一个记录型,对应于程序设计语言中类型定义的概念。关系是一个实例,也是一张表。
第三代数据库系统:支持日益复杂的数据类型。

【三级模式】
从对用户屏蔽系统的复杂性,简化用户与系统的交互来看,数据库由视图层、逻辑层和物理层三个层,如下图的右侧。
从数据库管理系统的角度,数据库也分为三级模式,分别是外模式、概念模式和内模式,如下图的左侧部分。
在这里插入图片描述

1.3 关系数据库

关系数据库系统是支持关系数据模型的数据库系统,关系数据库应用数学方法来处理数据库中的数据。良好的关系商业化关系数据库如Oracle、DB2、MySQL、Sybase等。

【关系数据库的概念】
先看下一些关系术语。
属性:一些特征。例如一个学生所拥有的属性有姓名、性别、年龄、籍贯、学号、身份证编码等。
:一个特征的集合。例如性别有男、女、其他,那么此时可表示之为性别的域为{男,女,其他}。
主键:一个关系中可以唯一标识的属性,例如学号。
外键:在一个关系中,除了主键,还保留了别的关系的主键,而别的关系的主键则为当前关系的外键。

【关系运算】
5种基本的关系代数运算包括并、差、笛卡尔积、投影和选择,其他运算可以通过基本的关系运算导出。
在这里插入图片描述

1.4 设计范式

关系数据库主要有六种范式,分别是第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF,有的也叫做巴克斯范式)、第四范式(4NF)和第五范式(5NF)。
第一范式(1NF)
缺点:
(1)冗余度大;
(2)修改导致数据不一致性;
(3)插入异常;
(4)删除异常。

第三范式(3NF)
优点:
3NF中不存在部分依赖和传递依赖,具有较好的性能,一般用于查询数据。

巴斯-科德范式(BCNF)
特点:
(1)所有非主属性对每一个码都是完全函数依赖,直白些就是只依赖当前关系的主键;
(2)所有非主属性对每一个不包含它的码,也是完全函数依赖;
(3)没有任何属性完全函数依赖于非码的任何一组属性。

第四范式(4NF)
第四范式是限制关系模式的属性间不允许有非平凡且非函数依赖的多值依赖。

注意⚠️:如果只考虑函数依赖,关系模式最高的规范化程度是 BCNF ; 如果考虑多值依赖,关系模式最高的规范化程度是4NF。

2 数据库设计

2.1数据库设计步骤

目前主流的数据库系统多数为关系数据库系统,数据库设计 (Database Design) 属于系统设计的范畴,一般将数据库设计分为如下6个阶段。
(1)用户需求分析。对应用对象的功能、性能、限制进行分析。
(2)概念结构设计。对信息分析、定义后模型化。
(3)逻辑结构设计。概念模型转化为数据模型。
(4)物理结构设计。是逻辑模型在计算机中的具体实现方案。
(5)数据库实施阶段。数据库设计人员根据逻辑设计和物理设计阶段的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
(6)数据库运行和维护阶段。

2.2应用程序和数据库

用户或应用程序可以通过SQL、过程性SQL、库函数、嵌入式SQL、通用数据接口标准和对象关系映射来访问数据库。开放数据库连接 (Open DataBase Connectivity,ODBC) 是为解决异构数据库间的数据共享 而产生的。对象关系映射是一种程序设计技术,典型的ORM框架有Hibernate、Mybatis和JPA等。

3 NoSQL

NoSQL仅仅是一个概念,泛指非关系型的数据库,区别于关系数据库,它们不保证关系数据的 ACID 特性。NoSQL特征:易扩展、大数据量、高性能、灵活数据模型、高可用。NoSQL整体框架分为4层,由下至上分为数据持久层 (Data Persistence)、 数据分布层 (Data Distribution Model)、 数据逻辑模型层 (Data Logical Model) 和接口层 (Interface),
NoSQL有如下类型:
1、列式存储数据库,如 Cassandra、HBase。
2、键值对存储数据库,如Redis、Oracle BDB。
3、文档型数据库,如 CouchDB、MongoDb, 国内也有文档型数据库SequoiaDB。
4、图数据库,如Neo4J、InfoGrid、Infinite Graph。

总结

参考 《系统架构设计师》 的书籍,算是看完这一章节,所有部分多数来源于此书籍。


[引用]

  1. 《系统架构设计师》(第二版)

欢迎关注博主 「六月暴雪飞梨花」 或加入【六月暴雪飞梨花社区】一起学习和分享Linux、C、C++、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。

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

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

相关文章

【赵渝强老师】K8s中的Deployment控制器

K8s的Deployment将Pod部署成无状态的应用程序,它只关心Pod的数量、Pod更新方式、使用的镜像和资源限制等。由于是无状态的管理方式,因此Deployment中没有角色和顺序的概念,换句话说:Deployment中没有状态。   通过使用Deploymen…

打工人必看!AI 编程助手让你轻松应对任务!

在当今科技飞速发展的时代,我们作为开发者面临着前所未有的挑战。技术栈频繁迭代,项目周期逐渐缩短,但对代码质量和的要求却不断提升这样的环境下,如何有效提升编程效率成为了一个永恒的议题。 最近,我找到了一位强大…

C语言定时器编程深入研究

定时器是操作系统提供的用于计时的功能之一,常用于控制程序中的延时操作或周期性任务。本篇文章将详细介绍如何使用C语言处理定时器,包括基本的定时器设置方法、自定义定时器处理函数以及一些高级主题。 1. 引言 定时器是操作系统向进程提供的一个用于…

Shiro-550—漏洞分析(CVE-2016-4437)

文章目录 漏洞原理源码分析加密过程解密过程 漏洞复现 漏洞原理 Shiro-550(CVE-2016-4437)反序列化漏洞 在调试cookie加密过程的时候发现开发者将AES用来加密的密钥硬编码了,并且所以导致我们拿到密钥后可以精心构造恶意payload替换cookie,然后让后台最…

navicat无法连接远程mysql数据库1130报错的解决方法

出现报错:1130 - Host ipaddress is not allowed to connect to this MySQL serve navicat,当前ip不允许连接到这个MySQL服务 解决当前ip无法连接远程mysql的方法 1. 查看mysql端口,并在服务器安全组中放开相应入方向端口后重启服务器 sud…

vmware官网下载

1 https://www.vmware.com/ 2 3 4 https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion

工程师 - Windows下打开PowerShell和CMD Prompt的若干方法

打开PowerShell 在Windows中,你可以通过以下几种方式来打开PowerShell: 1. 开始菜单(Start Menu):点击“开始”按钮,然后在搜索栏中输入“PowerShell”。在搜索结果中,选择“Windows PowerShell…

【Python语言初识(二)】

一、分支结构 1.1、if语句 在Python中,要构造分支结构可以使用if、elif和else关键字。所谓关键字就是有特殊含义的单词,像if和else就是专门用于构造分支结构的关键字,很显然你不能够使用它作为变量名(事实上,用作其他…

C#开发记录如何建立虚拟串口,进行串口通信,以及通信模板

记录时间;2024年4月 记录如何开启虚拟串口以及进行基础串口通信。 建立虚拟串口 使用的软件是vspd,建立虚拟串口之后就可以将他们当成实际物理连接的两个串口进行通信。 之后使用我们之前给出的通信模板,建立一个稍微规矩一点的界面。 界面建立 其中…

三种不同交联方式的水凝胶:有啥特性?用途有哪些?

大家好,今天我们来了解一篇水凝胶文章——《Dual-Temperature/pH-Sensitive Hydrogels with Excellent Strength and Toughness Crosslinked Using Three Crosslinking Methods》发表于《Gels》。水凝胶在生物医药领域应用广泛,它能存储药物、控制药物释…

全志A133 android10 适配EC20 4G模块

一,移植适配 1. 驱动移植 代码路径:longan/kernel/linux-4.9/drivers/usb/serial/option.c diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index 9f96dd2..2f25466 100644 --- a/drivers/usb/serial/option.cb/drivers/us…

Python和C++及R相关系数数学统计学可视化和神经模型及评估指标

🎯要点 较少统计样本显著性评估和变量关系梳理功能磁共振成像一致性分析检测非单调关联性结构随机变量动力学相关性热图和矩阵图基因疫苗非线性变量相关性 Python相关矩阵 相关矩阵 n n n 个随机变量 X 1 , … , X n X_1, \ldots, X_n X1​,…,Xn​ 的相关矩阵…

【Text2SQL】PET-SQL:在Spider基准测试中取得了SOTA

解读:PET-SQL: A Prompt-enhanced Two-stage Text-to-SQL Framework with Cross-consistency 这篇论文介绍了一个名为 PET-SQL 的文本到 SQL(Text-to-SQL)框架,旨在通过增强提示(prompt)和利用不同大型语言…

【计算机网络篇】电路交换,报文交换,分组交换

本文主要介绍计算机网络中的电路交换,报文交换,分组交换,文中的内容是我认为的重点内容,并非所有。参考的教材是谢希仁老师编著的《计算机网络》第8版。跟学视频课为河南科技大学郑瑞娟老师所讲计网。 目录 🎯一.划分…

科研绘图系列:R语言误差连线图(errobar linechart)

文章目录 介绍加载R包导入数据数据预处理画图系统信息介绍 误差连线图是一种在数据可视化中常用的图表,它通过在数据点处添加线段(误差线)来表示数据的变异性或不确定性。这些误差线可以基于不同的统计度量,如标准差(Standard Deviation)、标准误差(Standard Error)或…

Redis 执行 Lua,能保证原子性吗?

前言 小张目前在使用分布式锁 Redisson 实现一个需求。那我在想我能否自己手撸一个能用于分布式环境的锁呢?于是果然尝试。 历经一天后,小张手撸的锁终于写出来了,再次给各位看看,看给位有没有什么优化的建议: // 加…

任务管理与守护进程【Linux】

文章目录 进程组前台进程&后台进程守护进程daemon 进程组 组长是多个进程的第一个,组长进程的标识是,其进程组ID等于其进程ID 前台进程&后台进程 前台进程:能获取键盘输入,即拥有键盘文件 后台进程:不能获取…

淘宝商品评论电商API接口全方位解析

随着电子商务的蓬勃发展,API接口在电商领域扮演着越来越重要的角色。淘宝作为国内最大的电商平台之一,其商品评论电商API接口为开发者提供了获取商品评论信息、进行数据分析等重要功能。本文将对淘宝商品评论电商API接口进行全方位解析,帮助开…

商品出库单打印怎么设置打印格式 佳易王商品批发出库单打印票据管理系统操作教程

一、前言 商品出库单打印怎么设置打印格式 佳易王商品批发出库单打印票据管理系统操作教程 佳易王商品出库打印纸张建议使用 241*140 ,可根据需要更改或定制 二、软件程序图文说明 1、软件已经内置数据库,解压即可。 2、出库单可以打印两联或三联单或…

Android Kotlin 中的 `groupBy` 方法详解

在 Kotlin 中,groupBy 是一个非常有用的集合操作函数。我们可以使用它按照某个标准,将集合中的元素分组,形成一个 Map,其中 key 是我们分组的标准,value 是符合这个标准的元素列表。本文将通过几个实际例子&#xff0c…