机房收费系统数据库设计(一)
概述
本数据库的设计是以操作者上机记录表为中心展开的。操作者登录系统,相应的上机记录表中会写入一些数据,操作者登录系统之后才可以对操作者信息表做各种操作,才可以对用户信息表做各种操作,才可以对卡信息表做各种操作,才可以对收费标准信息表做各种操作。

注:实现不真删除操作者表中信息;一个操作者可以有多条上机记录,一条上机记录可以进行多类多操作的事件;操作者为操作者信息表中信息,被操作者也为操作者表中的信息;每张表都有自己的编号,像1对n的这种关系,没有用n方作为主键。
(1)操作者基本情况数据表Operator _Info,结构如下:
字段名(列名)
字段类型
约束控制
字段含义说明
Operator_ID
varchar(20)
Primary key
操作者的ID
Operator_Key
varchar(20)
not null
密码
Operator_Level
varchar(20)
‘普通操作者’或’操作者’或’管理员’
操作级别
Operator_Name
varchar(20)
Not null
操作者名
Operator_Sex
varchar(20)
Not null
性别
Operator_State
varchar(20)
Not null
操作者当前是否登录;是否删除
注:Operator_State字段既有操作者是否在线的功能,又有是否删除的功能。当回复删除记录时,需要把该字段值由“删除”变为“OFF”。
(2)操作者上机记录Operator_Login_Record,结构如下:
字段名(列名)
字段类型
约束控制
字段含义说明
Operator_Login_ID
Int
Primary key
操作者上机记录ID
Operator_ID
varchar(20)
Foreign key
操作者的ID;主外键表为Operator_Info
Operator_Login_Date
Date
Not null
登录日期
Operator_Login_Time
Time(7)
Not null
登录时间
Operator_Exit_Date
Date
Not null
退出日期
Operator_Exit_Time
Time(7)
Not null
退出时间
Operator_Machine_ID
Varchar(20)
Not null
计算机名称
注:一个用户可以有多条上机记录。
(3)注册操作者记录Operator_Register_Record,结构如下:
字段名(列名)
字段类型
约束控制
字段含义说明
Operator_Register_ID
Int
Primary Key
注册操作的ID
Operator_Login_ID
Int
Foreign Key
操作者登录编号;主外键表:Operator_Login_Record
Operator_User _ID
varchar(20)
Operator Key
记录被注册操作者的ID;主外键表User_ID
Operator_Register_Date
Date
Not null
操作日期
Operator_Register_Time
Time(7)
Not null
操作时间
注:一条上机记录可以进行多次同类操作;先注册到User_ID表后,再写向记录表中写记录信息。
(4)删除操作者记录Operator_Delete_Record,结构如下:
字段名(列名)
字段类型
约束控制
字段含义说明
Operator_Delete _ID
Int
Primary key
删除操作的ID
Operator_Login_ID
Int
Foreign Key
操作者登录编号;主外键表:Operator_Login_Record
Operator_User _ID
varchar(20)
Foreign Key
记录被删除操作者的ID;主外键表为:Operator_Info
Operator_Delete_Date
Date
Not null
操作日期
Operator_Delete_Time
Time(7)
Not null
操作时间
注:
(5)修改操作者的记录信息表Operator_Modify_Record,结构如下:
字段名(列名)
字段类型
约束控制
字段含义说明
Operator_Modify_ID
int
Primary key
修改操作的ID
Operator_Login_ID
Int
Foreign Key
操作者登录编号;主外键表:Operator_Login_Record
Operator_Modify_Before_ID
int
Foreign key
备份操作的ID;主外键表为Operator_Modify_Before
Operator_Modify_Date
Date
Not null
操作日期
Operator_Modify_Time
Time(7)
Not null
操作时间
注:先备份好要修改的操作者的信息后,再进行相应记录的写入。
(6)被修改的操作者的修改之前信息的备份对修改之前的用户信息做记录的表Operator_Modify_Before,结构如下:
字段名(列名)
字段类型
约束控制
字段含义说明
Operator_Modify_Before_ID
int
Primary key
备份操作的ID
Operator_User_ID
varchar(20)
Foreign key
被操作者的ID;主外键表为Operator_Info
Operator_User_Key
varchar(20)
not null
被操作者的密码
Operator_User_Level
varchar(20)
‘普通操作者’或’操作者’或’管理员’
被操作者的级别
Operator_User_Name
varchar(20)
Not null
被操作者的姓名
Operator_User_Sex
varchar(20)
Not null
被操作者的性别
Operator_User_State
varchar(20)
Not null
被操作者当前是否登录;是否删除
注:
操作者对用户操作的过程E-R图

