一、系统模块设想


1.系统分析

万事开头难,要做一个系统,首先得分析这一个系统究竟需要什么功能。"机房报修管理系统"需要实现的操作就是:报修人扫面二维码报修电脑—>后台管理员获得报修信息—>管理员回应已收到报修请求—>后台管理人员派人维修—>维修完成后管理员写维修经历并把表单转为历史表单。

2.功能分块

对于上面的操作需求,我们能够做以下功能分块:

  • 管理员模块
    能对于管理员进行管理,能够使用管理员进行后台管理登录。
  • 维修工单模块
    对报修人提供的报修信息进行记录,包括出现的问题,提交时间,维修状态等。
  • 历史工单模块
    和维修工单模块差不多,但是精简了一些不必要的信息,如报修日期;新增管理员对此次维修的备注。
  • 实训室模块
    能够记录实训室电脑数,属于哪一栋实训楼。
  • 实训楼模块
    为实训室提供所属实训楼。

二、数据库设计


讲完了对系统模块的设想后,就需要开始认真设想数据库了,设计数据库需要遵守一个原则,那就是不能有太大的冗余,例如实训室实训楼模块,需要在实训室设计一个字段,用于表示实训室属于哪一栋实训楼,一般来说我们会直接在实训室中新建一个所属实训楼字段building,然后把该实训楼直接填进去。
    这样做确实可行,但是这样做会出现两个问题:一是数据冗余,试想一下,一大堆实训楼A、实训楼B、实训楼C的数据在你的表中重复出现,一旦数据量多了,数据库占用的空间就会很大;二是耦合程度太高了,不利于以后的修改,一旦我实训楼A变成了教学楼A呢?那样需要改动大量数据,显得费时费力。
    所以说我们应该把实训楼实训室分为两个对象,由于实训室属于实训楼,我们能够以外键的形式将两个表连接起来,这样实训室building字段能够用实训楼ID代替,这样依赖减少了数据冗余,毕竟相对于文字来说,数据所占的空间更少;当需要修改实训楼名称的时候质询要修改实训楼表中相关实训楼名称即可,降低了耦合。

1.数据表

(一)管理员表administrator

上面提到我们需要一个管理员模块用于管理及登录,所以我们把管理员单独一个表,以下为设计字段。

  • admin_id(管理员唯一ID)
  • admin_password(管理员密码)
  • admin_name(管理员姓名)
  • admin_phone(管理员手机号)
  • role_id(管理员角色)
  • admin_email(管理员邮箱)

(二)角色表role

由于管理员有两种角色:普通管理员和超级管理员,所以需要建立角色表,以下为设计字段。

  • role_id(角色ID)
  • role_name(角色名称)

(三)维修工单表orders

在设计当初,曾经想过把用户分离出来独立成一个用户表,但是想到用户并不是固定不变的,每次报修人的信息都是不同的,一般只会使用一次用户信息或者根本不需要,如果再设计一个用户表,相当于是绕了一圈,做了无用功,所以用户表直接和工单包合在一起了。

  • order_id(维修工单ID)
  • problem(工单问题)
  • computer_number(损坏的电脑编号)
  • class_id(所属实训室ID)
  • building_id(所属实训楼ID)
  • status(工单状态,0为未受理,1为已受理)
  • submit_time(工单提交时间)
  • images_path(用户上传照片的路径)
  • admin_id(受理工单的管理员编号)
  • user_name(报修人姓名)
  • user_phone(报修人电话)
  • user_email(报修人邮箱)

(四)历史工单complete_order

历史工单的作用是记录历史工单,当管理员完成维修后,就会把维修工单上的部分信息迁移到历史工单中,由于历史工单中没有报修人相关的字段,以保证报修人的隐私问题。

  • order_id(历史工单ID)
  • problem(工单问题)
  • remark(工单备注)
  • admin_id(接手管理员编号)
  • complete_time(完成工单日期)
  • image_path(用户上传图片路径)
  • class_id(所属实训室ID)
  • building_id(所属实训楼ID)
  • computer_number(电脑编号)

(五)实训室class

实训室表用于记录所有实训室信息,如所属实训楼,拥有的电脑数,可用、不可用的电脑数。

  • class_id(实训室ID)
  • class_name(实训室名称)
  • building_id(实训楼ID)
  • computer_total(实训室电脑总数)
  • computer_enable(实训室可用电脑数)
  • computer_disable(实训室不可用电脑数)

(六)实训楼building

实训楼表用于积极记录实训楼所有信息

  • building_id(实训楼ID)
  • building_name(实训楼名称)

2.数据库关系E-R图

到这里,数据库的数据表设计已经完成了,如果您对次篇文章有疑问,可以在文章下方留言,谢谢您的阅读。如对【机房报修管理系统】系列文章有兴趣,可以关注或收藏我的文章,您的支持是我最大的动力,我会尽快推出下一期内容,敬请期待。

