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

开发工具与关键技术:工具:SQLServer2014ManagementStudio作者:范子超 撰写时间:2019-03-29  在进行数据库设计时,我们经常会遇到各种各样的业务需求,从而设计出各种各样的表。而想要做好一个数据库,不但需要前期对各种业务需求的深度理解,还需要在后期项目完善的过程中对数据库更新修改从而使得数据库设计的越发完美。  对于那些涉及到业务的表或许不太好入…

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

   在进行数据设计时,我们经常会遇到各种各样的业务需求,从而设计出各种各样的表。而想要做好一个数据库,不但需要前期对各种业务需求的深度理解,还需要在后期项目完善的过程中对数据库更新修改从而使得数据库设计的越发完美。
  对于那些涉及到业务的表或许不太好入手,但项目中经常出现的各种字典表就很好入手了。项目越大那么字典表就少不了,字典表就是常见的类型、状态、单位之类特定的一些值。有些人每一个业务或模块都设计一个字典表用来标识类型或状态等等,这样表的数量就不少了。其实我们可以将一些字典表合并起来,用两个表就能实现多个表的功能。下面我以三个状态表来演示。
  下面是三张表的内容,表名分别是Order_Status、Clip_Status、RedPacket_Status
在这里插入图片描述
  上面三张表的作用分别是:第一张用来处理订单的状态信息,第二张用来处理卡(比如会员卡)的状态信息,第三张用来处理红包的状态信息。根据上面的情况可以明显的看出,第三张表是多余的,完全可以去掉第三张表而利用第二张表的数据也没问题,但是因为业务需要给第三张表的加上其他的状态时,岂不是又要加上这张表,如果加在第二张表呢?也是不行的,如果需要对每个业务模块的字典表进行维护,那第二张表岂不是有两个业务模块与之对应,那样就显得有点不伦不类了。
  接下来的这种方法合并的方法就显得更加的灵活转变了。我们可以把每个业务模块假设成一个大类,而业务模块用到的字典表数据就假设成小类。按这个思路就能把多个字典表完成合并了。
  下图为表结构:
在这里插入图片描述
表数据:在这里插入图片描述
连表查询结果:
在这里插入图片描述
有人会说那个卡状态和红包状态不还是有两种一样的值吗?这样还是不够好啊。很简单,在Functional_Describe表中给一样的值加上一个公共区就行了。见下图:
在这里插入图片描述
总结:很明显这就是一对多的关系,一个业务或模块对应多个状态或类型,这样设计可以省略多个表,扩展性也可以,对于新加入的业务,只需要先在Functional_Describe表中添加它的描述,在去Status表中添加与它对应的字典表数据就行了。只涉及数据的录入而不需要去添加表。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(2)


相关推荐

  • 基于pytorch卷积人脸表情识别–毕业设计「建议收藏」

    基于卷积神经网络的人脸表情识别前言毕业设计内容介绍卷积神经网络的设计卷积网络的模型卷积池化过程详细说明第一层卷积池化过程第二层卷积池化过程第三层卷积池化过程全连接层过程模型的训练过程卷积与池化原理模型如何训练模型的评估指标训练结果分析通过训练曲线分析通过混淆矩阵分析效果通过摄像头识别表情设计流程效果演示部分代码展示总结前言这篇文章记录一下我本科毕业设计的内容。我的课题是人脸表情识别,本来最开始按照历届学长的传统是采用MATLAB用传统的机器学习方法来实现分类的。但是鉴于我以前接触过一点点深度学习的内容,

  • navicat15.0.23激活码【注册码】

    navicat15.0.23激活码【注册码】,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • UPX压缩脱壳「建议收藏」

    UPX压缩脱壳「建议收藏」该方法可针对upx变种,但AndroidLinker的时候不需要section表,所以我们不能修复section表进行SO层代码脱壳1.使用IDA打开libexec.so,在导出函数中找到.init_proc函数(0x39A79),搜索特征码7D2700DF搜索到下面语句2.自己编译一个load程序,然后ida附加.刚好到死跳转处,注意…

  • 亚马逊服务器购买_电商平台用什么服务器

    亚马逊服务器购买_电商平台用什么服务器Siteground主机空间怎么样?很多国内的小伙伴可能对siteground主机空间比较陌生,感觉不如bluehost或者Godaddy名气大,实际上siteground在国外是一家非常有名气和实力的美国主机服务商,也是wordpress、Drupal、Jommla这三家知名建站程序一致推荐的主机商。我们蓝鲨网络使用siteground也好多年,最近几年也有非常多的客户选购了他家的主机,这几年使用下来最明显的感觉就是稳定、速度快、客服解决问题的技术水平都比较高。siteground套餐配置区别首先

  • C++ docker_docker部署mysql

    C++ docker_docker部署mysql版权声明:本文为博主原创文章,未经博主允许不得转载。Docker介绍Docker是一个开源的容器引擎,它有助于更快地交付产品。Docker可将应用程序和基础设施层隔离,并且将基础设施当作程序一样进行管理。使用Docker,可以更快地打包,测试以及部署应用程序,并可以缩短从编程到部署运行代码的周期docker部署c/c++程序关于docker的使用网上有很多的教程但是很少有介绍如…

    2022年10月19日
  • c语言结构体数组怎么初始化,c语言结构体数组初始化「建议收藏」

    c语言结构体数组怎么初始化,c语言结构体数组初始化「建议收藏」最近看一段代码有所迷惑,先简单总结一下。有关结构体数组初始化的问题struct_m_usmart_nametabusmart_nametab[]={#ifUSMART_USE_WRFUNS==1//如果使能了读写操作(void*)read_addr,”u32read_addr(u32addr)”,(void*)write_addr,”voidwrite_addr(u32addr,…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号