机房收费系统之前用VB 6.0语言编写过,但是,那次自己设计的数据库很简单,没涉及什么存储过程,视图,触发器,连表和表之间的复杂关系都没有,这次机房收费系统是利用VB.net语言编写的,这个过程正在进行中,这次数据库的设计打算好好弄一弄,下面是这次数据库的简单结构设计。
初设计的时候,把Operate_Record关系变成了具体的删除、注册、修改关系,这样的话两个表的关系表变多了,
而且观察这些表,里面的东西大致一样,所以,就把这几个具体的关系变成了一个Operate_Record关系。
(1)用户基本情况数据表User_Info,结构如下:
字段名(列名) |
字段类型 |
约束控制 |
字段含义说明 |
User_ID |
varchar(20) |
Primary key |
用户号 |
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_Operate_ID |
varchar(20) |
Foreign key |
操作号 |
User_Operate_Type |
varchar(20) |
Not Null |
操作类型 |
注:User_State字段的目的:同一时刻不允许同一用户名登录系统;User_Operate_ID设为外键的主要目的:对User_Info的操作(注册、修改和删除)必须现在User_Operate_Record表中写下记录;User_Operate_type字段的目的:实现操作者对User_Info所做操作有据可寻,也就是说,对于修改(原)和删除的记录,都还在User_Info表中存在。
(2)记录对用户信息表操作的记录表User_Operate_Record,结构如下:
字段名(列名) |
字段类型 |
约束控制 |
字段含义说明 |
User_Operate_ID |
varchar(20) |
primary key |
操作号 |
User_Operator_ID |
varchar(20) |
Foreign key |
操作者号 |
User_Operate_Date |
Date |
Not null |
操作日期 |
User_Operate_Time |
Date |
Not null |
操作时间 |
注:User_Operator_ID设为外键的目的:防止非法用户对User_Info表的操作;对User_info中注册记录寻找,不能通过操作类型来查找,因为,可能该记录已经被修改或删除了,这里需要强调的是,对原记录做修改或删除操作,会在元记录中的操作类型写下相应的操作,所以,这里不能通过操作类型来查找注册记录,但是,我们可以通过时间来查找注册记录信息。
(3)操作者基本情况数据表Operator _Info,结构如下:
字段名(列名) |
字段类型 |
约束控制 |
字段含义说明 |
Operator_ID |
varchar(20) |
primary key |
操作者号 |
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_Operate_ID |
varchar(20) |
Foreign key |
操作号 |
Operator_Operate_Type |
varchar(20) |
Not null |
操作类型 |
(4)记录对操作者信息表操作的记录表Operator_Operate_Record,结构如下:
字段名(列名) |
字段类型 |
约束控制 |
字段含义说明 |
Operator_Operate_ID |
varchar(20) |
primary key |
操作号 |
Operator_Operator_ID |
varchar(20) |
Foreign key |
操作者号 |
Operator_Operate_Date |
Date |
Not null |
操作日期 |
Operator_Operate_Time |
Date |
Not null |
操作时间 |
注:记录操作者对操作者的管理记录。如表(2)注
(5)卡的基本信息表Card_Info,结构如下:
字段名(列名) |
字段类型 |
约束控制 |
字段含义说明 |
Card _ID |
varchar(20) |
primary key |
操作号 |
Card _User_ID |
varchar(20) |
Foreign key |
操作者号 |
Card_Money |
Real |
null |
卡内余额 |
Card_Operate_ID |
varchar(20) |
Foreign key |
操作号 |
Card_Operate_Type |
varchar(20) |
not null |
操作类型 |
(6)记录对卡信息表操作的记录表Card_Operate_Record,结构如下:
字段名(列名) |
字段类型 |
约束控制 |
字段含义说明 |
Card _Operate_ID |
varchar(20) |
primary key |
操作号 |
Card _Operator_ID |
varchar(20) |
Foreign key |
操作者号 |
Card_Operate_Money |
Real |
null |
操作金额 |
Card_Operate_Date |
Date |
Not null |
操作日期 |
Card_Operate_Time |
Date |
Not null |
操作时间 |
注:结合表(2)看,表(5)和表(6)的结合可以充值记录、退卡记录、注册记录、冻结和解冻卡的记录
(7)收费标准信息表BaseCharge_Info,结构如下:
字段名(列名) |
字段类型 |
约束控制 |
字段含义说明 |
BaseCharge_ID |
varchar(20) |
primary key |
编号 |
BaseCharge_Prepare_Time |
Date |
not null |
单位时间 |
BaseCharge_Temporary_Cost |
Real |
Not null |
临时用户收费金额 |
BaseCharge_FixUser_Cost |
Real |
Not null |
固定用户收费金额 |
BaseCharge_Operate_ID |
Varchar(20) |
Foreign key |
操作编号 |
BaseCharge_Operate_Type |
Varchar(20) |
Not null |
操作类型 |
(8)记录对收费标准信息表操作的记录表BaseCharge_Operate_Record,结构如下:
字段名(列名) |
字段类型 |
约束控制 |
字段含义说明 |
BaseCharge_Operate_ID |
varchar(20) |
primary key |
操作号 |
BaseCharge_Operator_ID |
varchar(20) |
Foreign key |
操作者号 |
BaeCharge_Operate_Date |
Date |
Not null |
操作日期 |
BaseCharge_Operate_Time |
Date |
Not null |
操作时间 |
注:只存放修改记录。收费标准信息表只有一条信息有用。
(9)操作者上机记录Operator_Login_Record,结构如下:
字段名(列名) |
字段类型 |
约束控制 |
字段含义说明 |
Operator_ID |
varchar(20) |
primary key |
操作号 |
Operator_Login_Date |
Date |
Not null |
登录日期 |
Operator_Login_Time |
Date |
Not null |
登录时间 |
Operator_Exit_Date |
Date |
Not null |
退出日期 |
Operator_Exit_Time |
Date |
Not null |
退出时间 |
Operator_Machine_ID |
Varchar(20) |
Not null |
计算机名称 |
(10)用户上机记录User_Login_Record,结构如下:
字段名(列名) |
字段类型 |
约束控制 |
字段含义说明 |
User_ID |
varchar(20) |
primary key |
操作号 |
User_Login_Date |
Date |
Not null |
登录日期 |
User_Login_Time |
Date |
Not null |
登录时间 |
User_Exit_Date |
Date |
Not null |
退出日期 |
User_Exit_Time |
Date |
Not null |
退出时间 |
User_Common |
Varchar(20) |
Not null |
计算机名称 |
上面的一些表中没有单独的设置一个总结方面的表,自己想了一下,总结方面的信息可以通过几个数据表得出来,可能执行上有点,不过,正好可以练习一下存储过程。
上面的这些东西,自己花了几天的时间给弄出来的,对于数据库的行为设计估计也得花上一段时间。上面的图是x先在纸上画出来了,然后用Word做出来的,可能你会说,你怎么不用数据库设计方面的工具啊?需要说一下的是,今天上午才通过网络获得相应的信息,下载一个PowerDesigner。安装上了之后,自己不怎么会用,也上网找到了相应的教程,但是,心急着做出上面的那些图和表,于是就用Word先做了,在以后的过程中,自己会尝试着使用电脑上的工具来进行相应的设计。