机房重构---为什么要把卡表和学生表分开

2024-08-26 21:38

本文主要是介绍机房重构---为什么要把卡表和学生表分开,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    这次的机房收费数据库在重建的时候时候将之前的Studetn_Info分为了Card_Info和Student_Info,浅显的知道是为了给学生和卡之间解耦合,但是究竟应该在窗体和代码上如何设计才能把种思想体现出来,直到我开始敲“注册学生信息”的时候才有了自己的见解。(欢迎和大家一起交流思想。)

    首先,如图所示:


        这个页面和之前旧版本系统那个页面一样,在编写代码的时候,会发现当单击“存盘”时,对两个表 Student_Info 和 Card_Info中添加记录的时候“学生”和“卡”还是被“捆绑”在一起的,即添加一个新的卡不管是否能够对应多个学神,或者是否已存在学生信息,都是需要重新再写一次学生的相关信息(类似于“系别”、“班级”……),于是回头看自己的数据库关系图如下:


    我想如果界面不改变的话,它更应该对应的是之前学生和卡不分为两张表的情况,而我这次的设计理念应该是:先添加“学生信息”,然后添加“卡信息”,在添加卡信息的时候通过选择或者输入“学号”来实现卡表和学生表之间的对应(Card_Info中StudentNo为外键,建立两张表的联系),这样就实现了“卡表”和“学生表”的解耦和,就像上面数据库关系图中,在添加卡的时候是通过Foreign Key来实现二者的关联。

    先看看相应界面:

    注册学生信息:


    注册卡信息:


   下面具体分析为什么把注册分为“注册学生信息”和“注册卡信息”

  (1)为了更好的在界面和代码中体现了数据库中“卡表”和“学生表”的分离。

    开始没有将其分为两个界面的时候敲注册学生信息的代码很费劲,可以说关系比较乱,对应的主外键理不清,感觉数据库虽然设置成了两张表,但是写起代码来还没有之前一条代码方便,甚至考虑的东西要更多,两张表的耦合更强了。

 

  (2)避免了之前“卡”和“学生”捆绑在一起进行注册的现象,如果一人对应多卡,在添加卡的时候就通过选择学号来绑定学生信息,而不是再次重复的输入。

 

  (3)当退卡的时候,在已经结账的情况下,将卡表中信息备份到“CancelCard”表之后删除“Card_Info”表中对应d的卡信息,同时保留学生表中相应学生信息,再次添加卡或者激活这张卡的时候直接输入之前的学号就实现再次绑定而不是重新输入学生整体的信息。(即学生信息是死的,通过注册、退卡来与其建立联系)

 

    综上所述,注册信息的时候分为两个窗体来注册,注册卡信息对应卡表,注册学生对应学生表,二者通过Card_Info表中Foreign Key搭建桥梁,这样设计很像“桥接模式”中的设计思想,让卡和学生之间更加灵活而不是被绑在一起。

 

    下一篇博客将对“注册、充值、退卡”的思路进行梳理和优化,这样设计的思想在其中的体现会让我的代码逻辑更清晰和简单。

   That is all.


这篇关于机房重构---为什么要把卡表和学生表分开的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1109756

相关文章

华为OD机试真题-学生方阵-2024年OD统一考试(E卷)

题目描述 学校组织活动,将学生排成一个矩形方阵。 请在矩形方阵中找到最大的位置相连的男生数量。这个相连位置在一个直线上,方向可以是水平的,垂直的,成对角线的或者呈反对角线的。 注:学生个数不会超过10000 输入描述 输入的第一行为矩阵的行数和列数, 接下来的 n行为矩阵元素,元素间用""分隔。 输出描述 输出一个整数,表示矩阵中最长的位

家庭和学生用户笔记本电脑配置方案

