mysql学习之数据系统概述

☀️马上要成为打工人,这几天把前面的知识都捡了捡,发现自己对关系数据库这块的学习还有所缺失,于是本章开始学习mysql

这里写目录标题

  • 1. 数据库系统的发展
    • 1.1 人工管理阶段
    • 1.2 文件系统阶段
    • 1.3 数据库阶段
    • 1.4 大数据阶段
  • 2 数据库系统的组成
    • 2.1 数据模型的概念
    • 2.2 数据模型的种类
    • 2.3 关系数据库的规范化
      • 2.3.1 第一范式
      • 2.3.2 第二范式
      • 2.3.3 第三范式
    • 2.4 关系数据库的设计原则
    • 2.5 数据库概念设计
  • 3. 数据库的体系结构
    • 3.1 数据库的三级模式

1. 数据库系统的发展

数据库的发展主要经历了3个阶段:

1.1 人工管理阶段

1950年以前,计算机主要用于科学计算,并不擅长保存数据,而且当时计算机的硬件和软件都很落后,科学家对数据的管理基本都是通过人工管理的方式,这个阶段的数据管理特点主要有:

  • 数据不保存
  • 数据不共享
  • 数据不具有独立性
  • 使用应用程序管理数据

1.2 文件系统阶段

1960年左右,计算机的软件和硬件都有了较大的发展,有了磁盘等存储设备和专门管理数据的软件,该阶段的数据管理有以下特点:

  • 数据可以长期保存
  • 由文件系统管理数据
  • 共享性差、数据冗余大
  • 数据独立性差

1.3 数据库阶段

二十世纪60年代后,计算机逐渐应用于管理系统,而且规模越来越大,应用越来越广,数据量也急剧增长,对数据共享的要求越来越强烈,使得简单的文件系统不能满足用户的需求,于是出现了数据库系统来统一管理数据。数据库系统的出现,满足了多用户、多应用共享数据的需求,比文件系统具有明显的优点,标志着数据管理技术的飞跃。

1.4 大数据阶段

这个阶段主要是以一些分布式的数据仓库作为数据管理的工具,这里就不给与详细介绍了。

2 数据库系统的组成

数据库系统(database system,DBS) 是采用数据库技术的计算机系统,是由数据库、数据库管理系统、数据库管理员、支持数据库系统的硬件和软件组成,主要结构如下:
在这里插入图片描述

2.1 数据模型的概念

数据模型主要是toenail描述数据与数据之间的关系、数据的语义、数据一致性约束的概念性工具的集合,是数据库系统的核心。
数据模型主要是由数据结构、数据操作、数据完整性约束3部分构成,具体含义如下:

  • 数据结构:是对系统静态特征的描述、描述对象包括数据的类型、内容、性质、和数据之间的相互关系。
  • 数据操作:是对系统动态特征的描述、是对数据库各种对象实例的操作。
  • 完整性约束:是完整性规则的集合,它定义了给定数据模型中数据及其联系所具有的制约和依存规则。

2.2 数据模型的种类

常见的数据模型主要有层次模型、网状模型和关系模型,具体解释如下:

  1. 层次模型:层次模型用树状结构表示实体类型及其实体间联系的数据模型。该结构有以下特点:
    (1)每棵树有且仅有一个无双亲节点,称为根。
    (2)树中除根外所有节点有且仅有一个双亲。
    在这里插入图片描述

  2. 网状模型:用有向图结构表示实体类型及实体间联系的数据模型称为网状模型,用网状模型编写应用程序及其复杂,数据的独立性较差。
    在这里插入图片描述

  3. 关系模型:以二维来描述。关系模型中,每个表有多个字段列和记录行,每个字段列有固定的属性(数字、字符、日期等),关系模型数据结构简单、清晰、具有很高的数据独立性,是目前主流的数据模型
    关系数据模型的基本术语如下:
    (1)关系:一个二维表就是一个关系
    (2)元组:二维表中的一行就是一个元组,即表中的记录
    (3)属性:二维表中的一列,用类型和值表示
    (4)域:每个属性取值的变化范围,如性别的域为{男,女}。
    关系中的数据约束如下:
    (1)实体完整性约束:约束关系的主键中属性值不能为空值
    (2)参照完整性约束:关系之间的基本约束
    (3)用户定义的完整性约束:反应了具体应用中数据的语义要求。

在这里插入图片描述

2.3 关系数据库的规范化

关系数据库的规范化理论为:关系数据库中的每一个关系都要满足一定的规范。根据满足规范的条件不同,可以分为5个等级:1NF,2NF,3NF,BCNF,4NF,5NF。一般情况下,数据库满足三范式就可以满足需求了,下面介绍一下最基础的三范式。

2.3.1 第一范式

在一个关系中,消除重复字段,且各字段都是最小的逻辑存储单位。第一范式是第二和第三范式的基础,是最基本的范式,第一范式的原则如下:
(1)数据组的每一个属性都只包含一个值
(2)关系中的每个数组必须包含相同数量的值
(3)关系中的每个数组一定不能相同
在任何一个关系数据库中,第一范式是最基本的要求,不满足第一范式的数据库就不是关系数据库。由此可见第一范式具有不可再分解的原子特性。
在这里插入图片描述

