当前位置: 首页 > article >正文

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

📫 作者简介:「六月暴雪飞梨花」,专注于研究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.kler.cn/news/313273.html

相关文章:

  • Docker 里面按照ifconfig
  • AppStore评论爬虫
  • 了解深度学习,张量,线性代数,激活函数的概念
  • 计算机网络传输层---课后综合题
  • Day24笔记-异常和错误
  • JVM 调优篇8 调优案例5- 逃逸分析
  • docker 安装mongo 集群
  • 4款音频转文字在线转换工具帮你解锁新的记录模式。
  • Python 装饰器使用详解
  • 【Java集合】LinkedList
  • AV1 Bitstream Decoding Process Specification--[5]: 语法结构语义-1
  • LeetCode[中等] 3. 无重复字符的最长子串
  • Java项目实战II基于Java+Spring Boot+MySQL的大型商场应急预案管理系统(源码+数据库+文档)
  • 【原创】java+springboot+mysql科研成果管理系统设计与实现
  • Vue.js 与后端配合:打造强大的现代 Web 应用
  • YoloV9改进策略:BackBone改进|EfficientFormerV2在YoloV9中的创新应用,精度与效率的完美平衡
  • fmql之ubuntu联网
  • 【 ACM独立出版,见刊后1个月检索!!!】第二届通信网络与机器学习国际学术会议(CNML 2024,10月25-27)
  • JS在线加密解密工具
  • 应用性能优化实践(三)减少丢帧卡顿
  • 无线麦克风哪个好,麦克风哪个品牌音质最好,领夹麦克风推荐
  • 可视化工具箱-Visualization Toolkit(VTK)
  • go语言中的数组指针和指针数组的区别详解
  • 【车载开发系列】APQP基本概念
  • IDEA2023.1添加java虚拟机启动参数,打开断言
  • 对接阿里asr和Azure asr
  • KMP算法的实现
  • How can I integrate OpenAI Whisper model into a Kotlin app?
  • 解决 iOS App Tracking Transparency 权限问题
  • windows下,用docker部署xinference,为什么老是提示localhost无法访问?