1 设计阶段的优化
1.1 表设计
1.1.1 范式化
数据库设计三范式定义:
1. 第一范式:每个字段只包含最小的信息属性。
例如常见的学号:入学年份+班级+编号,是不符合第一范式的,需要将其拆解为:入学年份、班级、编号。
2. 第二范式:(在满足第一范式基础上)模型含有主键,非主键字段依赖主键。
3. 第三范式:(在满足第二范式基础上)模型非主键字段不能相互依赖。
例如订单表,一般来说订单表的主键是订单号。在此表中,字段下单时间、客户ID是符合第二范式的,而客户姓名这个字段就不满足第二范式,应当放入客户表内,组成客户ID客户姓名。
范式化的设计能有效降低数据冗余,更新方便快速,降低了数据不一致的风险。故常见于联机交易型的数据库。
1.1.2 反范式化
有意不符合范式化的设计,常见于反第二第三范式。
符合三范式的设计在降低冗余的同时也带来了问题。如果需要对数据进行加工处理(例如具有订单表、客户表,需要统计某个年龄的客户的订单总金额)的时候,需要不断进行关联操作。当订单数量极为庞大的时候,这个关联操作所需要消耗的资源将会相当巨大,导致查询性