【sql server】数据库设计<机房重构>

前言

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

项目规划

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


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


        这其中,能生成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

物理设计

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

学生



上下机记录


退卡记录


充值记录


用户


值班教师


工作记录


账单


基础数据


总结

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

对于字段类型的分配,可以参考下一个博客:数据类型

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值