之前。当学习编写计算机房收费系统文件。我写 机房收费系统数据库概念设计模型——ER图 这篇文章,如今到了机房收费系统个人版重构阶段,须要再次进行数据库的设计。
能够说。之前的数据库的概念设计给我如今的设计奠定了一定的基础,可是仍然发现自己的设计中有很多不合理而且须要改进的地方。
在这次的数据库设计其中,学习了一些数据库的命名规范,重温了经典的三范式(属性原子化。避免局部依赖。避免传递依赖)。
可是发现,在需求面前,一些分属两张表的字段。为了方便,还是得放到一张表中,不得不破坏三范式。
      如今将自己设计的数据库分享例如以下:(由于自己还没真正进行机房的重构。不知道在实际应用中。这些表是否合理,还请大家提宝贵意见。
)
数据库名ComputerRoomChargeSystem
学生信息表(T_StudentInfo)
| 
 名称  | 
 意义  | 
 类型  | 
| 
 studentID  | 
 学号(主键)  | 
 Char(10)  | 
| 
 studentName  | 
 姓名  | 
 Char(10)  | 
| 
 sex  | 
 性别  | 
 Char(2)  | 
| 
 department  | 
 系别  | 
 Char(20)  | 
| 
 grade  | 
 年级  | 
 Char(10)  | 
| 
 class  | 
 班级  | 
 Char(10)  | 
用户信息表(T_UserInfo)
| 
 名称  | 
 意义  | 
 类型  | 
| 
 UserID  | 
 username(主键)  | 
 Char(10)  | 
| 
 realName  | 
 真实姓名  | 
 Char(10)  | 
| 
 userLevel  | 
 用户级别  | 
 Char(8)  | 
| 
 userPassword  | 
 用户password  | 
 Char(10)  | 
| 
 accountHolder  | 
 开户人  | 
 Char(10)  | 
卡信息(T_CardInfo)
| 
 名称  | 
 意义  | 
 类型  | 
| 
 cardID  | 
 卡号(主键)  | 
 Char(10)  | 
| 
 studentID  | 
 学号(外键)  | 
 Char(10)  | 
| 
 account  | 
 剩余金额  | 
 Decimal(10,4)  | 
| 
 usageState  | 
 使用状态  | 
 Char(6)  | 
| 
 cardType  | 
 卡类型  | 
 Char(8)  | 
| 
 registrationDate  | 
 注冊日期  | 
 Date  | 
| 
 registrationTime  | 
 注冊时间  | 
 Time(0)  | 
| 
 UserID  | 
 username  | 
 Char(10)  | 
| 
 checkStatus  | 
 结账状态  | 
 Bit(1)  | 
账单(T_AccountSheet)
| 
 名称  | 
 意义  | 
 类型  | 
| 
 checkID  | 
 结账编号(主键)  | 
 Decimal(18,0)  | 
| 
 lastCardMoney  | 
 上期充值卡金额  | 
 Decimal(18,4)  | 
| 
 currentChargeMoney  | 
 本期充值金额  | 
 Decimal(18,4)  | 
| 
 currentReturnMoney  | 
 本期退卡金额  | 
 Decimal(18,4)  | 
| 
 currentConsumeMoney  | 
 本期消费金额  | 
 Decimal(18,4)  | 
| 
 currentCardMoney  | 
 本期充值卡金额  | 
 Decimal(18,4)  | 
| 
 checkDate  | 
 结账日期  | 
 Date  | 
| 
 checkTime  | 
 结账时间  | 
 Time(0)  | 
| 
 userID  | 
 username  | 
 Char(10)  | 
账单,我为其设置了一个结账编号,作为主键,我想在真正建表时,能够依照结账编号从大到小排列,由于在打印账单或是日结账, 周结账都是结近期的账单吧。
本期充值卡金额=上期充值卡金额+本期充值金额-本期消费金额-本期退卡金额
充值记录表(T_ChargeRecord)
| 
 名称  | 
 意义  | 
 类型  | 
| 
 cardID  | 
 卡号(外键)  | 
 Char(10)  | 
| 
 chargeDate  | 
 充值日期  | 
 Date  | 
| 
 chargeTime  | 
 充值时间  | 
 Time(0)  | 
| 
 chargeMoney  | 
 充值金额  | 
 Decimal(10,4)  | 
| 
 checkStatus  | 
 结账状态  | 
 Bit(1)  | 
| 
 userID  | 
 username  | 
 Char(10)  | 
退卡记录表(T_ReturnRecord)
| 
 名称  | 
 意义  | 
 类型  | 
| 
 cardID  | 
 卡号(外键)  | 
 Char(10)  | 
| 
 returnDate  | 
 退卡日期  | 
 Date  | 
| 
 returnTime  | 
 退卡时间  | 
 Time(0)  | 
| 
 account  | 
 退卡金额  | 
 Decimal(10,4)  | 
| 
 checkStatus  | 
 结账状态  | 
 Bit(1)  | 
| 
 userID  | 
 username  | 
 Char(10)  | 
上下机记录表(T_OnOffLineRecord)
| 
 名称  | 
 意义  | 
 类型  | 
| 
 cardID  | 
 卡号(外键)  | 
 Char(10)  | 
| 
 onDate  | 
 上机日期  | 
 Date  | 
| 
 onTime  | 
 上机时间  | 
 Time(0)  | 
| 
 offDate  | 
 下机日期  | 
 Date  | 
| 
 offTime  | 
 下机时间  | 
 Time(0)  | 
| 
 offWay  | 
 下机方式  | 
 Char(8)  | 
| 
 consumeMoney  | 
 消费金额  | 
 Decimal(10,4)  | 
| 
 userID  | 
 username  | 
 Char(10)  | 
| 
 checkStatus  | 
 结账状态  | 
 Char(6)  | 
| 
 onFlag  | 
 正在上机标志  | 
 Bit(1)  | 
在这个表中,我添加了结账状态这个字段,由于想到结账时,除了会结购卡数,充值金额,退卡金额。还要结消费金额。
基本数据表(T_BasicData)
| 
 名称  | 
 意义  | 
 类型  | 
| 
 fixedPerCharge  | 
 固定每小时费用  | 
 Decimal(10,4)  | 
| 
 temporaryPerCharge  | 
 暂时每小时费用  | 
 Decimal(10,4)  | 
| 
 increasingUnitTime  | 
 递增单位时间  | 
 SmallInt  | 
| 
 leastTime  | 
 至少上机时间  | 
 SmallInt  | 
| 
 prepareTime  | 
 准备时间  | 
 SmallInt  | 
| 
 minMoney  | 
 最少金额  | 
 Decimal(10,4)  | 
操作员工作记录(T_WorkLog)
| 
 名称  | 
 意义  | 
 类型  | 
| 
 UserID  | 
 username(外键)  | 
 Char(10)  | 
| 
 LoginDate  | 
 登录日期  | 
 Date  | 
| 
 LoginTime  | 
 登录时间  | 
 Time(0)  | 
| 
 ExitDate  | 
 注销日期  | 
 Date  | 
| 
 ExitTime  | 
 注销时间  | 
 Time(0)  | 
| 
 onFlag  | 
 正在上机标志  | 
 Bit(1)  | 
| 
 computerID  | 
 机器名  | 
 Varchar(10)  | 
版权声明:本文博主原创文章,博客,未经同意不得转载。
原文:http://www.cnblogs.com/mengfanrong/p/4822042.html