前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据库设计-简化字典表[通俗易懂]

数据库设计-简化字典表[通俗易懂]

作者头像
全栈程序员站长
发布2022-07-25 09:28:40
2.4K0
发布2022-07-25 09:28:40
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

   在进行数据库设计时,我们经常会遇到各种各样的业务需求,从而设计出各种各样的表。而想要做好一个数据库,不但需要前期对各种业务需求的深度理解,还需要在后期项目完善的过程中对数据库更新修改从而使得数据库设计的越发完美。   对于那些涉及到业务的表或许不太好入手,但项目中经常出现的各种字典表就很好入手了。项目越大那么字典表就少不了,字典表就是常见的类型、状态、单位之类特定的一些值。有些人每一个业务或模块都设计一个字典表用来标识类型或状态等等,这样表的数量就不少了。其实我们可以将一些字典表合并起来,用两个表就能实现多个表的功能。下面我以三个状态表来演示。   下面是三张表的内容,表名分别是Order_Status、Clip_Status、RedPacket_Status

在这里插入图片描述
在这里插入图片描述

  上面三张表的作用分别是:第一张用来处理订单的状态信息,第二张用来处理卡(比如会员卡)的状态信息,第三张用来处理红包的状态信息。根据上面的情况可以明显的看出,第三张表是多余的,完全可以去掉第三张表而利用第二张表的数据也没问题,但是因为业务需要给第三张表的加上其他的状态时,岂不是又要加上这张表,如果加在第二张表呢?也是不行的,如果需要对每个业务模块的字典表进行维护,那第二张表岂不是有两个业务模块与之对应,那样就显得有点不伦不类了。   接下来的这种方法合并的方法就显得更加的灵活转变了。我们可以把每个业务模块假设成一个大类,而业务模块用到的字典表数据就假设成小类。按这个思路就能把多个字典表完成合并了。   下图为表结构:

在这里插入图片描述
在这里插入图片描述

表数据:

在这里插入图片描述
在这里插入图片描述

连表查询结果:

在这里插入图片描述
在这里插入图片描述

有人会说那个卡状态和红包状态不还是有两种一样的值吗?这样还是不够好啊。很简单,在Functional_Describe表中给一样的值加上一个公共区就行了。见下图:

在这里插入图片描述
在这里插入图片描述

总结:很明显这就是一对多的关系,一个业务或模块对应多个状态或类型,这样设计可以省略多个表,扩展性也可以,对于新加入的业务,只需要先在Functional_Describe表中添加它的描述,在去Status表中添加与它对应的字典表数据就行了。只涉及数据的录入而不需要去添加表。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/127084.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月9,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档