MySQL Optimization Part 1 - Table Design
目录
表的三范式
表的范式 (NF):首先符合 1NF,才能满足 2NF,进一步才满足 3NF。
1NF:
- 列具有原子性,不可再分割,即列的信息,不能分解。
- 只要是数据库是关系型数据库(mysql/oracle/db2/informix/sysbase/sql server),就自动的满足1NF。
2NF:
- 表中的记录是唯一的, 就满足2NF, 通常我们设计一个主键来实现。
- 主键不含业务逻辑,一般是自增的。
3NF:
- 即表中不要有冗余数据, 就是说,表的信息,如果能够被推导出来,就不应该单独的设计一个字段来存放。
反3NF : 但是,没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。具体做法是: 在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,允许冗余。