MySQL第1章——数据库概述「终于解决」

MySQL第1章——数据库概述「终于解决」数据库概述 为什么要使用数据库 什么是数据持久化? 数据持久化就是把数据保存到可掉电式存储设备中供以后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持

MySQL第1章——数据库概述

数据库概述

为什么要使用数据库

什么是数据持久化?

数据持久化就是把数据保存到可掉电式存储设备中供以后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各种关系数据库来完成。

持久化的主要作用是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中。

MySQL第1章——数据库概述「终于解决」

为什么用数据库来存储数据?

  • 数据库的特点:
    • 数据库存储的数据量非常庞大。以单表来说,我们可以存储几千万甚至上亿条数据。与文件存储相比,当数据量特别庞大的时候,数据库查询数据的效率更高。
    • 数据库存储数据的类型更更富。例如整数类型、浮点类型、字符串类型,甚至是图片,大文本等等。
  • 文件存储的弊端:有些文件需要特定的程序才可以打开。例如,excel。

数据库和数据库管理系统

数据库、数据库管理系统、结构化查询语言

  • 数据库(Database,DB):DB是存储数据的“仓库”,其本质是一个文件系统。
  • 数据库管理系统(Database Management System,DBMS):DBMS是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制。用户通过数据库管理系统访问数据库中数据表的数据。
  • 结构化查询语言(Structured Query Language,SQL):SQL是专本用来与数据库通信的语言。

数据库与数据库管理系统的关系

数据库管理系统可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。为了保证应用中实体的数据,一般会在数据库创建多个数据表,以保证程序中实体用户的数据。

客户通过Web服务器访问数据库管理系统,数据库管理系统通过SQL访问数据库中的数据表。

MySQL第1章——数据库概述「终于解决」

常见的数据库管理系统

常见的DBMS有Oracle、MySQL、SQL server、Db2、PostgreSQL等。

MySQL第1章——数据库概述「终于解决」

MySQL介绍

MySQL第1章——数据库概述「终于解决」

RDMBS与非RDBMS

RDBMS

关系型数据库(RDBMS):RDBMS是最古老的数据库类型,它把复杂的数据结构归结为简单的二元关系(二维表格形式)。

  • RDBMS以行(row)和列(column)的形式存储数据,以便于用户理解。一些列的行和列被称为表(table),一组表组成一个库(database)。
  • 表和表之间存在关系。关系型数据库就是建立在关系模型基础上的数据库。
  • SQL就是关系型数据库的查询语言。

MySQL第1章——数据库概述「终于解决」

关系型数据库的优势:

  • 便于复杂查询:可以使用SQL语句方便在一个或多个表之间进行复杂的查询。
  • 支持事务:使得对于安全性能要求很高的数据访问要求得以实现。

非RDBMS

非关系型数据库(非RDBMS):可以看成是传统关系型数据库的功能阉割版本,基于键值对存储数据,不需要SQL层的解析,性能非常高。同时,通过减少不常用的功能,进一步提高性能。

目前基本大部分主流的非RDBMS都是免费的。

非关系型数据库的分类:

  • 键值型数据库:键值型数据库通过Key-Value键值的方式来存储数据。在查找速度上优于关系型数据库;但是无法像关系型数据库一样使用条件过滤。键值型数据库常在内存缓存中使用。Redis是代表性的键值型数据库。
  • 文档型数据库:文档型数据库可以存放并获取文档,可以是XML、JSON等格式。一个文档相当于一条记录。文档数据库所存放的文档,就相当于键值数据库所存放的“值”。MongoDB是最主流的文档型数据库。
  • 搜索引擎数据库:虽然关系型数据库采用了索引提高检索效率,但是针对全文索引的效率却较低。搜索引擎数据库是应用在搜索引擎领域的数据存储形式,由于搜索引擎会爬取大量的数据,并以特定的格式进行存储,这样在检索的时候才能保证性能最优。核心原理是“倒排索引”。Elasticsearch是最主流的搜索引擎数据库。
  • 列式数据库:可以大量降低系统的I/O,适合于分布式文件系统。典型的列式数据库:HBase。
  • 图形数据库:典型的图形数据库:Neo4J等。

关系型数据库设计规则

E-R(实体-联系)模型

E-R(实体-联系)模型:

  • 实体集
  • 属性
  • 联系集

一个实体集对应一个表;一个实体对应一行,也叫一条记录;一个属性对应一列,也叫字段。

MySQL第1章——数据库概述「终于解决」

表的关联关系

一对一关系

  • 在实际开发中应用不多,因为一对一可以创建一张表。
  • 举例:设计学生表:学号、姓名、手机号、班级、系别、身份证号码、家庭住址、籍贯、紧急联系人、…
    • 拆分成两个表:两个表的记录是一一对应关系。
    • 基础信息表(常用信息):学号、姓名、手机号码、班级、系别
    • 档案信息表(不常用信息):学号、身份证号码、家庭住址、籍贯、紧急联系人、…
  • 两种建表原则:
    • 外键唯一:
    • 外键是主键:主表的主键和从表的外键(唯一),形成主外键关系,外键唯一。
    • 外键是主键:主表的主键和从表的主键,形成主外键关系。

