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

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

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

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

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

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

(2)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何删除苹果X的通讯录_iis配置php

    如何删除苹果X的通讯录_iis配置php一、 隐藏server信息先下载urlrewrite并安装附:Urlrewrite工具下载https://www.iis.net/downloads/microsoft/url-rewrite在网站目录下web.config文件以下位置<system.webServer>里修改<rewrite><outboundRulesrewriteBeforeCache=”true”><rulename=”RemoveServ

    2022年9月29日
    4
  • 学生学籍管理系统_学生学籍管理系统的开发

    学生学籍管理系统_学生学籍管理系统的开发二需求分析2.1系统功能要求设计此系统实现如下系统功能:我们小组所设计的学生学籍管理数据库系统主要分为两大模块层面,一是:学生登录层面,二是:教师登录层面。不同层面根据不同用户的需求所实现的功能不同,这样能够更人性化地贴合个体的使用,最大程度地提升系统的使用及运行效率。所以系统设有两种不同的登录选择,用户根据实际情况自行登录,修改、查询、管理信息。学生层面:(1)

    2022年10月16日
    2
  • CSS加JS实现网页返回顶部功能

    CSS加JS实现网页返回顶部功能最近在设计自己的博客,前端页面在内容很多的时候往下拖动会有滚动条。通常我们都需要一个返回顶部的功能来实现快速来到网页顶部。当然实现方式不止一种,这里我采用的最实用的一种。使用CSS+Jquery方式代码量相对较少,容易理解。实现原理1.我们需要再DOM中添加自己的DIV,里面包含一个a标签,a标签里面包含两个img标签用于存放返回顶部的图片。2.添加必要的CSS样式3.然后…

    2022年7月15日
    15
  • mysql和mongodb的区别是什么_mongodb和mysql的区别是什么?区别详细介绍

    mysql和mongodb的区别是什么_mongodb和mysql的区别是什么?区别详细介绍对于mongodb和mysql你应该都很清楚了吧,那么他们两个之间的区别你知道吗?很多人对于mongodb和mysql的区别都不是很清楚,下面一起来了解一下吧。一、mongodb和mysql的区别有哪些?对于这两者的区别,我们可以从以下的九个方面来谈一下。1、数据库模型mongodb-非关系型;mysql-关系型;2、存储方式mongodb-以类JSON的文档的格式存储;mysql-不同引擎有不同…

    2022年6月23日
    29
  • 键盘 计算机代码,键盘钩子示例[通俗易懂]

    键盘 计算机代码,键盘钩子示例[通俗易懂]#region自定义事件//////Hooksthestart.///publicvoidHook_Start(){//安装键盘钩子if(hHook==0){KeyBoardHookProcedure=newHookProc(KeyBoardHookProc);hHook=SetWindowsHookEx(WH_KEYBOARD_LL,KeyBoardHookPr…

    2022年5月30日
    35
  • 在单调的队列

    在单调的队列

    2022年1月15日
    69

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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