数据库设计的三大范式
第一范式: 确保每列保持原子性
即表中的每个字段都是不可分割的最小单元, 如 : 性别,年龄,班级等,
第二范式: 一个表只存一种类型的数据
即表在业务上保持相对的独立, 学生表只存储用户信息, 成绩表只存成绩信息, 将两张表合在一起是非常愚蠢的
第三范式: 确保表中字段都和主键直接相关,
即表中所有的所有字段都与主键相联系,尽量精简表的字段,
反范式: 冗余的思想
三大范式很好的保证了表的独立性, 每张表功能单一, 结构简单, 表之间的关系通过外键维护, 看起来很精妙, 但有时候很不方便, 在做高频率查询的时候, 如果数据量很大,分布在好几张表中, 查询时要将多表关联, sql会非常复杂而且执行效率不高, 例如, 订单查询功能,除了要查询订单信息,还要查询出,地址信息表中的省份名称和用户表中的用户名,电话号码等, 这时sql就要查询三张表, 效率很低, 这时就要考虑冗余的思想, 可以在订单表中添加地址信息表中的几个字段(省份名称,等)和用户表中的几个字段(姓名,电话等),这样在订单表中就可以查询到需要的信息了,
再一张表中添加一些其他表的常用字段, 即冗余的字段, 在开发时可以大大提高效率
另外数据库字段设计的时候 一般情况下一定要有id ,createtime ,updatetime等信息, 以便对业务进行监控,
字段的设计
字段设计的空间在满足需求的情况下尽可能的小, 尽可能使用int代替varchar,因为int类型在建立索引和查询时效率要优于varchar,尽可能有默认值,varchar类型默认为"",int类型默认为0 ;