范式设计
- 列不可分
- 不能传递其他依赖
- 依赖主键
反范式设计
约定大于规定
主键选择
自然主键
- 事务属性中自然唯一标识
代理主键
- 与业务无关,无意义的数字
- 推荐使用,不与业务耦合,维护成本低
- 减少需求源码量
字符集选择
- utf8,只能存储两个字节的汉字
- 所以需要设置成utf8mb4
- 纯拉丁字符,选择latin1
存储引擎的选择
InnoDB
- 表锁,行锁
- 事务
- 外键
- 5.6以后支持全文索引
MyISAM
- 表锁
- 全文索引
Memory
不能持久化
适当的数据冗余
被频繁引用且只能通过Join2张大表的方式才能得到的独立小字段
每次join仅仅为了取得某个小字段,join到的记录大,会造成大量io
空间换时间来优化
冗余字段需要同步更新
适当拆分
垂直拆分
拆分字段
水平拆分
拆分行数据