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)

大家都在看

  • git仓库push 和 pull只获取部分文件的方法

    gitee项目https://gitee.com/kehaoo/mytest目录结构如下其中part1.txt和part2.txt都是内容都是空的 在另一个文件夹将项目part1文…

    数据库 2023年6月11日
    0101
  • Java韩顺平

    慢慢更新 什么是程序 程序是有序指令的集合 CMD编译执行Java文件 编译:javac 文件名.java执行:java 文件名 文件夹地址栏 输入 CMD 弹出本文件夹命令行 J…

    数据库 2023年6月11日
    059
  • Java-课堂笔记

    用Typora重新排版了下, 发现还有挺多问题, 手动排版好像也不识别. 太麻烦就这样了, 课堂笔记只是证明自己没有上课摸鱼, 这里的笔记是当初疫情上网课写的. 以后会按照路线重新…

    数据库 2023年6月11日
    086
  • Mybatis SqlNode源码解析

    1.ForEachSqlNode mybatis的foreach标签可以将列表、数组中的元素拼接起来,中间可以指定分隔符separator <select id="…

    数据库 2023年6月16日
    077
  • 977.有序数组的平方

    给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 示例 1: 输入:nums = [-4,-1,0,3,10]输出…

    数据库 2023年6月16日
    091
  • 【黄啊码】MySQL复制以及调优

    一. 简介 MySQL自带复制方案,带来好处有: 数据备份。负载均衡。分布式数据。 概念介绍: 主机(master):被复制的数据库。从机(slave):复制主机数据的数据库。 复…

    数据库 2023年6月16日
    0113
  • java面试题总结

    1,集合类面试题 arraylist和linkedlist的区别?底层实现?手写实现?线程安全吗以及原因? hashmap的底层实现?put()执行过程?put null时的执行过…

    数据库 2023年6月11日
    088
  • Mysql数据库 ALTER 基本操作

    背景: ALTER作为DDL语言之一,工作中经常遇到,这里我们简单介绍一下常见的几种使用场景 新建两个测试表offices 和 employess CREATE TABLE off…

    数据库 2023年6月14日
    083
  • Mysql_范式入门

    MySQL 三大范式 为什么需要数据规范化 信息重复 更新异常 插入异常 无法正常显示信息 删除异常 丢失有效的信息 设计关系型数据库时,遵从不同的规范要求,设计出合理的关系型数据…

    数据库 2023年6月11日
    091
  • Jmeter操作ES

    JMeter 是 Apache 组织基于 Java 开发的压力测试工具,用于对软件做压力测试。Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎(简称es…

    数据库 2023年6月14日
    093
  • 详解apollo的设计与使用

    apollo 是一款由携程团队开发的配置中心,可以实现配置的集中管理、分环境管理、即时生效等等。在这篇博客中,我们可以了解到: 这里我回答的是为什么使用配置中心,而不是为什么使用 …

    数据库 2023年6月6日
    099
  • CentOS7安装配置Tomcat

    1.安装jdk jdk 安装有两种方式,本文只介绍rpm格式的安装包 安装jdk:在安装包所在的目录下执行如下语句 安装完成后,默认安装在/usr/java下。 配置环境变量,执行…

    数据库 2023年6月11日
    070
  • writeset参数配置探索——究竟在哪个角色上配置参数?

    关于writeset,一直以来我都是所有节点同时配置下面参数: binlog_transaction_dependency_tracking=WRITESET transactio…

    数据库 2023年6月16日
    083
  • Redis缓存相关的几个问题

    1 缓存穿透 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,进而给数据库带来…

    数据库 2023年6月14日
    077
  • 5_SpringMVC

    一. 什么是MVC框架 MVC全名是Model View Controller, 是模型(model), 视图(view), 控制器(controller)的缩写, 一种软件设计典…

    数据库 2023年6月11日
    0100
  • 2022-8-24 js

    JavaScript脚本语言,解释性 &#x4E3B;&#x8981;&#x7ED9;HTML&#x7F51;&#x9875;&#x…

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