【机房报修管理系统】后端篇(一) 设计数据表相关推荐

  1. 【机房报修管理系统】后端篇(九) 在SpringBoot配置非关系型数据库Redis

    原 [机房报修管理系统]后端篇(九) 在SpringBoot配置非关系型数据库Redis 2019年01月10日 14:18:48 CheungChingYin 阅读数:15 一.前情提要 在上一篇文 ...

  2. 数据库篇之[bsp_advertpositions]数据表-BrnShop1.9升级至2.1升级说明(非官方版本)...

    数据库篇之[bsp_advertpositions]数据表 主要描述在数据库方面进行升级(使用前请参照网上商城BrnShop1.9升级至2.1升级说明(非官方版本仅提供技术交流)的使用协议) 主要看下 ...

  3. 关联查询数据重复怎么办_在设计数据表的时候,是一个宽表好,还是多个维度表好?...

    数据仓库每张表的搭建,主要依赖于这个表在整个数据仓库中的作用和相关意义.首先要清楚这个表的存在是为了解决那些问题,什么角色使用,怎么保证使用者尽可能好的体验解决问题. 从以上所提到的角度去看待问题,拆 ...

  4. GameFramework篇:StarForce数据表创建与读取

    GF游戏中静态数据都通过数据表来读取,比如玩家初始生命值,初始蓝量,初始防御力等... 在StarForce就是这里 每一个数据表都要对应一个C#类,这个C#要对应上里面的字段,只有这样才能正确使用里 ...

  5. MySQL 设计数据表时,时间类型 datetime、bigint、timestamp MySQL日期函数

    阅读目录 阐述 数据表 MySQL 调用存储过程实现批量插入数据 sql 查询速率测试 sql 分组速率测试 sql 排序速率测试 结论 MySQL日期函数 1.DATE() 2.TIME() 3.T ...

  6. Spring Boot + Spring Cloud 实现权限管理系统 后端篇(一):Kitty 系统介绍

    在线演示 演示地址:http://139.196.87.48:9002/kitty 用户名:admin 密码:admin 温馨提示: 有在演示环境删除数据的童鞋们,如果可以的话,麻烦动动小指,右键头像 ...

  7. Vue3+nodejs全栈项目(资金管理系统)——后端篇(一)登录、注册

    文章目录 初始化 创建项目 配置跨域 配置解析表单数据的中间件 安装bodyparser 初始化用户路由模块 抽离用户路由模块中的处理函数 登录注册 新建admin表 安装并配置mysql模块 注册 ...

  8. PowerDesigner 设计数据表(笔记)

    本人记忆力有限,时常看过的尝试过的知识忘记,所以记录. 点我下载上图demo 转载于:https://www.cnblogs.com/hclabxing/p/PowerDesigner.html

  9. 高校教室多媒体设备报修管理系统

    摘 要 本论文主要论述了如何使用JAVA语言开发一个高校教室多媒体设备报修管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,SSM框架进行开发.在引言中,作者将论述高校教室多媒 ...

  10. 使用SpringBoot一小时快速搭建一个简单后台管理(后端篇)

    不好意思让大家久等啦,最近也是因为学期末了,事情多了一点,所以更新的比较慢,请大家谅解下~ 好了话不多说,进入今天的教程环节 本次案例一共两篇文章教学: (第一篇):数据表设计,前端框架引入和编写前端 ...

最新文章

  1. 华为交换机同步linux时间服务器,华为s5720s系列交换机同步时间
  2. php图文消息带代码详细注释,微信发送图文消息代码整理
  3. python调用C语言函数(方法)的几种方法
  4. javafx 内存占用_JavaFX:TouchGesture内存泄漏?
  5. python语句join_Python中的join()函数的用法
  6. Delphi 设计模式:《HeadFirst设计模式》Delphi7代码---模板方法模式之CoffeineBeverageWithHook[转]...
  7. Kotlin实现LeetCode算法题之String to Integer (atoi)
  8. eclipse中MAVEN的web项目部署至TOMCAT的步骤
  9. 智能优化算法:材料生成优化算法-附代码
  10. Python爬取抖音APP,竟然只需要十行代码
  11. HBase安装配置及测试
  12. 原生js获取html根元素,JS获取屏幕高度的简单实现代码
  13. 关于瑞昱8763bfr的学习总结(1)
  14. 双非计算机硕士何去何从(2)
  15. Spring基础学习
  16. linux字符串排序文件,Linux awk+uniq+sort 统计文件中某字符串出现次数并排序
  17. 收货地址 - 新增收货地址
  18. QQ “你可能收到一条假消息” ”曾经”是如何实现的?
  19. 霓虹灯(light)
  20. 学会使用Hdlbits网页版Verilog代码仿真验证平台

热门文章

  1. 华为荣耀3C彻底root的方法
  2. Ubuntu下svn回滚到指定版本
  3. matlab仿真step模块讲解,Simulink仿真教程(最好)
  4. HFSS - 半波偶极子天线的设计与仿真
  5. centos检测不到磁盘_linux – Centos 7服务器看不到磁盘阵列磁盘
  6. word 导出编辑ftl_word文档转化成ftl文件
  7. 华为HG8145C获取超级密码
  8. 银行联行号cnasp查询(二)
  9. java.lang.IllegalArgumentException: Can not set xx field xx to jav问题解决
  10. 三合一收款二维码原理以及源码