数据备份 & 范式 & 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对多的关系,往往通过表的外键来表达;
- 属性转换成表的字段。