MySQL第1章——数据库概述

数据库概述

为什么要使用数据库

什么是数据持久化?

数据持久化是将数据保存到可切换的存储设备中以备后用。在大多数情况下,尤其是在企业应用中,数据持久化指的是将内存中的数据保存到硬盘上以进行固化,持久化的实现过程大多通过各种关系数据库来完成。

[En]

Data persistence is to save the data to a switchable storage device for later use. In most cases, especially in enterprise applications, data persistence means that the data in memory is saved to the hard disk to be “solidified”, and the implementation process of persistence is mostly done through a variety of relational databases.

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

MySQL第1章——数据库概述

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

[En]

Why use a database to store data?

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

数据库和数据库管理系统

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

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

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

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

[En]

A database management system can manage multiple databases, and developers generally create a database for each application. In order to ensure the data of the entities in the application, it is common to create multiple data tables in the database to ensure the data of the entity users in the program.

客户通过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)。
  • 表与表之间存在关系。关系数据库是基于关系模型的数据库。
    [En]

    there is a relationship between tables and tables. Relational database is a database based on relational model.*

  • SQL就是关系型数据库的查询语言。

MySQL第1章——数据库概述

关系型数据库的优势:

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

    supporting transactions: data access requirements that require high security performance can be realized.*

非RDBMS

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

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

非关系型数据库的分类:

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

关系型数据库设计规则

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

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

  • 实体集
  • 属性
  • 联系集

实体集对应于表格;实体对应于行,也称为记录;属性对应于列,也称为字段。

[En]

An entity set corresponds to a table; an entity corresponds to a row, also known as a record; and an attribute corresponds to a column, also known as a field.

MySQL第1章——数据库概述

表的关联关系

一对一关系

  • 在实际开发中应用不广泛,因为一对一可以创表。
    [En]

    it is not widely used in actual development, because one-to-one can create a table.*

  • 示例:设计学生表:学生号、姓名、手机号、班级、系、身份证号、家庭住址、出生地、紧急联系人。

    [En]

    example: design student form: student number, name, mobile phone number, class, department, ID number, home address, place of origin, emergency contact,.*

  • 拆分成两个表:两个表的记录是一一对应关系。

  • 基础信息表(常用信息):学号、姓名、手机号码、班级、系别
  • 档案信息表(不常用信息):学号、身份证号码、家庭住址、籍贯、紧急联系人、…

  • 两种建表原则:

  • 外键唯一:
  • 外键是主键:主表的主键和从表的外键(唯一),形成主外键关系,外键唯一。
  • 外键是主键:主表的主键和从表的主键,形成主外键关系。

MySQL第1章——数据库概述

一对多关系

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

MySQL第1章——数据库概述

多对多关系

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

[En]

To represent a many-to-many relationship, you must create a third table, often referred to as a join table, which divides the many-to-many relationship into two one-to-many relationships. Insert the primary keys of both tables into the third table.

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

MySQL第1章——数据库概述
  • 举例2:产品-订单 “订单”表和”产品”表有一种多对多的关系,这种关系是通过与”订单明细”表建立两个一对多关系来定义的。一个订单可以有多个产品,每个产品可以出现在多个订单中。
  • 产品表 :”产品”表中的每条记录表示一个产品。
  • 订单表 :”订单”表中的每条记录表示一个订单。
  • 订单明细表 :每个产品可以与”订单”表中的多条记录对应,即出现在多个订单中。一个订单可以与”产品”表中的多条记录对应,即包含多个产品。

MySQL第1章——数据库概述
  • 举例3:用户-角色 多对多关系建表原则:需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向各自一方的主键。

MySQL第1章——数据库概述

自我引用

MySQL第1章——数据库概述

