MySQL--范式

第一范式:数据库表中的所有字段都是单一属性,不可再分的。
第二范式:数据库的表中不存在非关键字段对任一候选关键字段的部分函数依赖。
在这里插入图片描述
第三范式:如果数据表中不存在非关键字字段,对任意候选关键字字段的传递函数依赖则符合第三范式。
BC范式:在第三范式的基础之上,数据库表中如果不存在任何字段对任一候选关键字段的传递函数依赖则符合BC范式。

字段大小:
在这里插入图片描述

在对数据进行比较操作时,同样的数据,字符处理往往比数字处理慢。
列的长度越小,利于性能提升。
Char与Varchar
如果列中要存储的数据长度差不多是一致的,则应该考虑用char,否则应该考虑用varchar。
如果列中的最大数据长度小于50Byte,则一般也考虑用char。大于50就用Varchar。

Float和Decimal
Decimal用于存储精确数据,而float只能用于存储非精确数据,故精确数据只能选择用decimal类型。
由于float的存储空间开销一般比decimal小,故非精确数据优先选择float类型。
反范式化:是针对范式化而言的,在前面介绍了数据库设计的第三范式,所谓的反范式化就是为了性能和读取效率的考虑而适当的对第三范式的要求进行违反,而允许存在少量的数据冗余。反范式化就是使用空间来换取时间。
1 减少了表的关联数量。
2 增加数据的读取效率。
3 反范式化一定要适度。

表的垂直拆分
控制表的宽度。
1 经常一起查询的列放到一起。
Text,blob等大字段拆分到附加表中。

表的水平拆分
为了控制表的大小可以进行表的水平拆分。

猜你喜欢

转载自blog.csdn.net/BtWangZhi/article/details/87870600