数据库设计的三大范式:
第一范式:字段不可分,
第二范式:有主键,非主键字段要依赖主键字段只要数据列里面的内容出现重复,就 意味着应该将表拆分,拆分形成的表必须用外键关联起来。
第三范式:非主键字段不能相互依赖,也就是说表中的每一列必须与主键直接相关而 不能间接相关。与主键没有直接关系的数据列必须清除(创建一个表来存放他们)。
数据库的常用模式
https://pan.baidu.com/s/1JARF9oJhYAh152CkJ7MrkA
提取码: y5au
主扩展模式
比如说公司有不同类型的员工,如设计师,程序员,PM等,那么可以先建一个员工表, 这个表存放所有类型的员工都有的属性,如姓名,性别,入职时间等等等,然后在设计 师一个表,程序员一个表,PM一个表,但是这些表都与员工表关联
主从模式
一张表的一条记录对应另一张表的多条记录。也就是一对多 eg:论坛的板块表与帖子表就是这种关系,而帖子表与回复表也是这种关系
名值模式
多对多模式
一本书可以有多个作者,一个作者也可以写多本书,所以书目信息表与作者信息表就是 多对多关系,那么设计时通常是在加入一个关联表,也就是通过3个表来表示这种关系
一些建议
LIKE 很慢, 所以一般情况下,最好使用 full text.
绝不要检索比需求多的数据, 所以不要使用 SELECT * 这样的语句.
如果where中有很多的 OR 条件, 那么使用 UNION将其分拆为多条 select 语句会看 到明显的性能改善.
在插入数据频繁的场景下, 应该删除外键, 在应用层面检查约束就可以了, 因为插入 频繁时,外键会明显降低性能.