MySQL学习笔记11——数据备份 范式 ER模型

news2024/11/29 1:56:43

数据备份 & 范式 & ER模型

  • 一、数据备份
    • 1、如何进行数据备份
      • (1)备份数据库中的表
      • (2)备份数据库
      • (3)备份整个数据库服务器
    • 2、如何进行数据恢复
    • 3、如何导出和导入表里的数据
      • (1)SELECT语句导出数据
      • (2)使用LOAD DATA语句导入数据
  • 二、范式
    • 1、第一范式
    • 2、第二范式
    • 3、第三范式
    • 4、业务优先原则
  • 三、ER模型
    • 1、ER模型的要素
    • 2、如何把ER模型转换成数据表

一、数据备份

MySQL的数据备份有2种:

  • 物理备份, 通过把数据文件复制出来,达到备份的目的,需要收费,用得比较少。
  • 逻辑备份,通过把描述数据库结构和内容的信息保存起来,达到备份的目的,免费的,广泛得到使用,本文重点讲解逻辑备份。

1、如何进行数据备份

用于数据备份的工具mysqldump总共有三种模式:

  • 备份数据库中的表;
  • 备份整个数据库;
  • 备份整个数据库服务器。

(1)备份数据库中的表

-- mysqldump备份数据库中的表的语法结构是:
mysqldump -h 服务器-u 用户-p 密码 数据库名称[表名称 …] > 备份文件名称

举例:
在这里插入图片描述
备份文件是以文本格式保存的,我们可以用记事本查看备份的内容,它相当于一个SQL执行脚本。

(2)备份数据库

-- mysqldump备份数据库的语法结构是:
mysqldump -h 服务器 -u 用户-p 密码 --databases 数据库名称… > 备份文件名

举例:
在这里插入图片描述

(3)备份整个数据库服务器

-- 备份整个数据库服务器的语法结构:
mysqldump -h 服务器 -u 用户 -p 密码 --all-databases > 备份文件名

2、如何进行数据恢复

mysqldump的备份文件包含了创建数据库、数据表,以及插入数据表里原有数据的SQL语句,我们可以直接运行这些SQL语句,来进行数据恢复。

数据恢复的方法主要有2种:

  • 使用 “mysql” 命令行客户端工具进行数据恢复;
  • 使用 “SOURCE” 语句进行数据恢复。
-- 方法一
mysql -u root -p demo < test.sql
-- 方法二
SOURCE 备份文件名
-- 举例:
USE demo
SOURCE H:\\test.sql

3、如何导出和导入表里的数据

首先将表的数据按照一定的格式,导出成一个文件。

(1)SELECT语句导出数据

使用 " SELECT … INTO OUTFILE " 语句导出数据表的语法结构:

-- 查询的结果保存到 "文件名称" 指定的文件中
SELECT 字段列表 INTO OUTFILE 文件名称
-- 列之间的分隔符是 "字符"
FIELDS TERMINATED BY 字符
-- 行之间的分隔符是 "字符"
LINES TERMINATED BY 字符
FROM 表名;

-- 举例:
SELECT * INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/goodsmaster.txt'
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
FROM demo.goodsmaster;

注意:在上面这个例子中,如果文件名称写 " D:\goodsmaster.txt ",则系统会报 " --secure-file-priv " 错误。

解决方法就是:我们去 " C:\ProgramData\MySQL\MySQL Server 8.0\my.ini " 中查看 " --secure-file-priv " 的配置如下:在这里插入图片描述

(2)使用LOAD DATA语句导入数据

使用 " LOAD DATA " 语句导入数据的语法结构:

LOAD DATA INFILE 文件名
INTO TABLE 表名
FIELDS TERMINATED BY 字符
LINES TERMINATED BY 字符;

二、范式

范式可以帮助我们设计出简介高效的数据表,进而提高系统的效率。

1、第一范式

关系中的每个属性都是不可再分的最小数据单元,即列不可再分。所有字段都是基本数据字段,不可进一步拆分。如 “ 10支/包 ” 就可以拆分成两个字段存储。

2、第二范式

第二范式要求,在满足第一范式的基础上,还要满足数据表里的每一条数据记录,都是可唯一标识的。而且所有字段,都必须完全依赖主键,不能只依赖主键的一部分。即关系必须满足1NF,且非主属性完全依赖于主键

举例:
假设我们有一个学生课程表:在这里插入图片描述
在这个表中,主键是学生ID课程ID的组合。课程名称 这一列并不直接依赖于整个主键(学生ID课程ID),而是只依赖于课程ID。这就不满足2NF的情况,因为课程名称应该与学生ID是无关的。