Original: https://www.cnblogs.com/xiaozhi-jun/p/16535604.html
Author: 小治·君
Title: MySQL第1章——数据库概述

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/505117/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Linux下搭建git分布式管理

    VMware 虚拟机中搭建步骤 一、 1.查一下ip 2.和Xshell连接起来 3.看是否连接上 4.这就ok了 5.输入 yum install git yum install…

    数据库 2023年6月6日
    0131
  • [Mysql]null与真值

    SQL的逻辑运算使用的是三值逻辑,逻辑表达式的计算结果有三种可能, true, false, unknown 比较运算的表达式含 NULL时会产生 unknown结果,例如 SEL…

    数据库 2023年6月16日
    0140
  • MyBatis中模糊搜索使用like匹配带%字符时失效问题

    1.问题背景 Mybatis是我们日常项目中经常使用的框架,在项目中我们一般会使用like查询作为模糊匹配字符进行搜索匹配,下面的Mapper.xml是我们使用like在项目中进行…

    数据库 2023年6月6日
    0124
  • Tomcat端口占用

    进入命令行命令:netstat -ano作用:查看所有端口占用 命令:netstat -aon|findstr 端口号port作用:查看端口号port占用情况 命令:taskkil…

    数据库 2023年6月11日
    097
  • Kafka集群部署

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    数据库 2023年6月16日
    0121
  • 跑步与读书

    本文来自博客园,作者:ukyo–BlackJesus,转载请注明原文链接:https://www.cnblogs.com/ukzq/p/16746334.html Or…

    数据库 2023年6月11日
    0158
  • 看看你离世界一流大厂有多远?3道Google最新SQL面试题 ⛵

    💡 作者:韩信子@ShowMeAI📘 数据分析◉技能提升系列:https://www.showmeai.tech/tutorials/33📘 AI 面试题库系列:https://w…

    数据库 2023年6月14日
    0127
  • IDEA中如何查看接口的所有实现类呢?

    接口是我们日常开发中常用的操作,那么如何查看一个接口有哪些实现类呢?下文笔者将讲述IDEA编辑器中 查看实现类的快捷方法,如下所示 在spring源码阅读中,每一个接口都有很多实现…

    数据库 2023年6月11日
    0143
  • java面试题(2022最新)

    JDK 和 JRE 有什么区别?JRE:Java Runtime Environment(java运行时环境)。即java程序的运行时环境,包含了java虚拟机,java基础类库。…

    数据库 2023年6月16日
    0129
  • MySQL实战45讲 19

    19 | 为什么我只查一行的语句,也执行这么慢? 有些情况下,”查一行”,也会执行得特别慢。 需要说明的是,如果 MySQL 数据库本身就有很大的压力,导致…

    数据库 2023年6月14日
    0115
  • 项目的部署和环境搭建

    项目的部署和环境搭建 cd /opt (一般项目部署的文件代码都放在/opt目录下) 3.进入项目跟目录下的docker目录: cd crm _pro/docker 4.执行doc…

    数据库 2023年6月16日
    0146
  • Redis 哈希Hash底层数据结构

    Redis 底层数据结构 Redis数据库就像是一个哈希表,首先对key进行哈希运算得到哈希值再取模得到一个下标,每个元素是一个节点,节点之间形成链表。这感觉有点像Java中的Ha…

    数据库 2023年6月14日
    0139
  • 数据库操作命令

    MySQL Key Command 清屏 (滚屏 ) 登录 切换数据库 查看数据库 查看表 查看表结构 退出 帮助 Key Command 查看可用字符集 查看默认字符集 设置默认…

    数据库 2023年5月24日
    0121
  • MySQL 批量修改库、表、列的排序规则

    1.表字段修复 SELECT TABLE_SCHEMA ‘数据库’, TABLE_NAME ‘表’, COLUMN_NAME ‘字段’, CHARACTER_SET_NAME ‘原…

    数据库 2023年6月14日
    0149
  • MySQL查询性能优化七种武器之索引潜水

    有读者可能会一脸懵逼? 啥是 索引潜水? 你给它起名字了吗?你有指数蛙泳吗? [En] Did you give it the name? Do you have index br…

    数据库 2023年5月24日
    0156
  • 浅谈一下“敏捷开发”

    为什么需要敏捷开发 在以前,软件项目的开发都是以年来计算的,这代表什么意思呢 ?需求设计了半年多,方案设计做了半年多,开发了三年多,测试了半年多,修改Bug用了半年多。总计花了很长…

    数据库 2023年6月14日
    0150
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球