机房重构--数据库设计(一)

2024-08-26 21:38
文章标签 设计 数据库 重构 机房

本文主要是介绍机房重构--数据库设计(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       这一次的机房收费系统需要做的详细一点,一步一步按着软件工程的思想去设计系统,这篇文章主要是我对数据库设计过程的总结。

       机房收费系统由于之前有给定的十期师姐的demo,有自己做过一次系统的经验,所以再次做机房的时候难免会受之前的影响,于是我这次的设计是抛开之前的旧观点,从零开始。

     Step1:规划

        规划阶段,虽然没有进行实地的考察,把自己当做开发人员的同时还当做了用户,对于系统的目标:设计一个可以用来实现网吧或图书馆通用的学生上机的系统。

    同时对于旧系统的一些不足做了剖析,需要改进的地方做了标记,比如之前在结账的时候选项卡有一个“临时用户”的选项,其实临时用户的钱就是包含在充值项里的,这次的设计中就可以省略掉这一项,这是个鸡肋项(自己的观点,欢迎交流);旧的系统中数据表student_Info中既包含学生信息又包含卡的信息,将二者捆在一起,难免有些臃肿,这次将其分开,更多的是考虑到卡和学生是两个不同的实体,对实体的操作在调用表的时候更加鲜明。还有就是“收取金额查询”和“充值记录查询”二者之前的关系,通过“结账”功能看出这一点有点“画蛇添足”的意思,该优化。

      Step2:需求分析

        根据面向对象的思想,将系统中实体分为最重要的三类:卡、学生、用户(操作员、管理员、一般用户)然后对各自的实体进行业务分析。

    对学生:查看学生信息(要求组合查询)

            学生信息维护(主要是修改学生信息)

     对用户:修改密码

             增加、删除用户

             基本数据设定

             工作记录查询

             正在值班教师记录查询

     对卡: 注册

            充值-----充值记录查询

            退卡-----退卡记录查询

            上下机-----上机记录查询------上机状态查询

            结账

            账单查询

    这三个实体的提取既可以把整个系统的功能分析出来,从学生、用户、卡这个次序,功能复杂程度越来越大,对于系统功能逻辑的理解在这个阶段先有简单的认识即可。

    其次是对重要功能业务流程图的分析:

    (1)这是用户如何操作系统的一个简单过程分析:

                                     

     

     (2)这是对于卡来说的如何上机的一个简单描述:

                                      

  Step3:概念设计

   (1)进行数据抽象,设计局部概念模型

        系统抽象出的实体有:用户、卡、学生、电脑、账单、工作记录、基本数据

   (2)将局部概念模型综合成全局概念模型


    这张图是整个系统的ER模型图,其间经过和贾丽敏、赵寒、孟浩杰的讨论,得出了这个模型,数据库设计过程中有几点还是不能完全满足ER图的需求,比如M:N的比例设计,有一个在关系模型图中的表现不出来,我觉得抽象的已经很到位了,但是还是稍有问题。

  (3)评审

       这个过程,即消除冲突,找浩杰帮忙评审的。

    Step4:逻辑设计

           由于已经实现了ER图的绘制,这一阶段主要工作即实现关系模型的描绘,在ER图中有7个实体,8个关系(仅对其中的一些进行绘制)绘制结果如下:

用户(ID号码  用户名  密码  级别  注册人  电脑名

学生(学号  姓名  性别  系别  年级  班级  注释  日期  时间  注册人  卡号

卡(卡号  注册金额  类型  余额  结账状态  是否使用  注册人  注册日期  注册时间)

基本数据(会员金额   临时金额  单位时间  准备时间  至少上机时间  限制金额      操作者  日期  时间) 

电脑(电脑名  系统时间  系统日期)

账单(账单编号  上期余额  充卡的钱  消费金额  退卡金额  当前总金额  日期)工作记录(ID号码  上机日期  上机时间  下机日期  下机时间  状态  电脑)

 

充值(卡号  充值金额  充值日期  充值时间  用户名)

退卡(卡号  退卡日期  退卡时间  退卡金额  结账状态  用户名)

上机(卡号  上机日期  上机时间  下机日期  下机时间  用户ID  电脑名  结账状态   使用状态)

 

     这个过程的问题也是最大的,我认为如果对整个系统的功能了解不够透彻,无法在关系模型中全面的体现出各个实体的属性,相应在最终数据表中有些字段也就不明确,不过,这个过程也是一个慢慢修改完善的过程。

      Step5:物理设计

        对于这个阶段,我的认识不是很深刻,希望大家能够给出帮助,我的理解,就是为从关系模型到数据表的准备工作,需要考虑数据类型、长度、数据表的名称、那些记录放在一张表……

    欢迎大家就这个阶段的任务发表自己的看法。

      Step6:数据库实现

         对数据库的实现,仍需要考虑数据库设计的三范式,同时限于篇幅的限制,这一步分在下一篇博客中拿出来主要分析。

 

    这样,我的数据库设计的雏形也就出来了,开始不知道怎么走这个过程,上来就画ER图,显然是不对的,按着软工设计规矩走,我觉得设计出的东西更规范、合理。

 


这篇关于机房重构--数据库设计(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

怎么让1台电脑共享给7人同时流畅设计

在当今的创意设计与数字内容生产领域,图形工作站以其强大的计算能力、专业的图形处理能力和稳定的系统性能,成为了众多设计师、动画师、视频编辑师等创意工作者的必备工具。 设计团队面临资源有限,比如只有一台高性能电脑时,如何高效地让七人同时流畅地进行设计工作,便成为了一个亟待解决的问题。 一、硬件升级与配置 1.高性能处理器(CPU):选择多核、高线程的处理器,例如Intel的至强系列或AMD的Ry

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

深入理解数据库的 4NF:多值依赖与消除数据异常

在数据库设计中, "范式" 是一个常常被提到的重要概念。许多初学者在学习数据库设计时,经常听到第一范式(1NF)、第二范式(2NF)、第三范式(3NF)以及 BCNF(Boyce-Codd范式)。这些范式都旨在通过消除数据冗余和异常来优化数据库结构。然而,当我们谈到 4NF(第四范式)时,事情变得更加复杂。本文将带你深入了解 多值依赖 和 4NF,帮助你在数据库设计中消除更高级别的异常。 什么是

SprinBoot+Vue网络商城海鲜市场的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质创作者,全网30w+

DM8数据库安装后配置

1 前言 在上篇文章中,我们已经成功将库装好。在安装完成后,为了能够更好地满足应用需求和保障系统的安全稳定运行,通常需要进行一些基本的配置。下面是一些常见的配置项: 数据库服务注册:默认包含14个功能模块,将这些模块注册成服务后,可以更好的启动和管理这些功能;基本的实例参数配置:契合应用场景和发挥系统的最大性能;备份:有备无患;… 2 注册实例服务 注册了实例服务后,可以使用系统服务管理,

速了解MySQL 数据库不同存储引擎

快速了解MySQL 数据库不同存储引擎 MySQL 提供了多种存储引擎,每种存储引擎都有其特定的特性和适用场景。了解这些存储引擎的特性,有助于在设计数据库时做出合理的选择。以下是 MySQL 中几种常用存储引擎的详细介绍。 1. InnoDB 特点: 事务支持:InnoDB 是一个支持 ACID(原子性、一致性、隔离性、持久性)事务的存储引擎。行级锁:使用行级锁来提高并发性,减少锁竞争

开源分布式数据库中间件

转自:https://www.csdn.net/article/2015-07-16/2825228 MyCat:开源分布式数据库中间件 为什么需要MyCat? 虽然云计算时代,传统数据库存在着先天性的弊端,但是NoSQL数据库又无法将其替代。如果传统数据易于扩展,可切分,就可以避免单机(单库)的性能缺陷。 MyCat的目标就是:低成本地将现有的单机数据库和应用平滑迁移到“云”端