(7)用户基本情况数据表User_Info,结构如下:
字段名(列名)
字段类型
约束控制
字段含义说明
User_ID
varchar(20)
Primary key
用户号。
Card_ID
Varchar(20)
Unique Key
卡ID
User_Key
varchar(20)
not null
密码
User_Type
varchar(20)
‘固定用户’或’临时用户’
用户级别
User_Name
varchar(20)
Not null
用户名
User_Sex
varchar(20)
Not null
性别
User_Major
varchar(20)
Not null
专业
User_State
varchar(20)
Not null
用户当前是否登录,是否删除
User_Common
Varchar(50)
Not null
备注
注:
(8)注册用户记录表User_Register_Record,结构如下:
字段名(列名)
字段类型
约束控制
字段含义说明
User_Register_ID
Int
Primary key
注册操作号
Operator_Login_ID
Int
Foreign key
操作者的ID。主外键表为Operator_Login_Record
User _ID
varchar(20)
Foreign key
注册的用户ID;主外键表为User_Info
User_Register_Date
Date
Not null
操作日期
User_Register_Time
Time(7)
Not null
操作时间
注:先向用户表中写入信息后,在写相应的记录信息。
(9)记录对用户信息表删除的信息做记录的表User_Delete_Record,结构如下:
字段名(列名)
字段类型
约束控制
字段含义说明
User_Delete_ID
Int
Primary Key
删除操作号
Operator_Login_ID
Int
Foreign key
操作者的ID。主外键表为Operator_Login_Record
User _ID
varchar(20)
Foreign key
注册的用户ID;主外键表为User_Info
User_Delete_Date
Date
Not null
操作日期
User_Delete_Time
Time(7)
Not null
操作时间
注:
(10)记录对用户信息表修改的信息做记录的表User_Modify_Record,结构如下:
字段名(列名)
字段类型
约束控制
字段含义说明
User _Modify_ID
int
primary key
注册的用户ID
Operator_Login_ID
Int
Foreign key
操作者的ID。主外键表为Operator_Login_Record
User_Modify_Before_ID
Int
Foreign key
备份用户信息记录;主外键表为User_Modify_Before
User_Modify_Date
Date
Not null
操作日期
User_Modify_Time
Time(7)
Not null
操作时间
注:先备份要修改用户的信息,然后在向修改记录中写入数据。
(11)记录对修改之前的用户信息做记录的表User_Modify_Before,结构如下:
字段名(列名)
字段类型
约束控制
字段含义说明
User_Modify_Before_ID
int
Primary key
修改ID
User_ID
varchar(20)
Foreign key
用户号。主外键表为User_Info
Card_ID
Varchar(20)
Foreign Key
卡ID。
User_Key
varchar(20)
not null
密码
User_Type
varchar(20)
‘固定用户’或’临时用户’
用户级别
User_Name
varchar(20)
Not null
用户名
User_Sex
varchar(20)
Not null
性别
User_Major
varchar(20)
Not null
专业
User_State
varchar(20)
Not null
用户当前是否登录,是否删除
User_Common
Varchar(50)
Not null
备注
注:
(12)用户上机记录User_Login_Record,结构如下:
字段名(列名)
字段类型
约束控制
字段含义说明
User_Login_ID
Int
Primary key
用户登录操作号
User_ID
varchar(20)
Foreign key
用户ID;主外键表为User_Info
Bill_ID
Int
Foreign key
本次账单号;主外键表为Bill
User_Login_Date
Date
Not null
登录日期
User_Login_Time
Time(7)
Not null
登录时间
User_Exit_Date
Date
Not null
退出日期
User_Exit_Time
Time(7)
Not null
退出时间
User_Common
Varchar(20)
Not null
计算机名称
注:
(13)账单表Bill,结构如下:
字段名(列名)
字段类型
约束控制
字段含义说明
Bill_ID
Int
Primary Key
本次账单号
Operator_Login_ID
Int
Foreign key
操作者登录操作号
User_Cost
Real
Not null
本次消费
注:

