您的位置:首页 > 数据库

C#版机房重构——数据库设计

2016-02-01 17:32 239 查看

前言

开始机房重构了,不自己设计一个数据库怎么好意思说自己是在重构机房呢?而且原数据库本身就有很多瑕疵,不符合数据库的规范,今天我们就根据数据库三范式,来设计属于我们自己的一版数据库。

项目规划

本次的数据库是为了服务于我们的机房收费系统,机房收费系统大致的要求是什么呢?看图:



这是我们机房收费系统的主要的功能,这涉及到许多需要存储成表的数据。接下来看能产生表数据的图:



这其中,能生成6个记录表,还有一个用户表,一个账单表,一个卡表,还有一个存储基础数据的表,所以在我的设计中,共用到了10张表。

在之前的原数据库表中,卡和学生是一张表的,接下来我们说,为什么把它们分开了。

概念设计

数据抽象实体:学生、卡、上下机记录、退卡记录、充值记录、用户、值班教师、工作记录、账单、基础数据表。

下面这张图是我的数据库实体联系图,也就是我们常说的ER图:



ER图中没有画属性,在下面的实体设计中会有体现,这张图中,没有M比N的关系,所以生成的表也就是图中所有的实体,共10个。

逻辑设计

学生(学号,姓名,年龄,性别,系别,专业,年级,班级,备注)

T_STUDENTS(StudentNo,StudentName,Age,Sex,Department,Major,Grade,Class,Explain)

卡(卡号,学号,卡名,注册日期,余额,类型,状态)

T_CARDS(CardNo,StudentNo,CardName,RegisterDate,Cash,Type,Status)

上下机记录(卡号,卡名,机器名,上机日期,上机时间,下机日期,下机时间,消费时间,消费金额,状态)

T_ONOFFLINE(CardNo,CardName,Computer,OnDate,OnTime,OffDate,OffTime,ConsumeTime,ConsumeCash,Status)

退卡记录(卡号,卡名,退卡金额,退卡日期,退卡时间,状态,操作者)

T_BACKCARD(CardNo,CardName,BackCash,BackDate,BackTime,Status,Head)

充值记录(卡号,卡名,充值金额,充值日期,充值时间,状态,操作者)

T_RECHARGE(CardNo,CardName,AddMoney,ChargeDate,ChargeTime,status,Head)

用户(用户名,密码,用户级别,状态,开户人)

T_USERS(UserID,PassWord,Level,Status,Head)

值班教师(用户名,机器号,级别,登录日期,登录时间)

T_TEACHER(UserID,Computer,Level,LoginDate,LoginTime)

工作记录(用户名,登录日期,登录时间,退出时间,机器名,状态)

T_WORKLOG(UserID,LoginDate,LoginTime,ExitTime,Computer,Status)

账单(注册金额,充值金额,上机消费金额,退卡金额,盈利,结账日期,结账时间,操作者)

T_CHECK(RegisterCash,RechargeCash,ConsumeCash,BackCash,Profit,CheckDate,CheckTime,Head)

基础数据(固定用户费用,临时用户费用,累加时间,准备时间,最低消费,修改日期,修改时间,操作者)

T_BASICDATA(Rate,TmpRate,UnitTime,PrepareTime,LimitCash,ModiffyDate,ModiffyTime,Head

物理设计

物理设计阶段就是根据字段的类型,分配合理的数据类型。由于比较懒,就贴出数据库的实体图好啦:

学生







上下机记录



退卡记录



充值记录



用户



值班教师



工作记录



账单



基础数据



总结

对于数据库设计,这只是初版,这个版本并不是最终的,因为还有好多可以优化的地方等待我去发现。

对于字段类型的分配,可以参考下一个博客。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: