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