(14)卡的基本信息表Card_Info,结构如下:
字段名(列名)
字段类型
约束控制
字段含义说明
Card _ID
varchar(20)
primary key
操作号
Card_Money
Real
null
卡内余额
Card_State
varchar(20)
not null
是否删除或冻结等
注:
(15)充值记录Card_Recharge_Record,结构如下:
字段名(列名)
字段类型
约束控制
字段含义说明
Card _Recharge_ID
Int
Primary key
充值号
Operator_Login_ID
Int
Foreign key
操作者登录操作号
Card _ID
varchar(20)
Foreign key
卡号
Card_Recharge_Money
Real
null
充值金额
Card_Recharge_Date
Date
Not null
操作日期
Card_Recharge_Time
Time(7)
Not null
操作时间
注:
(16)退卡记录Card_Return-_Record,结构如下:
字段名(列名)
字段类型
约束控制
字段含义说明
Card _Return_ID
Int
Primary key
退卡编号
Return_Login_ID
Int
Foreign key
操作者登录操作号
Card _ID
varchar(20)
Foreign key
卡号
Card_Return_Money
Real
null
退卡金额
Card_Return_Date
Date
Not null
操作日期
Card_Return_Time
Time(7)
Not null
操作时间

(17)操作者修改收费标准的信息做记录的表BaseCharge_Modify_Record,结构如下:
字段名(列名)
字段类型
约束控制
字段含义说明
BeasCharge_Modify_ID
int
Primary key
修改编号
Operator_Login_ID
Int
Foreign key
操作者的ID。主外键表为Operator_Login_ID
BaseCharge_Modify__Before_ID
int
Foreign key
备份信息编号;主外键表为BaseCharge_Modify_Before
Operator_Modify_Date
Date
Not null
操作日期
Operator_Modify_Time
Time(7)
Not null
操作时间
注:先备份要修改的信息记录,再向修改记录表中写入相应的信息。
(18)被修改的操作者的修改之前信息的备份对修改之前的用户信息做记录的表BaseCharge_Modify_Before,结构如下:
字段名(列名)
字段类型
约束控制
字段含义说明
BaseCharge_Modify__Before_ID
int
primary key
修改编号
BaseCharge_ID
Int
Foreign key
收费标准号
BaseCharge_Prepare_Time
Int
not null
准备时间
BaseCharge_Temporary_Cost
Real
not null
临时用户收费金额
BaseCharge_FixUser_Cost
Real
not null
固定用户收费金额
BaseCharge_UnitTime
Int
not null
收费的单位时间(分)
注:
(19)收费标准信息表BaseCharge_Info,结构如下:
字段名(列名)
字段类型
约束控制
字段含义说明
BaseCharge_ID
Int
Primary
一个标志
BaseCharge_Prepare_Time
Int
not null
准备时间
BaseCharge_Temporary_Cost
Real
not null
临时用户收费金额
BaseCharge_FixUser_Cost
Real
not null
固定用户收费金额
BaseCharge_UnitTime
Int
not null
收费的单位时间(分)
注:
之前发表了一篇机房收费系统的数据库设计,但是,那个相当的失败,这个的设计是自己第三遍的设计结果,这一次的设计比较使自己满意,自己可以Hold住它。