系统架构设计师|数据库基础-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。
总结
参考 《系统架构设计师》 的书籍,算是看完这一章节,所有部分多数来源于此书籍。
[引用]
- 《系统架构设计师》(第二版)
欢迎关注博主 「六月暴雪飞梨花」 或加入【六月暴雪飞梨花社区】一起学习和分享Linux、C、C++、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。