为了满足2NF,我们可以将表拆分为两个表:一个是学生课程表,只记录学生和课程的关联;另一个是课程表,记录课程的基本信息。

学生课程表:
在这里插入图片描述
课程表:
在这里插入图片描述

3、第三范式

第三范式要求数据表在满足第二范式的基础上,不能包含那些可以由非主键字段派生出来的字段,或者说,不能存在依赖于非主键字段的字段。即关系必须满足2NF,且非主属性之间不存在传递依赖

4、业务优先原则

所谓的业务优先原则,就是指一切以业务需求为主,技术服务于业务。完全按照理论的设计不一定就是最优,还要根据实际情况来决定。

三、ER模型

ER 模型也叫作实体关系模型,是用来描述现实生活中客观存在的事物、事物的属性,以及事物之间关系的一种数据模型。在开发基于数据库的信
息系统的设计阶段,通常使用ER模型来描述信息需求和信息特性,帮助我们理清业务逻辑,从而设计出优秀的数据库。

1、ER模型的要素

  • 实体:可以看做是数据对象,往往对应于现实生活中的真实存在的个体。
  • 属性:则是指实体的特性。
  • 关系:则是指实体之间的联系。关系又可以分为3种类型,分别是1对1、1对多和多对多。
    在这里插入图片描述

2、如何把ER模型转换成数据表

通过绘制ER模型,我们已经理清了业务逻辑。那么如何把绘制好的ER模型,转换成具体的数据表呢。

下面是一些转换的原则:

  • 一个实体通常转换成一个数据表;
  • 一个多对多的关系,通常也转换成一个数据表;
  • 一个1对1,或者1对多的关系,往往通过表的外键来表达;
  • 属性转换成表的字段。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ARM架构安全特性之防御执行技术

安全之安全(security)博客目录导读 目录 1、侧信道攻击威胁 2、推测屏障Speculation Barriers 3、栈溢出攻击威胁 4、指针认证PAC 5、分支目标识别BTI 6、内存安全违规威胁 7、内存标记扩展MTE 8、加强数据保护 9、特权不可访问&#xff08;Privileged Access Never …

一套MySQL读写分离分库分表的架构,被秀到了!

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验&#xff0c; Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、My…

Linux进程控制——Linux进程终止

前言&#xff1a;前面了解完前面的Linux进程基础概念后&#xff0c;我们算是解决了Linux进程中的一大麻烦&#xff0c;现在我们准备更深入的了解Linux进程——Linux进程控制&#xff01; 我们主要介绍的Linux进程控制内容包括&#xff1a;进程终止&#xff0c;进程等待与替换&a…

答辩PPT设计缺乏专业感?笔灵AI提供简洁且关键的幻灯片设计

在我原本的认知里面&#xff0c;答辩PPT是要包含论文各个章节的&#xff0c;在答辩时需要方方面面都讲到的&#xff0c;什么摘要、文献综述、实证分析、研究结果样样不落。但是&#xff0c;这大错特错&#xff01; 答辩PPT环节时长一般不超过5分钟&#xff0c;老师想要的答辩P…

Linunx应急响应

Linux应急流程 1,请提交攻击者的 IP 地址2,请提交攻击者使⽤的操作系统3,请提交攻击者进⼊⽹站后台的密码4,请提交攻击者⾸次攻击成功的时间&#xff0c;格式&#xff1a;DD/MM/YY:hh:mm:ss5,请提交攻击者上传的恶意⽂件名&#xff08;含路径&#xff09;6,请提交攻击者写⼊的恶…

机器学习特征降维

目录 特征降维概念 低方差过滤法 PCA主成分分析 相关系数法 小结 特征降维概念 特征对训练模型时非常重要的&#xff1b;用于训练的数据集包含一些不重要的特征&#xff0c;可能导致模型性能不好、泛化性能不佳&#xff1b;例如&#xff1a; 某些特征的取值较为接近&…

Multisim 14 常见电子仪器的使用和Multisim的使用

multisim multisim&#xff0c;即电子电路仿真设计软件。Multisim是美国国家仪器&#xff08;NI&#xff09;有限公司推出的以Windows为基础的仿真工具&#xff0c;适用于板级的模拟/数字电路板的设计工作。它包含了电路原理图的图形输入、电路硬件描述语言输入方式&#xff0…

全面理解BDD(行为驱动开发):转变思维方式,提升软件质量

在传统的软件开发流程中&#xff0c;开发人员和测试人员的工作通常是相互独立的。开发人员负责编写代码&#xff0c;测试人员负责找出代码中的问题。然而&#xff0c;这种方法可能导致沟通不足&#xff0c;而且会浪费时间和资源。为了解决这些问题&#xff0c;出现了一种新的开…

