一、数据库的三大范式
三大范式只是一般设计数据库的基本理念,可以建立冗余较小、结构合理的数据库。如果有特殊情况,当然要特殊对待,数据库设计最重要的是看需求跟性能,需求>性能>表结构。所以不能一味的去追求范式建立数据库。
什么是范式:数据库设计对数据的存储性能,还有开发人员对数据的操作都有莫大的关系。所以建立科学的、规范的的数据库,是需要满足一些规范来优化数据存储方式。在关系型数据库中这些规范就可以称为范式。
数据库的三大范式可谓是:实体、属性、关系。
- 实体:表
- 属性:表中的数据(字段)
- 关系:表与表之间的关系
第一范式(1NF):数据表中的每一列(每个字段)必须是不可拆分的最小单元,也就是确保每一列的原子性;
第二范式(2NF):满足1NF后,要求表中的所有列,都必须依赖于主键,而不能有任何一列与主键没有关系,也就是说一个表只描述一件事情;
第三范式(3NF):必须先满足第二范式(2NF),要求:表中的每一列只与主键直接相关而不是间接相关,(表中的每一列只能依赖于主键)
错误事例:关键字段 → 非关键字段x → 非关键字段y
正确实例:关键字段 → 非关键字段x
关键字段 → 非关键字段y
二、数据库五大约束
1、primary key 设置主键约束;
2、UNIQUE 设置唯一性约束,不能有重复值;
3、DEFAULT 默认值约束;
4、NOT NULL 设置非空约束,该字段不能为空;
5、FOREIGN key 设置外键约束。
【主键】
1.主键的注意事项?
主键默认非空,默认唯一性约束,只有主键才能设置自动增长,自动增长一定是主键,主键不一定自动增长;
2.设置主键的方式?
在定义列时设置:ID INT PRIMARY KEY
在列定义完之后设置:primary KEY(id)
【避免操作异常和数据冗余】