MySQL优化(三) 表的设计

1、什么样的表才符合3范式(3 NF)?

表的范式,是首先符合1范式,才能满足2范式,进一步才能满足3范式;(现在最高级别是6范式)

第一范式:1NF 是对属性的原子性约束,要求表的属性(列)具有原子性,不可再分解;(只要是关系型数据库[mysql/oracle/db2/sql server/sysbase等]都满足1NF)

第二范式:2NF 是对记录的唯一性约束,即表中的记录是唯一的,通过给表设置一个主键(不包含业务逻辑,一般是自增的);

第三范式:3NF 是表中不包含冗余数据,就是说表的信息能被推导出来,就不应该单独的设计一个字段来存放;比如下面的设计就不满足 3NF:

有时候设计表会反三范式,来提高效率;在表的1 对 N 的情况下,为了提高效率,可能会在 1 这边表中增加冗余字段。例子如下:

统计学生参加哪些单位的活动

原文地址:https://www.cnblogs.com/yufeng218/p/10023976.html