数据库表的常见设计规则总结

数据库表的常见设计规则总结

2023年7月27日发(作者:)

数据库表的常见设计规则总结前⾔:数据库设计在平时的⼯作是必不可少的,良好的表设计可以让我们查询效率更⾼,加快⽹站访问速度,提升⽤户体验,并且⽅便于我们查询数据。本篇博客就来聚焦⼀下,如何设计出⾼可复⽤,优良的表结构,从⽽在实际的⼯作中使我们写出更好的代码。数据库表设计的⼏条黄⾦准则:⼀:字段的原⼦性解释:保证每列的原⼦性,不可分解,意思表达要清楚,不能含糊,⾼度概括字段的含义,能⽤⼀个字段表达清楚的绝不使⽤第⼆个字段,必须要使⽤两个字段表达清楚的绝不能使⽤⼀个字段⼆:主键设计解释:主键不要与业务逻辑有所关联,最好是毫⽆意义的⼀串独⽴不重复的数字,常见的⽐如UUID或者将主键设置为Auto_increment;三:字段使⽤次数解释:对于频繁修改的字段(⼀般是指状态类字段)最好⽤独⽴的数字或者单个字母去表⽰,不⽤使⽤汉字或长字符的英⽂四:字段长度解释:建表的时候,字段长度尽量要⽐实际业务的字段⼤3-5个字段左右(考虑到合理性和伸缩性),最好是2的n次⽅幂值。不能建⽐实际业务太⼤的字段长度(⽐如订单id如果考虑要业务增长的话,⼀定要使⽤Long型,对应的数据库的数据类型是bigint),这是因为如果字段长度过⼤,在进⾏查询的时候索引在B-Tree树上遍历会越耗费时间,从⽽查询的时间会越久;但是绝对不能建⼩,否则mysql数据会报错,程序会抛出异常;五:关于外键解释:尽量不要建⽴外键,保证每个表的独⽴性。如果⾮得保持⼀定的关系,最好是通过id进⾏关联六:动静分离解释:最好做好静态表和动态表的分离。这⾥解释⼀下静态表和动态表的含义,静态表:存储着⼀些固定不变的资源,⽐如城市/地区名/国家(静态表⼀定要使⽤缓存)。动态表:⼀些频繁修改的表七:关于code值解释:使⽤数字码或者字母去代替实际的名字,也就是尽量把name转换为code,因为name可能会变(万⼀变化就会查询处多条数据,从⽽抛出错误),但是code⼀般是不会变化的.另⼀⽅⾯,code值存储的字符较少,也能减少数据库的存储空间的压⼒⼋:关于Null值解释:尽量不要有null值,有null值的话,数据库在进⾏索引的时候查询的时间更久,从⽽浪费更多的时间!可以在建表的时候设置⼀个默认值!九:关于引擎的选择解释:关于引擎的选择,innodb与myisam,myisam的实际查询速度要⽐innodb快,因为它不扫⾯全表,但是myisam不⽀持事务,没办法保证数据的Acid。选择哪个这就要看⾃⼰对于效率和数据稳定性⽅⾯的实际业务的取舍了⼗:资源存储解释:数据库不要存储任何资源⽂件,⽐如照⽚/视频/⽹站等,可以⽤⽂件路径/外链⽤来代替,这样可以在程序中通过路径,链接等来进⾏索引⼗⼀:与主键相关解释:根据数据库设计三⼤范式,尽量保证列数据和主键直接相关⽽不是间接相关⼗⼆:关系映射解释:多对⼀或者⼀对多的关系,关联⼀张表最好通过id去建⽴关系,⽽不是去做重复数据,这样做最⼤的好处就是中间的关系表⽐较清楚明⽩。⼗三:预留字段解释:在设计⼀张表的时候应该预制⼀个空⽩字段,⽤于以后的扩展,因为你也不是确定这张表以后不会扩展。⼗四:留下单⼀字段确定是否可⽤解释:通过⼀个单⼀字段去控制表是否可⽤,⽐如通常起名为isVaild,预制的含义为0为有效,1为⽆效,这样便于以后我们去剔除数据或者重整数据,使其成为boolean性质的数据 更加便于我们去操控。⼗五:删除字段解释:数据库是禁⽌使⽤delete命令的,⼀般都不会真正删除数据,都是采⽤改状态的⽅式,设置state字段,通过修改状态赋予它是否有效的逻辑含义!总结:本篇博⽂主要介绍了关于数据库设计的⼏条准则,如何设计出⾼可复⽤的数据库和条例清晰的数据库表是我们⼀直要关注的话题,在实际的开发中,谨遵以上的准则,起码保证⾃⼰的表设计出来的标准性,将会⼤⼤提升我们的⼯作效率。

发布者:admin,转转请注明出处:http://www.yc00.com/web/1690432989a349127.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信