解说
本次重构共用到了八个数据库,从原来的很多个减少至了单位数,减少了数据耦合,增大了内聚,因为机房算是个小项目,所以没有用到主外键,默认的每个里面有User。
关系模式:
UserInfo:(UserID,UserName,Password,Level,Head)
Student:(studentNo, studentName, sex, department, grade,
specialty, balance, Head, state, IsChec )
ReCharge: (UserID, RechCash, RechDate, RechTime, Head, State, IsCheck )
LineLog:(UserID, onDatem, offDate, cash, state)
Check:(UserID, ALLCash, RechargeCash, RegisteCash, Head, Date, Time)
CancelCard:(UserID,Head,state,CancelDate)
BasicDate: (Rate,tmprete,LeastCash,UnitTime,Head)
WorkLog:(UserID,LoginDate,LogoutDate,computer,state)
逻辑结构
登录表:
所有的账户都存在这个表里面。
描述 | 名称 | 默认值或绑定 | 数据类型 | 允许Null值 | 长度 |
---|---|---|---|---|---|
账号 | UserID | Varchar | 否 | 10 | |
姓名 | UserName | Varchar | 否 | 10 | |
密码 | PassWord | Varchar | 否 | 10 | |
是否可用 | [Level] | Varchar | 否 | 10 | |
注册人 | Head | Varchar | 否 | 10 |
学生信息表:
如果想查日期,可以去充值里面查询注册。
描述 | 名称 | 默认值或绑定 | 数据类型 | 允许Null值 | 长度 |
---|---|---|---|---|---|
学号 | studentNo | char | 否 | 8 | |
学生姓名 | studentName | char | 否 | ||
性别 | sex | char | 否 | 8 | |
学院 | department | char | 否 | 8 | |
年级 | grade | char | 否 | ||
班级 | specialty | char | 否 | 8 | |
余额 | balance | decimal | 否 | 18 | |
注册人 | Head | char | 否 | 8 | |
是否可用 | state | bit | 否 | ||
是否结账 | IsCheck | char | 否 | 10 |
充值记录表:
充值类型分为:充值和注册
描述 | 名称 | 默认值或绑定 | 数据类型 | 允许Null值 | 长度 |
---|---|---|---|---|---|
账号 | UserID | char | 否 | 10 | |
充值金额 | RechCash | numeric | 否 | 18 | |
充值日期 | RechDate | char | 否 | 10 | |
充值时间 | RechTime | char | 否 | 10 | |
充值人员 | Head | char | 否 | 10 | |
充值类型 | State | nchar | 否 | 10 | |
是否结账 | IsCheck | nchar | 否 | 10 |
退卡表:
是否可用:false,退卡不退钱,一般不退卡,毕业自动清理
描述 | 名称 | 默认值或绑定 | 数据类型 | 允许Null值 | 长度 |
---|---|---|---|---|---|
账号 | USerID | nchar | 否 | 10 | |
操作员 | Head | nchar | 否 | 10 | |
是否可用 | state | bit | 否 | ||
退卡时间 | CancelDate | (getdate()) | smalldatetime | 否 |
上机记录表:
(getdate()) 为自动加载数据库的时间,而非显示的时间。取消了Online表则添加了是否上机。
描述 | 名称 | 默认值或绑定 | 数据类型 | 允许Null值 | 长度 |
---|---|---|---|---|---|
账号 | UserID | char | 否 | 10 | |
上机时间 | onDate | (getdate()) | datetime | 否 | |
下机时间 | offDate | datetime | 否 | ||
上机金额 | cash | deicimal | 否 | 18 | |
是否上机 | state | bit | 否 |
基础设定表:
描述 | 名称 | 默认值或绑定 | 数据类型 | 允许Null值 | 长度 |
---|---|---|---|---|---|
会员 | Rate | deicimal | 否 | 18 | |
非会员 | tmpRate | deicimal | 否 | 18 | |
最少金额 | LeastCash | deicimal | 否 | 18 | |
固定时间 | UnitTime | nchar | 否 | 10 | |
设定人员 | Head | nchar | 否 | 10 |
账单:
日期和时间分开写是为了通过日期的比较显示出来,所以除了结账的其他都可以自动getdate
描述 | 名称 | 默认值或绑定 | 数据类型 | 允许Null值 | 长度 |
---|---|---|---|---|---|
账号 | UserID | nchar | 否 | 10 | |
盈利金额 | ALLCash | deicimal | 否 | 18 | |
充值金额 | Recharge | deicimal | 否 | 18 | |
注册金额 | RegisteCash | deicimal | 否 | 18 | |
结账人 | Head | nchar | 否 | 10 | |
日期 | Date | date | 否 | ||
时间 | Time | time | 否 | 7 |
工作记录表:
描述 | 名称 | 默认值或绑定 | 数据类型 | 允许Null值 | 长度 |
---|---|---|---|---|---|
账号 | UserID | char | 否 | 10 | |
上班时间 | LoginDate | (getdate()) | datetime | 否 | |
下班时间 | LogoutDate | datetime | 否 | ||
工作电脑 | computer | nvarchar | 否 | 50 | |
是否在线 | state | bit | 否 |
char、varchar、nchar、nvarchar区别:
char:固定长度,存储ANSI字符,不足的补英文半角空格。
nchar:固定长度,存储Unicode字符,不足的补英文半角空格。
varchar:可变长度,存储ANSI字符,根据数据长度自动变化(n值为1-8000之间,存储为字节实际长度吗,而不是n,可以输0,比nvarchar更节省时间)
nvarchar:可变长度,存储Unicode字符,长度自动变化(n值介于1-4000之间,字节存储大小是字符的两倍,可以输入0,)
可参考:
https://www.cnblogs.com/14lcj/archive/2012/07/08/2581234.html