数据库设计总结(面试官都馋哭了)
前言
简单粗暴,我的爱好
一、合理设置字段
在设计表是有个原则,在保证业务的基础上让字段尽可能小,能用INT就别用BIGINT,因为mysql的innoDB引擎索引结构是B+树,它的非叶子节点保存的是索引和指针,节点容量是固定的(16k),指针大小也是固定的(6字节),所以索引占用字节越少,就能让b+树的节点保存更多元素;
还有就是字段尽量设置成NOT NULL,这样mysql在检索数据的时候就会少做NULL判断,从而更好地发挥索引效果。
二、合理设计表结构
其实就是三范式:
第一范式:属性(字段)的原子性约束,要求属性具有原子性,不可再分割;
比如个人信息,个人信息不能作为一个字段,它可以再分为name、age、sex等;
第二范式:记录的惟一性约束,要求记录有惟一标识,每条记录需要有一个属性来做为实体的唯一标识;
第三范式:字段冗余性的约束,即任何字段不能由其他字段派生出来;主键没有直接关系的数据列必须消除,消除的办法就是再创建一个表来存放他们,当然外键除外;
当然,三范式只是一个规范,实际生产中不一定必须遵循
比如公司资产清点表:名称、单价、数量、总价;
这是违背了第三范式的,因为总价可以通过单价*数量得出
但是像这种结构我们是可以接受的,如果需要直接查询总价,就不用再单独计算,只是多了一个字段而已;
三、合理利用索引
索引虽然能大幅度提升查询效率,但是也有副作用:
1、额外增加索引文件;
2、读虽然快了,但是写会变慢;
注意事项:
索引字段应尽可能的小,尤其是主键;
如果有组合索引,注意最左匹配原则;
针对长字符串型字段,尽量用前缀索引;
如果有二级索引,注意避免回表查询;
文章来源: huangjie.blog.csdn.net,作者:负债程序猿,版权归原作者所有,如需转载,请联系作者。
原文链接:huangjie.blog.csdn.net/article/details/108279779
- 点赞
- 收藏
- 关注作者
评论(0)