高性能mysql之数据库设计原则

数据库设计的三大范式

第一范式: 确保每列保持原子性

即表中的每个字段都是不可分割的最小单元, 如 : 性别,年龄,班级等, 

第二范式: 一个表只存一种类型的数据

即表在业务上保持相对的独立, 学生表只存储用户信息, 成绩表只存成绩信息, 将两张表合在一起是非常愚蠢的

第三范式: 确保表中字段都和主键直接相关,

即表中所有的所有字段都与主键相联系,尽量精简表的字段,

反范式: 冗余的思想

三大范式很好的保证了表的独立性, 每张表功能单一, 结构简单, 表之间的关系通过外键维护, 看起来很精妙, 但有时候很不方便, 在做高频率查询的时候, 如果数据量很大,分布在好几张表中, 查询时要将多表关联, sql会非常复杂而且执行效率不高, 例如, 订单查询功能,除了要查询订单信息,还要查询出,地址信息表中的省份名称和用户表中的用户名,电话号码等, 这时sql就要查询三张表, 效率很低, 这时就要考虑冗余的思想, 可以在订单表中添加地址信息表中的几个字段(省份名称,等)和用户表中的几个字段(姓名,电话等),这样在订单表中就可以查询到需要的信息了,

再一张表中添加一些其他表的常用字段, 即冗余的字段, 在开发时可以大大提高效率


另外数据库字段设计的时候  一般情况下一定要有id ,createtime ,updatetime等信息, 以便对业务进行监控,

字段的设计

字段设计的空间在满足需求的情况下尽可能的小, 尽可能使用int代替varchar,因为int类型在建立索引和查询时效率要优于varchar,尽可能有默认值,varchar类型默认为"",int类型默认为0 ;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值