机房收费系统重构——数据库设计

        终于,走到了机房收费系统重构的阶段……

        之前的一遍机房收费系统的数据库是用的给的那个,只是把每个表都看了一下,当时也没有学习数据库原理那本书,然后就没有深究……

        现在不一样了,我们进行机房收费系统重构,况且学习了数据库原理这本书,对数据库有了更深的认识。所以对于数据库要好好的设计,按照步骤走……

 

        数据库技术是信息资源管理最有效地手段。数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,有效存储数据,满足用户信息要求和处理要求。

数据库的设计的步骤和各阶段的主要内容如下:

机房收费系统重构——数据库设计_第1张图片


        在逻辑设计阶段要注意

       将E-R图转换为关系模型实际上就是要将实体、实体的属性和实体之间的联系转化为关系模式,这种转换一般遵循如下原则:

     (1)一个实体型转换为一个关系模式。实体的属性就是关系的属性。实体的码就是关系的码。

     (2)一个m:n联系转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性。                  而关系的码为各实体码的组合。

     (3)一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。

     (4)一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。

     (5)三个或三个以上实体间的一个多元联系转换为一个关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性。而关系的码为各实体码的组合。 

     (6)同一实体集的实体间的联系,即自联系,也可按上述1:1、1:n和m:n三种情况分别处理。

     (7)具有相同码的关系模式可合并。

     (8)还有就是我们常说的三范式(确定数据依赖。消除冗余的联系):

              第一范式(1NF):关系模式R中每一个原子都是不可分割的原子值。

              第二范式(2NF):关系模式R是1NF,每个非主属性完全依赖于候选键(都可以用来做主键的字段),就是满足第二范式。

              第三范式(3NF):关系模式R是1NF,每个非主属性都不传递依赖于R的候选键。

 

              首先我根据原来的数据库进行了再次设计,将原来臃肿的表有的分开,有的减少东西……画了一个ER图:

机房收费系统重构——数据库设计_第2张图片

 根据ER图设计出了数据库中每个表:

 

用户信息表(User_Info):

 

UsrID

用户名(主键)

Char(10)

Password

密码

Char(10)

Level

级别

Char(10)

UserName

真实姓名

Char(10)

Holder

开户人

Char(10)

 

学生信息表(Student_Info):


StudentID

学号(主键)

Char(10)

StudentName

姓名

Char(10)

Sex

性别

Char(2)

Department

系别

Char(10)

grade

年级

Char(10)

Class

班级

Char(10)

 

卡信息表(card_Info):


CardID

卡号(主键)

Char(10)

studentID

学号

Char(10)

Status

使用状态

Bit

Account

余额

Decimal(10,4)

Type

卡类型

Char(10)

registDate

注册日期

Date

registTime

注册时间

Time

checkstatus

结账状态

Bit

UserID

用户名

Char(10)

 

由于学生和卡是两个不同的实体,所以将它们有关的信息分开记录,防止数据冗余,防止表的臃肿。

 

充值记录表(Recharge):


cardID

卡号

Char(10)

rechargeMoney

充值金额

Decimal(10,4)

RechargeDate

充值日期

Date

RechargeTime

充值时间

Time

userID

用户名

Char(10)

checkstatus

结账状态

Bit

 

退卡记录表(Cancelcard):


cardID

卡号

Char(10)

returnMoney

退还金额

Decimal(10,4)

CancelcardDate

退卡日期

Date

CancelcardTime

退卡时间

Time

UserID

用户名

Char(10)

checkstatus

结账状态

Bit

 

上下机记录表(OnOffLineRecord):


cardID

卡号

Char(10)

OnDate

上机日期

Date

Ontime

上机时间

Time

OffDate

下机日期

Date

Offtime

下机时间

Time

OffWay

下机方式

Char(10)

ConsumeMoney

消费金额

Decimal(10,4)

ConsumeTime

消费时间

Time

UserID

用户名

Char(10)

checkstatus

结账状态

Bit

Computer

机器名

Char(10)

 

基本数据表(BasicData):


Leasttime

至少上机时间

Time

Unittime

单位递增时间

Time

Rate

固定每小时费用

Decimal(10,4)

Tmprate

临时每小时费用

Decimal(10,4)

Limitcash

最少金额

Decimal(10,4)

date

日期

Date

Time

时间

Time

UserID

用户名

Char(10)

 

账单(check):


LastcardMoney

上期充值卡金额

Decimal(10,4)

CurrentrechargeMoney

本期充值卡金额

Decimal(10,4)

CurrentcancelcardMoney

本期退卡金额

Decimal(10,4)

CurrentconsumeMoney

本期消费金额

Decimal(10,4)

CurrentcardMoney

本期充值卡金额

Decimal(10,4)

Date

日期

Date

Time

时间

Time

UserId

用户名

Char(10)

 

工作记录表(workLog):


UserID

用户名

Char(10)

Ondate

登录日期

Date

Ontime

登录时间

Time

Offdate

注销日期

Date

Offtime

注销时间

Time

Status

状态

Bit

Computer

机器名

Char(10)

 

总结:数据库设计是很重要的一件事,但是我们不可能一次就将自己的数据库设计的完美,每次都严格按照规则走,只有实践的多了才能慢慢的设计出好的数据库。

你可能感兴趣的:(机房收费系统重构——数据库设计)