本数据库的设计是以操作者上机记录表为中心展开的。操作者登录系统,相应的上机记录表中会写入一些数据,操作者登录系统之后才可以对操作者信息表做各种操作,才可以对用户信息表做各种操作,才可以对卡信息表做各种操作,才可以对收费标准信息表做各种操作。
注:实现不真删除操作者表中信息;一个操作者可以有多条上机记录,一条上机记录可以进行多类多操作的事件;操作者为操作者信息表中信息,被操作者也为操作者表中的信息;每张表都有自己的编号,像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 |
被操作者当前是否登录;是否删除 |
注:
(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 |
收费的单位时间(分) |
注:
字段名(列名) |
字段类型 |
约束控制 |
字段含义说明 |
DaySum_Date |
Date |
Primary key |
今天的日期 |
Operator_Login_ID |
Int |
Foreign key |
操作者登录记录中的ID;主外键表为Operator_Login_Record |
DaySum_LoginNO |
Int |
not null |
今天上机的总人数 |
DaySum_RegisterNO |
Int |
not null |
今天注册的总人数 |
DaySum_ReturnNO |
Int |
Not null |
今天退卡的总人数 |
DaySum_ReturnMoney |
Real |
not null |
今天退卡的总金额 |
DaySum_RechargeMoney |
Real |
Not null |
今天充值的总金额 |
DaySum_MakeMoney |
Real |
Not null |
今天总共获利金额 |
之前发表了一篇机房收费系统的数据库设计,但是,那个相当的失败,这个的设计是自己第三遍的设计结果,这一次的设计比较使自己满意,自己可以Hold住它。