数据库的备份与还原、数据库表的约束、表与表的关系、数据库设计(三大范式)

数据库的备份与还原

备份与还原的语句

备份格式: DOS 下,未登录的时候。这是一个可执行文件 exe,在 bin 文件夹

mysqldump -u 用户名 -p 密码 数据库 > 文件的路径(.sql)

还原格式:mysql 中的命令,需要登录后才可以操作

USE 数据库;
SOURCE 导入文件的路径;

导出结果:数据库中的所有表和数据都会导出成 SQL 语句

还原操作

即把保存的MySQL文件重新导入

  1. 删除 数据库中的所有表

  2. 登录 MySQL

  3. 选中数据库

  4. 使用 SOURCE 命令还原数据

  5. 查看还原结果

数据库表的约束

约束种类

约束名约束关键字
主键(唯一且非空)primary key
唯一unique
非空not full
外键foreign key
检查约束check 注:mysql不支持

主键约束

主键是用来唯一标识数据库中的每一条记录,所以通常不用业务字段作为主键,单独给每张表设计一个 id 的字段,把 id 作为主键。主键是给数据库和程序使用的,不是给最终的客户使用的。所以主键有没有含义没有关系,只要不重复,非空就行。

创建主键方式:

-- 在创建表的时候给字段添加主键
字段名 字段类型 PRIMARY KEY

-- 在已有表中添加主键
ALTER TABLE 表名 ADD PRIMARY KEY(字段名);

-- 删除表中已有的主键
alter table b表名 drop primary key;

-- 主键自增
-- AUTO_INCREMENT 表示自动增长(字段类型必须是整数类型),默认地 AUTO_INCREMENT 的开始值是 1
CREATE TABLE 表名(
列名 int primary key AUTO_INCREMENT
) AUTO_INCREMENT=起始值;

-- 创建好以后修改起始值
ALTER TABLE 表名 AUTO_INCREMENT=起始值;
DELETE 和 TRUNCATE 对自增长的影响
  • DELETE:删除所有的记录之后,自增长没有影响。
  • TRUNCATE:删除以后,自增长又重新开始。

唯一约束

-- 唯一约束的基本格式
字段名 字段类型 UNIQUE

null 没有数据,不存在重复的问题

非空约束

-- 非空约束的基本语法格式
字段名 字段类型 NOT NULL

默认值

字段名 字段类型 DEFAULT 默认值

如果一个字段设置了非空与唯一约束,该字段与主键的区别?

  1. 主键数在一个表中,只能有一个。不能出现多个主键。主键可以单列,也可以是多列(复合主键)。

  2. 自增长只能用在主键上。

外键约束

单表的缺点:

  1. 数据冗余
  2. 后期还会出现增删改的问题

什么是外键:在从表中与主表主键对应的那一列,

主表: 一方,用来约束别人的表

从表: 多方,被别人约束的表

创建约束

-- 新建表时增加外键:
[CONSTRAINT] [外键约束名称] FOREIGN KEY(外键字段名) REFERENCES 主表名(主键字段名)

-- 已有表增加外键:
ALTER TABLE 从表 ADD [CONSTRAINT] [外键约束名称] FOREIGN KEY (外键字段名) REFERENCES 主表(主键字段名);

删除外键

ALTER TABLE 从表 drop foreign key 外键名称;

外键的级联问题

如果要删除或修改已被从表使用的主表的内容时,不可直接操作,需引入级联操作。

级联操作语法描述
ON UPDATE CASCADE级联更新,只能是创建表的时候创建级联关系。更新主表中的主键,从表中的外键列也自动同步更新
ON DELETE CASCADE级联删除,同时删除从表对应的内容

数据库表的约束小结

约束名关键字说明
主键primary key1. 唯一
2. 非空
默认default如果一列没有值,使用默认值
非空not null这一列必须有值
唯一unique这一列不能有重复值
外键foreign key主表中主键列,在从表中外键列

表与表的关系

表与表之间的三种关系
一对多:最常用的关系 部门和员工
多对多:学生选课表 和 学生表, 一门课程可以有多个学生选择,一个学生选择多门课程
一对一:相对使用比较少。员工表 简历表, 公民表 护照表

一对多

一对多(1:n) 例如:班级和学生,部门和员工,客户和订单,分类和商品

一对多建表原则: 在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键

多对多

多对多(m:n) 例如:老师和学生,学生和课程,用户和角色

多对多关系建表原则:需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向各自一方的主键。

一对一

一对一(1:1) 在实际的开发中应用不多.因为一对一可以创建成一张表。

一对一建表原则说明
外键唯一主表的主键和从表的外键(唯一),形成主外键关系,外键唯一 UNIQUE
外键是主键主表的主键和从表的主键,形成主外键关系

表与表的关系小结

表和表的关系关系的维护
一对多主外键的关系
多对多中间表,两个一对多
一对一1) 特殊一对多,从表中的外键设置为唯一
2) 从表中的主键又是外键

数据库设计

目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。

满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了。

1NF(原子性)

数据库表的每一列都是不可分割的原子数据项,不能是集合、数组等非原子数据项。即表中的某个列有多个值时,必须拆分为不同的列。简而言之,第一范式每一列不可再拆分,称为原子性。

2NF(完全依赖于主键)

在满足第一范式的前提下,表中的每一个字段都完全依赖于主键。

所谓完全依赖是指不能存在仅依赖主键一部分的列。简而言之,第二范式就是在第一范式的基础上所有列完全依赖于主键列。当存在一个复合主键包含多个主键列的时候,才会发生不符合第二范式的情况。比如有一个主键有两个列,不能存在这样的属性,它只依赖于其中一个列,这就是不符合第二范式。

第二范式的特点:

  1. 一张表只描述一件事情。

  2. 表中的每一列都完全依赖于主键

3NF(直接依赖于主键)

在满足第二范式的前提下,表中的每一列都直接依赖于主键,而不是通过其它的列来间接依赖于主键。

简而言之,第三范式就是所有列不依赖于其它非主键列,也就是在满足 2NF 的基础上,任何非主列不得传递依赖于主键。所谓传递依赖,指的是如果存在"A → B → C"的决定关系,则 C 传递依赖于 A。因此,满足第三范式的数据库表应该不存在如下依赖关系:主键列 → 非主键列 x → 非主键列 y

三大范式小结

范式特点
1NF原子性:表中每列不可再拆分。
2NF不产生局部依赖,一张表只描述一件事情
3NF不产生传递依赖,表中每一列都直接依赖于主键。而不是通过其它列间接依赖于主键。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值