【机房重构】——数据库设计

上次发表过一篇数据库设计后来师傅说理解的不正确就搁置了很久才提笔。关于数据库的设计是一个大方面,因为暑假已经用VB6.0敲过机房收费系统了,对于里面的功能结构也比较熟悉,所以对于重建有很大的帮助。


一、机房收费ER图




分析ER图:


实体User和Card之间存在着4种关系:注册、充值、取消、上下机。

实体Card和Student存在属于的关系:每个学生都至多可以有一个卡。

实体User和BasicData之间是唯一确定的关系1:1,记录中字段是唯一对应的。

实体User和WorkLog是1:n关系,每个用户有多个工作记录。

实体User和Account是1:n关系,用户可以进行多次结账操作。


这次和以往表的不同在于

1.增加了卡表T_CardInfo:因为原表是把卡表和学生表混合使用,但是我们在查询过程中大部分是分离开来增删改查的。同时把两个表里的字段进行分离。
2.合并正在工作表T_OnWorkInfo和T_WorkLog表:这两个表基本内容相同,只需要在T_WorkLog中进行改动即可。
同理合并T_OnlineInfo和T_LineInfo表。
3.合并日结账单和周结账单为T_AccountInfo:表里内容完全相同就是查询的时候查询条件不同而已。

因为是小型范围内使用可以把两个表进行合并如果是大型系统就必须分开,否则在查询的时候效率就会降低。


二、数据库字段的建立


T_UserInfo



T_CardInfo



T_StudentInfo



T_RechargeInfo



T_CancelInfo



T_OnOffInfo



T_BasicDataInfo



T_WorkLogInfo



T_AccountInfo



注意:在数据库中设置外键,把两个表联系起来。

三、关系根源


其实我们建立数据库的时候重要的是知道她为什么要建立,要如何在系统中运用,从根本上解决问题。理清关系很重要。
如:UserID之所以要和很多表都建立起来联系是因为我们的每一个注册或是充值的操作都要落实到人,其实也就是钱的问题,如果出了问题找哪个责任人,需要在数据库中体现。
如:Status和IsCheck,从我们开始注册到取消注册期间都是使用状态,一旦真的取消就是不使用状态了,但是IsCheck表示的是在你“使用”期间,一旦上机就是未结账状态,下机就是结账状态,这个和我们在电子阅览室上机是一个道理。

如:我们在Card和User实体之间是m:n的关系,因为一个卡可以多次被不同用户修改状态,“使用”和“未使用”,一个用户当然也可以修改多个卡状态,这个也是经过好久才理清的。


小结:其实网上有很多机房收费的ER图,但是重要的是自己的理解,每个人都有自己的画法,只要可以把自己说服就好了。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 32
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值