MySQL第1章——数据库概述「终于解决」

一对多关系

  • 常见实例场景: 客户表和订单表 , 分类表和商品表 , 部门表和员工表 。
  • 举例:
    • 员工表:编号、姓名、…、所属部门
    • 部门表:编号、名称、简介
  • 一对多建表原则:在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键

MySQL第1章——数据库概述「终于解决」

多对多关系

要表示多对多关系,必须创建第三个表,该表通常称为联接表,它将多对多关系划分为两个一对多关系。将这两个表的主键都插入到第三个表中。

MySQL第1章——数据库概述「终于解决」

  • 举例1:学生-课程
    • 学生信息表 :一行代表一个学生的信息(学号、姓名、手机号码、班级、系别…)
    • 课程信息表 :一行代表一个课程的信息(课程编号、授课老师、简介…)
    • 选课信息表 :一个学生可以选多门课,一门课可以被多个学生选择

MySQL第1章——数据库概述「终于解决」

  • 举例2:产品-订单

    “订单”表和“产品”表有一种多对多的关系,这种关系是通过与“订单明细”表建立两个一对多关系来定义的。一个订单可以有多个产品,每个产品可以出现在多个订单中。

    • 产品表 :“产品”表中的每条记录表示一个产品。
    • 订单表 :“订单”表中的每条记录表示一个订单。
    • 订单明细表 :每个产品可以与“订单”表中的多条记录对应,即出现在多个订单中。一个订单可以与“产品”表中的多条记录对应,即包含多个产品。

MySQL第1章——数据库概述「终于解决」

  • 举例3:用户-角色

    多对多关系建表原则:需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向各自一方的主键。

MySQL第1章——数据库概述「终于解决」

自我引用

MySQL第1章——数据库概述「终于解决」MySQL第1章——数据库概述「终于解决」

原文地址:https://www.cnblogs.com/xiaozhi-jun/archive/2022/07/30/16535604.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/4946.html

(0)
上一篇 2023-05-29
下一篇 2023-05-29

相关推荐

  • MySQL基础(4) | 视图[亲测有效]

    MySQL基础(4) | 视图[亲测有效]MySQL基础(4) | 视图 基本语法 1.创建 语法说明如下。 “:指定视图的名称。该名称在数据库中必须是唯一的,不能与其他表或视图同名。 “:指定创建视图的 SELECT 语句,可用于查询多

    2023-01-30
    166
  • SQL 基础整理[亲测有效]

    SQL 基础整理[亲测有效]SQL语句执行顺序 From 表连接 on连接条件,形成新的虚拟表 where 筛选条件 group by 生成新的结果集合 group by 分组列表 having 分组后筛选 select 选出显

    2023-03-28
    163
  • 如何在 Python 中跳出循环

    如何在 Python 中跳出循环Python 是一个非常强大的编程语言,具有很多的优秀特性,如循环等。但是有时候,我们需要从循环中提前结束程序,如何在 Python 中跳出循环也就变得尤其重要了。

    2024-08-23
    24
  • mysql 流程控制语句_oracle游标赋值

    mysql 流程控制语句_oracle游标赋值变量、流程控制和游标 变量 在MySQL数据库的存储过程和函数中,可以使用变量来存储查询或计算的中间结果数据,或者输出最终的结果的数据 系统变量 变量由系统定义,属于服务器层面 系统变量的分类 每一个

    2023-05-10
    150
  • BaikalDB在同程艺龙的应用实践(二)[通俗易懂]

    BaikalDB在同程艺龙的应用实践(二)[通俗易懂]本系列文章主要介绍 BaikalDB在同程艺龙的落地实践 作者简介:王勇,同程艺龙架构师,BaikalDB Column Store Contributor,专注于分布式数据库方向的研发工作 欢迎S…

    2023-03-20
    154
  • Python矩阵基础操作

    Python矩阵基础操作矩阵是数学中经常用到的一种概念,常用于表示线性方程组、线性变换等。在机器学习和数据分析中,矩阵也扮演着重要的角色。使用Python进行矩阵操作非常方便,并且Python拥有庞大的科学计算库,例如NumPy、SciPy、Pandas等,使得矩阵计算变得更加容易。

    2024-09-14
    26
  • Mysql相关知识总结-持续更新~~~

    Mysql相关知识总结-持续更新~~~2019-12-11对varchar类型排序问题的解决 在mysql默认order by 只对数字与日期类型可以排序,但对于varchar字符型类型排序好像没有用了,下面我来给各位同学介绍varcha

    2022-12-26
    151
  • python之re模块使用的简单介绍

    python之re模块使用的简单介绍 我们在面对生物数据,比如序列信息(比如碱基序列、氨基酸序列等)的时候, 会时常要问,这其中是否包含着且含有多少某种已知的模式,一段DNA中是否包含转录起始特征TATA box、一段RNA中是否包含某种lncRNA、一段肽链中是否包含锌指结构等等;另一方面,我们在操作数据时,会时常遇到诸如把某个字符(对象)换成另一种字符(对象)的替换操作,而其本质还是如何搜索符合某种(替换)模式的对象。

    2023-11-21
    136

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注