机房收费系统——数据库表中隐藏字段的设计

 

机房收费系统——数据库表中隐藏字段的设计

 

       前天,机房收费系统已验收,尽管自己做的时候很认真,经过组长的验收,还是发现了几个问题。

        一是:数据库表的设计中,有的字段名的命名不规范,不能见名知其义,只有自己能看懂的字段命名不是好的命名。

       如下图:T_User表中的Head字段名,它表示的是:该用户是由谁添加的。如果我不解释,别人很难一眼看出该字段表达的是什么意思。

 

 

        二是:数据表中的“隐藏”字段没有发现。

        我这里说的隐藏字段,其实是一些标识性字段,这些字段依据窗体的界面我们是很难发现的,而是要通过我们对业务的分析,从整体把握系统的角度才能发觉的字段。

       我还以上面的T_User表为例,T_User表中的信息基本来自于“添加用户窗体”(如下图),如,表中的UserID,Password,Level,Username,但是表中还有些这段不能从添加用户窗体中看出来,比如Head字段,还有后面我讲到的Status字段,我把这些字段称为“隐藏”字段。这些隐藏字段在我们建表之初是很难考虑到的,但是它又是必须要有的字段,否则会给我们的程序带来很多的麻烦。比如T_User表中隐藏字段Status虽然与添加用户窗体无很大的关系,但是它与其它的窗体(删除用户窗体,结账窗体)有很大的关系。

      

 

       

        比如我们 在“添加删除用户”窗体中,选中 "用户名=156"的这条记录,点击的“删除”按钮,是否真的从T_User表中删除这条记录呢?

 

       只看表面,的确是界面上删除一条记录,数据库就删除一条记录,但是我们不要忘了数据库中的各个表是相互联系的,一张表可能与多个窗体相关联。

        比如:T_User表中的数据不但与"添加删除用户"窗体,还有"结账"窗体有关系,结账窗体中的"操作员用户名"的数据就是来源于T_User表中的数据,如果我们真的把T_User表表中的某记录删除了,并且被删除的那个用户还没有结账,在结账的用户名中我们又不会看到删除记录的操作员名,那么于被删除的操作员永远也就不可能结账了。

 

        T_User表中的用户名=156的这条记录要删除,但是其它窗体,比如结账窗体还要用到这条记录。

        那么我们该怎么解决呢?

        很好解决,我们在T_User表中在增加一个字段Status,用它来标记该用户是否还使用。当用户处于使用状态时,Status=True,否则Status=False .

        在机房收费系统中,还有一个表的设计存在类似的问题,比如学生信息表,当我们学生注册卡号信息时,我们向学生表里面添加基本数据,但是当学生退卡时,并不时直接从数据库里面删除该卡号记录,而是在学生信息表中定义一个Status字段,用来标识它是否处于使用状态。同样的道理,学生信息表中的信息,除了注册窗体模块,退卡窗体模块使用外,还有其它窗体模块与此表有关系。

 

通过上面的分析,我们可以得出T_User表的基本信息包括,UserID,Password,Level,Username,CreateUser,Status。

 

        Head在这里表示的是该用户是由谁添加的,所以为了字段意思表达更明白,我们可以将其改为“CreateUser”,这样别人就会很容易明白该字段要表达的意思。

 

        这次我做系统对数据库建表有了深刻的认识,建表要全局观,只有找到各个表的联系,表中的那些隐藏的字段才会被发挖出来,建表才能够做到更合理。

 

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值