2.6.1  家庭和学生用户笔记本电脑配置方案   2.6.1  家庭和学生用户笔记本电脑配置方案   普通家庭用户、学生用户主要用于上网、娱乐、学习等,这类用户要求笔记本电脑的各方面 功能比较均衡。在选购此类笔记本电脑时,主要考虑外观设计方面要比较时尚,而且性能上也要 够强,一些大型复杂的软件以及目前的主流游戏都要能够流畅地运行才行。   对于CPU方面,可以考虑目前主流的第二

Mybatis Plus快速重构真批量sql入库操作

Mybatis快速重构真批量sql入库操作 基本思路 重构mybatis默认方法saveBatch和saveOrUpdateBatch的实现 基本步骤 真批量保存实现类InsertBatchMethod真批量更新实现类MysqlInsertOrUpdateBath注册InsertBatchMethod和MysqlInsertOrUpdateBath到EasySqlInjector注册Eas

搭建服务器机房的标准是什么?

企业在进行选择服务器时,可能会将服务器放置公司,但是大多数企业还是会选择服务器租用或托管服务,因为专业的IDC服务商通常能够提供良好的机房环境来进行放置服务器,接下来小编就主要来介绍一下搭建服务器机房的标准都有哪些吧! 首先对于机房的位置选择要保证原理水源、油库和化工厂等危险的场所,并且不应该建设在容易受到水灾和地震等自然灾害影响的地区当中,防止出现不可遏制的情况发生,造成重大的经济损失。

[机缘参悟-222] - 系统的重构源于被动的痛苦、源于主动的精进、源于进化与演进(软件系统、思维方式、亲密关系、企业系统、商业价值链、中国社会、全球)

目录 前言:系统的重构源于被动的痛苦、源于主动的精进、源于进化与演进 一、软件系统的重构 1、重构的定义与目的 2、重构的时机与方法 3、重构的注意事项 4、重构的案例分析 二、大脑思维的重构 1、大脑思维重构的定义 2、大脑思维重构的方法 3、大脑思维重构的挑战与前景 三、认知的重构 1、定义 2、目的 3、方法 四、实例 五、总结 四、婚姻家庭的重构 1、婚

总结如何成为“好”代码——读《重构:改善既有代码的设计》有感

读后感 说是“读后感”,其实并不是看得很仔细,尤其是各种代码例子,我基本上是跳过的。个人觉得,重构这件事上,关键是要能嗅出坏代码,知道什么是好代码,这样目标明确后,重构的手段其实是水到渠成的,唯一要注意的就是书中强调的:要以小步为单位稳打稳扎进行。 我所理解的“好”代码 核心目标 那么如何才是“好”代码?书中的答案是:“人们是否能轻而易举地修改”,而我觉得抽象层级更高的描述是:易于未来的工

springboot学生社团管理系统—计算机毕业设计源码26281

目录 摘要 Abstract 1 绪论 1.1 研究背景 1.2 研究意义 1.3论文结构与章节安排 2 学生社团管理系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据增加流程 2.2.2 数据修改流程 2.2.3 数据删除流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 2.5本章小结 3

家校携手应对开学焦虑,共筑学生心理健康防线

随着新学期的钟声敲响,不少学生尤其是新生,开始感到焦虑。他们或是对课程难度心存畏惧,担心自己无法跟上学习节奏;或是害怕在新环境中无法找到归属感,担心人际关系处理不当。 这种情绪在社交媒体上屡见不鲜,如一位家长在社交平台上的分享,这位就读于寄宿制高中的学生,在首次回家后的周末,向家人吐露了对新环境的不适应和学业的挫败感,这不仅仅是一个个案,而是众多学生共同的心声。 深入剖析开学焦虑的背后,不难发

数据结构 - 二叉树(重构 + 遍历)

写在前面 昨天有同学问到我一题关于重构二叉树的问题(link),做了一下,也做个记录吧! 所谓二叉树的重构,就是给你前序和中序,或者中序和后序,让你还原这棵二叉树. 注意:给出前序和后序是不能唯一确定一棵二叉树的,证明请看这儿.   一.给出前序和中序,重构二叉树 一个递归的过程: 当前结点的value:每一轮根据前序的第一个元素确定当前结点值. 左子树的中序遍历