2.3.2 第二范式

第二范式是在第一范式的基础上建立起来的,即满足第二范式必须先满足第一范式,第二范式要求数据库汇总的每一个实体(即每个记录行)必须可以被唯一地区分。或者说要求实体的属性完全依赖于主关键字,不能存在仅依赖主关键字一部分的属性,如果存在部分依赖的话,需要将这个属性与主关键字分离出来形成一个新的实体。
在这里插入图片描述

2.3.3 第三范式

第三范式是在第二范式的基础上建立起来的,即满足第三范式必须先满足第二范式,第三范式要求关系表中不存在非关键字列中对任意候选关键字列的传递函数依赖,也就是说,第三范式要求一个关系表中不包含已在气压表中包含的非主关键字信息。
所谓传递函数依赖,就是指如果存在关键字a决定非关键字b,而非关键字段b,决定非关键字段c,则称非关键字段c传递依赖于关键字a。
在这里插入图片描述

2.4 关系数据库的设计原则

数据库设计是指对于一个给定的应用环境,根据用户的需求,利用数据模型和应用程序模拟现实中该应用环境的数据结构和处理活动的过程。
数据库设计原则如下:
(1)数据库内的数据文件的数据组织应该获得最大限度的共享、最小冗余、消除数据及数据依赖关系中的冗余部分,使依赖于同一个数据模型的数据达到有效的分离。
(2)保证输入输出、修改数据的一致性与正确性
(3)保证数据与使用数据的应用程序之间的高度独立性。
以上这些特点,需要涉及到数据库中一个概念:事物
事务是逻辑上的一组数据库操作,要么都执行,要么都不执行。事务在数据库中就是一个基本的工作单位,事务中包含的逻辑操作(SQL 语句),只有两种情况:成功和失败。
事物有4个特性:

  • 原子性(Atomicity ):一个事务是一个不可再分割的整体,要么全部成功,要么全部失败
  • 一致性(Consistency ):一个事务可以让数据从一种一致状态切换到另一种一致性状态
  • 隔离性(Isolution ):一个事务不受其他事务的影响,并且多个事务彼此隔离
  • 持久性(Durability ):一个事务一旦被提交,在数据库中的改变就是永久的,提交后就不能再回滚

2.5 数据库概念设计

概念设计是一个构建概念数据模型的过程,这个概念数据模型在抽象的高层建模;需要足够简单且通常是图形化的;并且能够用于与非技术用户交流数据库的需求。这里使用 ==ER 模型(实体关系模型)==来实现概念设计。
实体主要是指客观存在并且客相互区分的事物,实体既可以是实际事物,也可以是抽象的概念或者关系。实体之间一般有3种对应关系:

  1. 一对一:是指表a中的一条记录在表b中有且只有一条相匹配的记录。
  2. 一对多:表a中的行可以在表b中找到多行进行匹配,但是表b的行在表a中只有一个能匹配。
  3. 多对多:每个表中的行在相关表中具有多个匹配行,一般情况下,多对多的关系是通过创建第三个表实现表之间关系的连接。

3. 数据库的体系结构

3.1 数据库的三级模式