IM是什么意思?

IM&#xff08;即时通讯&#xff09;作为现代通讯领域的重要且普遍应用&#xff0c;已成为人们日常生活和工作中不可或缺的通信方式。随着科技的不断发展和互联网的普及&#xff0c;IM工具通过实时信息传递&#xff0c;将沟通变得更加迅速、便捷、高效。 IM的诞生极大地改变了…

【python量化交易】qteasy使用教程06——创建自定义因子选股交易策略

创建自定义因子选股策略 使用qteasy创建自定义因子选股交易策略开始前的准备工作本节的目标Alpha选股策略的选股思想计算选股指标用FactorSorter定义Alpha选股策略交易策略的回测结果用GeneralStg定义一个Alpha选股策略回测结果&#xff1a;本节回顾 使用qteasy创建自定义因子选…

(Java)心得:LeetCode——19.删除链表的倒数第 N 个节点

一、原题 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[]示例 3&…

「 安全设计 」68家国内外科技巨头和安全巨头参与了CISA发起的安全设计承诺,包含MFA、默认密码、CVE、VDP等七大承诺目标

美国网络安全和基础设施安全局&#xff08;CISA&#xff0c;CyberSecurity & Infrastructure Security Agency&#xff09;于2024年5月开始呼吁企业是时候将网络安全融入到技术产品的设计和制造中了&#xff0c;并发起了安全设计承诺行动&#xff0c;该承诺旨在补充和建立现…

[AIGC] redis 持久化相关的几道面试题

文章目录 1. 什么是Redis持久化&#xff1f;2. Redis 的持久化机制是什么&#xff1f;各自的优缺点&#xff1f;2.1 RDB&#xff08;Redis DataBase&#xff09;&#xff0c;快照2.2 AOF&#xff08;Append Only File&#xff09;&#xff0c;日志 3. 优缺点是什么&#xff1f;…

【C++11】列表初始化、右值引用的详细讲解(上)

前言 在一开始学C之前我们就简单的了解了一下C的发展历史。 相比较而言&#xff0c;C11能更好地用于系统开发和库开发、语法更加泛华和简单化、更加稳定和安全&#xff0c;不仅功能更强大&#xff0c;而且能提升程序员的开发效率加了许多特性&#xff0c;约140个新特性。使得C…

Golang 开发实战day13 - Reciver Functions

&#x1f3c6;个人专栏 &#x1f93a; leetcode &#x1f9d7; Leetcode Prime &#x1f3c7; Golang20天教程 &#x1f6b4;‍♂️ Java问题收集园地 &#x1f334; 成长感悟 欢迎大家观看&#xff0c;不执着于追求顶峰&#xff0c;只享受探索过程 Golang 开发实战day13 - 接收…

拌合楼管理系统(十九)ini配置文件本地加密

前 言&#xff1a; 项目中&#xff0c;数据库服务器与程序不在一起&#xff0c;且不允许通过互联网直接访问数据库。 解决方法是通过web服务来做中间件来解决数据交互的问题。但如果web服务交互又存在身份验证问题&#xff0c;需要实现访问对应的接口是经过授权的&#xff0c;未…

sumif的求和区域是文本格式怎么办?

sumif函数的求和区域是文本型数字&#xff0c;不更改源数据的情况下怎么求和呢&#xff1f; 一、不能使用SUMIF、SUMIFS函数 这两个函数的求和区域只能是引用&#xff0c;不能是公式运算的内存数组&#xff0c;因此不能用公式或运算符将求和区转换成数值。当引用来的数据是文本…

【Java】变量类型

类变量&#xff1a;独立于方法之外的变量&#xff0c;用static修饰实例变量&#xff1a;独立于方法之外的变量&#xff0c;不过没有static修饰局部变量&#xff1a;类的方法中的变量 示例1&#xff1a; public class test_A {static int a;//类变量(静态变量)String b;//实例…

C语言例题34、反向输出字符串(递归方式)

题目要求&#xff1a;输入5个字符后&#xff0c;使用递归方式逆序输出 #include <stdio.h>void reverse(int num) {char cur_char;if (num 1) {cur_char getchar();printf("逆序输出为&#xff1a;");putchar(cur_char);} else {cur_char getchar();revers…

用迭代加深解决加成序列问题

可以看到这个最坏的结果是100层搜索&#xff0c;但是其实1 2 4 8 16 32 64 128&#xff0c;到128的话也只要8&#xff0c;所以大概只需要10几层搜索就可以解决了&#xff0c;这个时候就可以用迭代加深的方法&#xff0c;深度一点点的加&#xff0c;如果大于概深度就舍去。有人说…