1、数据库设计流程
2、数据库逻辑设计
2.1、宽表模式
2.1.1、宽表模式存在的问题
- 数据冗余:相同的数据在一个表中出现了多次
- 数据更新异常:修改一行中某列的值,同时修改了多行数据
- 数据插入异常:部分数据缺失主键信息而无法写入表中
-
2.1.2、宽表模式的应用场景
-
2.2、 数据库设计范式
第一范式:原子性:要求属性具有原子性,不可再分解(表中的所有字段都是不可再分的)
- 第二范式:惟一性:记录有惟一标识,即实体的惟一性,即不存在部分依赖
第三范式:冗余性:要求任何字段不能由其他字段派生出来,它要求字段没有冗余,即不存在传递依赖;
2.2.1、范式化的优点
数据表更新快体积小
- 当数据较好的范式化时,就只有很少或者没有重复数据,所以只需要修改更少的数据。
- 范式化的表通常更小,可以更好的放在内存里,所以执行操作会更快。
可以尽量减少数据冗余(很少有多余的数据意味着检索列表数据时更少需要Distinct 或者 GROUP BY 语句)
2.2.2、范式化的缺点
对于查询需要多个表进行关联,导致性能降低
-
2.3、反范式的优点和缺点
2.3.1、反范式的优点
反范式化的schema因为数据都在一张表中,可以很好的减少表的关联
-
2.3.2、反范式的缺点
存在数据冗余及数据维护异常
- 对数据的修改需要更多成本
