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章——数据库概述

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

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

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

(0)

大家都在看

  • 电商项目:玩转拼团活动营销设置

    拼团是什么意思?拼团是各大购物平台近两年新增的一种营销活动工具,买家通过自身分享邀请好友组团,成团后享受卖家商品的让利,商家不用过多宣传就能很好地解决产品推广和引流问题。 拼团的发…

    数据库 2023年6月14日
    077
  • 没有 Cgroups,就没有 Docker

    Cgroups 是什么? Cgroups 是 control groups 的缩写,是 Linux 内核提供的一种可以 限制、 记录、 隔离进程组(progress groups)…

    数据库 2023年6月6日
    0116
  • MySQL基础_索引

    一、介绍 1.什么是索引? 在一般的应用系统中,读写比在10:1左右,插入操作和一般的更新操作很少有性能问题,在生产环境中,我们遇到的最多,也是最容易出现问题的,或者一些复杂的查询…

    数据库 2023年5月24日
    0108
  • jmeter使用base64验证码登录

    依赖环境/工具:java环境、jmeter、python3、pycharm(ide工具) 此次主要操作步骤: 使用jmeter工具把验证码base64加密信息保存至本地。 编写py…

    数据库 2023年6月14日
    087
  • 绿色安装MySQL5.7版本—-配置my.ini文件注意事项

    简述绿色安装MySQL5.7版本以及配置my.ini文件注意事项 前言 由于前段时间电脑重装,虽然很多软件不在C盘,但是由于很多注册表以及关联文件被删除,很多软件还需要重新配置甚至…

    数据库 2023年5月24日
    0102
  • SQL语句的整合

    基础语法 https://blog.csdn.net/m0_37989980/article/details/103413942 CRUD 提供给数据库管理员的基本操作,CRUD(…

    数据库 2023年6月14日
    077
  • Selenium 4 有哪些不一样?

    转载请注明出处❤️ 作者:测试蔡坨坨 原文链接:caituotuo.top/d59b986c.html 你好,我是测试蔡坨坨。 众所周知,Selenium在2021年10月13号发…

    数据库 2023年6月11日
    089
  • python_numpy数组入门

    NumPy 数组的维数称为秩(rank),秩就是轴的数量,即数组的维度,一维数组的秩为 1,二维数组的秩为 2,以此类推。 在 NumPy中,每一个线性的数组称为是一个轴(axis…

    数据库 2023年6月11日
    089
  • SQL的多表查询

    显示内连接: select 字段列表 from 表1 [inner] join 表2 on 连接条件; (PS:方括号(“[]”)内的为可选项;) (注意:…

    数据库 2023年5月24日
    0111
  • 3、数组、集合、Lambda、Stream与Optional类

    一、数组: 数组保存在JVM堆内存中 1、数组的创建: (1)、一维数组创建方式一: //一维数组方式一 Integer[] array01 = {1,2,3}; System.o…

    数据库 2023年6月6日
    098
  • 数据类型

    布尔类型:true和false;占一个位 public class Demo01 {    public static void main(String[] args) { Ori…

    数据库 2023年6月11日
    099
  • 最小化安装killall不可用

    最小化安装killall不可用 最小化安装 Centos7.4后,发现killall命令不可用使用了以下命令,查看软件包名: yum search killall 查找后发现应使用…

    数据库 2023年6月15日
    085
  • 简单日期格式化的使用

    简单日期格式化的应用 简单日期格式化的使用 面试题: 有一个时间 20…

    数据库 2023年6月16日
    075
  • Javaer 面试必背系列!超高频八股之三色标记法

    可达性分析可以分成两个阶段 根节点枚举 从根节点开始遍历对象图 前文提到过,在可达性分析中,第一阶段 “根节点枚举” 是必须 STW 的,不然如果分析过程中…

    数据库 2023年6月6日
    0107
  • springcloud~nacos通过@refreshScope进行配置热更新

    配置类 @Data @ConfigurationProperties("auth") public class AuthProperties { private…

    数据库 2023年6月6日
    090
  • 用户管理

    介绍Linux用户组的概念和对用户添加,删除和指定密码的基本操作 用户管理 Linux 系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一…

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