三级模式是指:模式、外模式、内模式

  1. 模式:迷失也称为逻辑模式或者概念模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。一个数据库只有一个模式,模式处于三级结构中间。

  2. 外模式:也称为用户模式,是数据库用户(包含应用程序猿和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。外模式是模式的子集,一个数据库可以有多个外模式。

  3. 内模式:也称为存储模式,是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。一个数据库只有一个内模式。

  4. 参考资料

  • 《mysql从入门到精通》
  • 链接: 实体关系模型
  • 链接: mysql事物的四大特性
  • chatgpt

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

了解这7个Node.js库,让你的开发效率提升不止一点点

Node.js是一个流行的JavaScript运行时环境,拥有庞大的生态系统和丰富的库,使得在Node.js上构建高效、可靠的应用程序变得非常容易。在这篇文章中,我们将分享七个有用的Node.js库,它们可以提高您的工作效率,让您更轻松地…

android:手搓一个即时消息聊天框(包含消息记录)

先看一下效果 1.后端 要实现这个,先说一下后端要实现的接口 1.创建会话id 传入“发送id”和“接收id”给服务端,服务端去创建“会话id” 比如 get请求:http://xxxx:8110/picasso/createSession?fromUserId1&toUserId2 返回seesionId…

【SSconv:全色锐化:显式频谱-空间卷积】

SSconv: Explicit Spectral-to-Spatial Convolution for Pansharpening (SSconv:用于全色锐化的显式频谱-空间卷积) 全色锐化的目的是融合高空间分辨率的全色(PAN)图像和低分辨率的多光谱(LR-MS&#xff…

HTML5 Web 存储

HTML5 Web 存储 在HTML5之前,主要是使用cookies存储,cookies的缺点有:需要在请求头上带着数据,存储大小不过,在4k之内。本节, HTML5 web 存储,一个比cookie更好的本地存储方式。 什么是 HTML5 …

Redis技术详解

Redis技术详解 Redis是一种支持key-value等多种数据结构的存储系统。可用于缓存,事件发布或订阅,高速队列等场景。支持网络,提供字符串,哈希,列表,队列,集合结构直接存取,基于内存&…

Proxmox VE 超融合集群虚拟的NFS服务性能很差的问题解决

作者:田逸(formyz) 场景描述 五节点Proxmox VE集群,万兆网络,数据网络与存储网络独立,接口两两bond,交换机堆叠。 单机配置两颗AMD 宵龙CPU,核心数48,单台线程数192,单台…

服务器版RstudioServer安装与配置详细教程

Docker部署Rstudio server 背景:如果您想在服务器上运行RstudioServer,可以按照如下方法进行操作,笔者测试时使用腾讯云服务器(系统centos7),需要在管理员权限下运行 Rstudio 官方提供了使用不同 R 版本的 …

Baumer工业相机中偏振相机如何使用Baumer堡盟GAPI SDK来进行偏振数据的计算转换输出(C++)

项目场景 Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。 Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具…

【ansible】管理变量与事实详解

目录 管理变量与事实 一,变量 1,变量命名 2,变量优先级(高--低) 3,命令行引用 4, 引用playbook中的变量 5, 在主机清单中定义变量 6, 在自定义变量文件中定义变量 7&…

Linux基础IO - 文件描述符、重定向

前面的文章中我们讲述了C语言中文件相关的操作与系统文件IO的接口,这篇文章中将会讲述文件描述符与重定向的知识。 运行在前文中的系统文件程序,通过观察可以看到图中的数据3非常的奇怪没头没尾的,下面我们就来从这里开始。 通过查看man手册…

console使用方法介绍

console是在写前端Javascript时经常会使用到,我平时使用最多的是console.log,相比大多数人也是如此吧! 下面一起来看一下强大的console吧! 01函数(属性) 包含如下函数 / 属性:memory、assert、c…

Hadoop三大框架之HDFS

一、概述HDFS产生的背景及定义HDFS产生背景随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,需要一种系统来管理多台机器上的文件,这就是分布式文件…

日入500+的程序员都在用的“接私活”平台

网上总说程序员的薪资很高,这我可就不同意了: 程序员的薪资哪里是很高,而是非常高!而会接私活的程序员更是能拿到更高的收入!作为一个程序员,这些接私活的网站一定要收藏起来,让你在“八小时外…

ChatGPT transformer 5篇经典论文以及代码和解读

一次性读懂ChatGPT的技术演进路线,根据李沐老师推荐的5篇经典论文,整理了论文原文、论文解读、Github代码实现。 2017Transformer继MLP、CNN、RNN后的第四大类架构2018GPT使用 Transformer 解码器来做预训练2018BERTTransformer一统NLP的开始2019GPT-2更…

区块链概论

目录 1.概述 2.密码学原理 2.1.hash函数 2.2.签名 3.数据结构 3.1.区块结构 3.2.hash pointer 3.3.merkle tree 3.3.1.概述 3.3.2.证明数据存在 3.3.3.证明数据不存在 4.比特币的共识协议 4.1.概述 4.2.验证有效性 4.2.1.验证交易有效性 4.2.2.验证节点有效性 …

YOLOv5源码逐行超详细注释与解读(6)——网络结构(1)yolo.py

前言 在上一篇中,我们简单介绍了YOLOv5的配置文件之一 yolov5s.yaml,这个文件中涉及很多参数,它们的调用会在这篇 yolo.py 和下一篇 common.py 中具体实现。 本篇我们会介绍 yolo.py,这是YOLO的特定模块,和网络构建有…

python【selenium的环境配置】

selenium 1.环境配置 1)在环境设置里面安装selenium第三方库 pip install --user selenium2) from selenium.webdriver import Chrome# 创建谷歌 b Chrome() # 获取网页 b.get(http://www.baidu.com) # 防止自动关闭 input()3)在此之前&…

Rancher系列文章-Rancher v2.6使用脚本实现导入集群

概述 最近在玩 Rancher, 先从最基本的功能玩起, 目前有几个已经搭建好的 K8S 集群, 需要批量导入, 发现官网已经有批量导入的文档了. 根据 Rancher v2.6 进行验证微调后总结经验. 1. Rancher UI 获取创建集群参数 访问Rancher_URL/v3/clusters/,单击右上角“Crea…

第07章_单行函数

第07章_单行函数 🏠个人主页:shark-Gao 🧑个人简介:大家好,我是shark-Gao,一个想要与大家共同进步的男人😉😉 🎉目前状况:23届毕业生,目前在某…

进程地址空间+环境变量

目录 环境变量 进程地址空间 理解虚拟地址空间 进程地址空间区域划分 虚拟内存和物理内存建立联系 深刻理解虚拟地址空间 环境变量 当我们需要使用一个物品的时候,首先要先找到这个物品。同样的,当要运行一个程序(指令)时&a…