机房重构——数据库设计
来源:互联网 发布:卡盟域名是什么 编辑:程序博客网 时间:2024/06/12 22:13
ER图设计
一开始参考了第一次的经验,画出了一个ER图,在现有的数据库的基础上做了两处改动,一是将日结账和周结账表合成一个账单表,因为这两个表的字段是一样的,查询日账单和周账单可以通过日期这个字段筛选得到。二是将原来的学生表拆分成了学生表和卡表。
画是画出来了,但是涉及到了11个表,表的数量合并了一个,又拆分了一个,不增不减。在全局ER模型优化这一步骤需要注意一点就是要消除冗余属性,即在工作表中有用户ID、登录日期、登录时间、机器号这些属性,在工作记录表中全部包含了这几个属性。在线表里的属性和上机记录表里的属性也是重复了,导致了在全局范围内的冗余属性,冗余属性应予消除。第二版ER图出炉~~~
在设计数据库时好几个表都需要记录日期和时间,在上图中也看的出来,一直有疑惑为什么要把日期和时间分开写,也没有深想,猜测可能是方便查询吧。但再后来跟同学交流期间了解到好像VS里是没有Time这个类型的,到后来转换起来也是个问题,相反的,把日期和时间结合起来更方便查询,于是又将ER图做了一番调整。第三版出炉~~~
最终确定了9个表:
基本数据设定表
BasicData
退卡表
CancelCard
账单表
Check_Info
卡表
Card
上机记录表
LineLog
充值表
Recharge
学生表
Student
用户表
User_Info
工作记录表
WorkLog
关系模式:
用户表:(UserID,PWD,Level,UserName,state)
学生表:(studentNo,cardNo,studentName,sex,department,grade,specialty)
卡表:(cardNo,studentNo,Balance,state,regdate,Ischeck)
基础数据表:(serial,Rate,UnitTime,LeastTime,ReadyTime,LeastCash,head)
上机记录表:(serial,cardNo,computer,onDate,offDate,mins,cash)
工作记录表:(serial,UserID,LoginDate,LogoutDate,computer,state)
充值记录表:(serial,cardNo,RechCash,Balance,RechDate,UserID,computer)
退卡表:(serial,cardNo,CancelCash,CancelDate,UserID,computer)
账单:(serial,CheckCash,RechCash,CancelCash,RemainCash,CheckDate,head)
逻辑设计:
1)用户表(User_Info)
描述
字段名
数据类型
长度
是否Null
用户ID
UserID
varchar
20
否
密码
PWD
varchar
20
否
验证等级
Level
varchar
20
否
用户名
UserName
varchar
20
否
状态
state
bit
1
否
2)学生表(Student)
描述
字段名
数据类型
长度
是否Null
学号
studentNo
varchar
20
否
卡号
cardNo
varchar
20
否
姓名
studentName
varchar
20
否
性别
sex
bit
1
否
学院
department
varchar
20
否
年级
grade
char
6
否
专业
specialty
varchar
20
否
3)卡表(Card)
描述
字段名
数据类型
长度
小数
是否Null
卡号
cardNo
varchar
20
否
学号
studentNo
varchar
20
否
余额
Balance
numeric
10
2
操作员
UserIDvarchar 20 否状态
state
bit
1
否
注册时间
regdate
smalldatetime
否
是否结账
Ischeck
bit
1
否
4)基础数据表(BasicData)
描述
字段名
数据类型
长度
小数
是否Null
设定时间
serial
smalldatetime
否
单位费用
Rate
numeric
10
2
否
单位时间
UnitTime
int
否
至少上机时间
LeastTime
int
否
准备时间
ReadyTime
int
否
最小金额
LeastCash
numeric
5
2
否
管理员
head
varchar
20
否
5)上机记录(LineLog)
描述
字段名
数据类型
长度
小数
是否Null
流水号
serial
int
否
卡号
cardNo
varchar
20
否
机器号
computer
varchar
20
否
上机日期
onDate
smallDatetime
否
下机日期
offDate
smallDatetime
是
上机总时长
mins
int
是
消费金额
cash
numeric
10
2
6)工作记录表(WorkLog)
描述
字段名
数据类型
长度
是否Null
流水号
serial
int
否
用户ID
UserID
varchar
20
否
登录日期
LoginDate
smalldatetime
否
注销日期
LogoutDate
smalldatetime
是
机器号
computer
varchar
20
否
状态
state
bit
1
否
7)充值表(ReCharge)
描述
字段号
数据类型
长度
小数
是否Null
流水号
serial
int
否
卡号
cardNo
varchar
20
否
充值金额
RechCash
numeric
10
2
否
当前余额
Balance
numeric
10
2
否
充值时间
RechDate
smalldatetime
否
操作员
UserID
time
否
机器号
computer
varchar
20
否
8)退卡表(CancelCard)
描述
字段名
数据类型
长度
小数
是否Null
流水号
serial
int
否
卡号
cardNo
varchar
20
否
退卡金额
CancelCash
numeric
10
2
否
退卡日期
CancelDate
smalldatetime
否
操作员
UserID
varchar
20
否
机器号
computer
varchar
20
否
9)账单(Check_Info)
描述
字段名
数据类型
长度
小数
是否Null
账单编号
serial
int
否
结账金额
CheckCash
numeric
10
2
否
充值金额
RechCash
numeric
10
2
否
退卡金额
CancelCash
numeric
10
2
否
上次结余
RemainCash
numeric
10
2
否
结账日期
CheckDate
smalldatetime
否
结账人
head
varchar
20
否
结语
这次重构比起上次来要清晰很多,学的时间越久越会发现反反复复就是这些东西,其实这也是生活,太阳总是日出而升日落而降,只是这其中的过程可以千姿百态,找不到方向时,停下了好好想想,然后选择最顺手的去走就好了。
- 【机房重构】——数据库设计
- 【机房重构】——数据库设计
- 机房重构——数据库设计
- 【机房重构】——数据库设计
- 【机房重构】——数据库设计
- 机房重构——数据库设计
- 机房重构—数据库设计
- 重构机房收费系统——数据库设计
- 【机房重构】一步一步往上爬——数据库设计
- 机房收费系统重构——数据库设计
- 【机房重构】——数据库设计前准备
- 重构机房收费系统—数据库设计
- 【重构机房】 设计数据库
- 【机房重构】数据库设计
- 机房重构--数据库设计
- 【机房重构】-数据库设计
- 【机房重构】——报表设计
- 机房重构——数据库
- 字符串的插入
- JSP框架Tiles,好东西。
- 二叉树的遍历
- 泛函编程(16)-泛函状态-Functional State
- AJAX 状态值(readyState)与状态码(status)详解
- 机房重构——数据库设计
- 泛函编程(15)-泛函状态-随意数产生器
- 01背包1001
- Pearls in a Row CodeForces
- poj 1195 Mobile phones
- 泛函编程(14)-try to map them all
- Torch7,Pytorch安装注意点
- 实习第四天:spring注释的用法
- 泛函编程(13)-无穷数据流-Infinite Streamvvv