1. 宽表模式
-
定义:把一个对象的所有属性全存储在表中,如果对象属性越多,那么表的列就越多;
-
宽表模式存在的问题:
1. 数据冗余:表中每一行都存在相同的数据,增加对象占用的空间,如果对数据进行维护,就需要对每一行数据都要进行多次的维护; 2. 更新异常:修改一行中某列的值时,同时修改了多行数据; 3. 删除异常:删除某一数据时不得不删除另一数据; 4. 插入异常:部分数据缺失主键信息而无法写入表中;
2. 宽表模式适用场景
- 不需要关联其他数据的场景;
3. 数据库设计范式
- 第一范式:表中的所有字段都是不可再分的,符合第一范式的表都是标准的二维表;
- 第二范式:表中必须存在主键,并且表中其他非主键必须依赖于这个主键,如果使用的是组合主键,那必须要求表中的其他字段必须依赖这个组合主键,而不能依赖于组合主键的其中一部分,第二范式是在第一范式成立的基础上建立的,所以符合第二范式的表一定是一个标准的二维表;
- 第三范式:表中的非主键字段之间不能互相依赖,非主键字段只能依赖于主键;
4. 反范式化设计
- 表关联越多,查询性能越差;
- 对于经常访问的数据,可以对范式化设计的表进行反范式化设计,对表中数据进行适度的冗余;