三范式---BCNF(数据表设计)
1NF<2NF<3NF(要求越来越严)
1NF:所有关系数据表都必须满足的范式,表中的所有属性必须是原子的,不可再分的,表中不能有子表。
2NF:表中的所有非主属性不存在对主码的部分函数依赖(一张表中的两个主属性不能在另一张表中同时出现)
主属性:能唯一确定一行数据的为主属性
非主属性:不能唯一确定一行数据的为非主属性
函数依赖:可以通过一种限制(主码)能唯一找到其属性值
部分函数依赖:主属性不能找到唯一非主属性
所有不满足2范式的都会有数据冗余的问题
数据冗余:数据的大量重复
3NF:表中的所有非主属性不存在对主码的传递函数依赖(非主属性之间确定了唯一关系)
传递函数依赖:主属性能唯一确定一个非主属性A,非主属性A由于某种条件(关系),也唯一确定另一个非主属性B,则主属性也唯一确定非主属性B
如何解决范式不满足:
通过属性分解成子表来升级范式(把不满足的属性提到一个新的表)
BCNF:所有非主属性对每一个候选键都是完全函数依赖; 所有的主属性对每一个不包含它的候选键,也是完全函数依赖;没有任何属性完全函数依赖于非候选键的任何一组属性
Redis:非关系型数据库(内存数据库)用Redis实现缓存,缓存雪崩,缓存失效,缓存击穿
Mysql:磁盘型数据库(在操作系统的磁盘上保存,也就是一个一个的文件)