css3000机房系统数据库,机房收费系统数据库设计

之前,学习编写机房收费系统的文档时,曾写过 机房收费系统数据库概念设计模型ER图 这篇文章,现在到了机房收费系统个人版重构阶段,需要再次进行数据库的设计。可以说,之前的数据库的概念设计给我现在的设计奠定了一定的基础,但是仍然发现自己的设计中有

之前,学习编写机房收费系统的文档时,曾写过 机房收费系统数据库概念设计模型——ER图 这篇文章,现在到了机房收费系统个人版重构阶段,需要再次进行数据库的设计。可以说,之前的数据库的概念设计给我现在的设计奠定了一定的基础,但是仍然发现自己的设计中有许多不合理并且需要改进的地方。

在这次的数据库设计当中,学习了一些数据库的命名规范,重温了经典的三范式(属性原子化,避免局部依赖,避免传递依赖)。但是发现,在需求面前,一些分属两张表的字段,为了方便,还是得放到一张表中,不得不破坏三范式。

现在将自己设计的数据库分享如下:(因为自己还没真正进行机房的重构,不知道在实际应用中,这些表是否合理,还请大家提宝贵意见。

0G95041M-0.gif)

数据库名ComputerRoomChargeSystem

学生信息表(T_StudentInfo)

名称

意义

类型

studentID

学号(主键)

Char(10)

studentName

姓名

Char(10)

sex

性别

Char(2)

department

系别

Char(20)

grade

年级

Char(10)

class

班级

Char(10)

这里,我将学生的信息和卡的信息分成两张表,首先,考虑到它们本身就属于不同的实体,其次,想到如果卡不用 了,就得把卡的信息删除,那么学生信息也得跟着删除(不过,后来想到,卡的信息可以不用删除,可通过标记其状态为“未使用”来区分)。最后,感觉把这么多字段放在一个表中,它看起来实在是太“臃肿”了。

用户信息表(T_UserInfo)

名称

意义

类型

UserID

用户名(主键)

Char(10)

realName

真实姓名

Char(10)

userLevel

用户级别

Char(8)

userPassword

用户密码

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

用户名

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

用户名

Char(10)

账单,我为其设置了一个结账编号,作为主键,我想在真正建表时,可以按照结账编号从大到小排列,因为在打印账单或是日结账, 周结账都是结最近的账单吧。

本期充值卡金额=上期充值卡金额+本期充值金额-本期消费金额-本期退卡金额

充值记录表(T_ChargeRecord)

名称

意义

类型

cardID

卡号(外键)

Char(10)

chargeDate

充值日期

Date

chargeTime

充值时间

Time(0)

chargeMoney

充值金额

Decimal(10,4)

checkStatus

结账状态

Bit(1)

userID

用户名

Char(10)

退卡记录表(T_ReturnRecord)

名称

意义

类型

cardID

卡号(外键)

Char(10)

returnDate

退卡日期

Date

returnTime

退卡时间

Time(0)

account

退卡金额

Decimal(10,4)

checkStatus

结账状态

Bit(1)

userID

用户名

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

用户名

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

用户名(外键)

Char(10)

LoginDate

登录日期

Date

LoginTime

登录时间

Time(0)

ExitDate

注销日期

Date

ExitTime

注销时间

Time(0)

onFlag

正在上机标志

Bit(1)

computerID

机器名

Varchar(10)

小结:自己感觉数据库设计是件很有意思的事情,在画机房重构版的类图时,感觉还得先从数据库设计入手,所以数据库设计还是很重要的啊!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机房收费管理系统 问题描述 结合我校计算机机房的运作模式,设计一种适合的收费管理系统,能够实现相关的人员检索,计时收费,管理汇总等功能模块。 开发环境 采用C或C++实现,VC++6.0 基本要求 主要功能模块: (1) 登录模块 (2) 上机管理模块 说明:上机登记时,余额不足3元或卡处于挂失状态,则拒绝登记。 每位同学的一次上机形成一条记录,每30秒遍历一次上机记录表,对表中所有正上机字段为TRUE的记录的上机用时增加30秒,同时减少上机卡表中的余额。 (3) 上机卡管理模块 (4) 充值挂失模块 (5) 查找统计模块:统计某天上机的总时数、每次上机的平均时数和机房的收入;某学生上机的次数、上机总时数、每次上机平均时间;挂失和查询余额。 参考的数据结构: 上机卡(卡号,姓名,专业班级,余额,状态),状态有:正常和挂失。 上机记录(卡号,上机日期,开始时间,上机用时,正上机,管理号代码) 上机记录表永久保存,用于事后查询和统计。 设计要求 1) 界面友好,输入信息符合逻辑:如上机时间设定在合理的时间范围。 2) 能从实践生活出发,设计合理的功能模块 3) 各类信息的数据结构明晰 4) 可根据自身生活体验添加相关功能模块。 拓展功能要求 鼓励采用Turbo C/C++、MFC等开发工具,实现彩色或图形操作界面。鼓励引入小型数据作为处理数据的来源,拓展知识面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值