天天看点

【个人重构】数据库设计之深度思考1、对表的思考:

背景:在浏览网页的时候看见了一篇文字,文章中写的有关于数据库的设计,看了之后感觉自己数据库设计的太low了,所以对自己的数据库进行了深度的剖析,又做了修改,以下是从几方面对数据库的思考。

1、对表的思考:

之前的表:   

【个人重构】数据库设计之深度思考1、对表的思考:

  现在的表

【个人重构】数据库设计之深度思考1、对表的思考:

首先对之前是checkDay和checkWeek 两张表,因为两个表字段是完全一样的,导致了数据库的臃肿,所以这次设计我就把两个表和成了一个表。同时把line表和online表也和成了一个表,为T_OnLineRecord.  对于表的命名遵循了命名规范。之前的注册的时候是把学号和学生都注册了,学号和卡号都在一个表里,这样就违背了数据库的第三范式。所以这次我就把表分开了。也就是我们常说到的解耦。但是发现分开后并不是很方便,刚开始是想:如果这个系统是学校用的话,那么学号肯定学校都是已经注册好的了。这个学号就跟着四年,而卡号应该是自动生成的,比如从000001到999999之类的,这样应该就很好了,还有一种就是如果点击注册的话把两个窗体都show出来,并排显示,然后先注册学生,然后继续注册卡号就方便多了。

于是在设计数据库的时候表就从11到9个了

 2、对于数据类型

可以清晰的看出来我上次的数据库设计完全都是char(10), 虽然char的效率比较高,但是占用的内存也大,如果说一个特别大的数据库的画,每个字段的数据类型设置的都不太合适,那势必会给数据库带来很多麻烦,数据库也就变得很臃肿,经过思考后,将学号改成char(12)

因为咱们学校的学号是12位的,学生姓名数据类型改成char(8),性别改成char(2),系别改成char(20),年级在窗体上设计的是选择,选大一,大二等等,所以改成char(4),对每个表进行这样的思考后,感觉数据库都瘦了一圈。同时在网上查后发现有用数据类型的简写加上字段的名字来命名数据库的列名,所以自己也就那么改了,比如CardNo 改成了Chr_CardNo 这样在机房收费系统中看见后就知道它的数据类型是什么了。

numeric(a,b)函数有两个参数,前面一个为总的位数,后面一个参数是小数点后的位数,例如numeric(5,2)是总位数为5,小数点后为2位的数,也就是说这个字段的整数位最大是3位。

date是SQL Server 2008新引进的数据类型。它表示一个日子,不包含时间部分,可以表示的日期范围从公元元年1月1日到9999年12月31日。只需要3个字节的存储空间。

  DateTime 日期和时间部分,可以表示的日期范围从公元1753年1月1日00:00:00.000到9999年12月31日23:59:59.997 ,精确到3.33毫秒,它需要8个字节的存储空间。

【个人重构】数据库设计之深度思考1、对表的思考:

下面是设计好的部分字段。

【个人重构】数据库设计之深度思考1、对表的思考:

为了程序的更加简便性这次数据库用到了视图和存储过程

【个人重构】数据库设计之深度思考1、对表的思考:

小结:这篇博客写的有点乱,想到哪里也哪里,并没有什么条理,但是对数据库思考后感觉收获很多,不仅复习了有关数据类型的知识,而且也为整个系统着想,如何为系统瘦身,更重要为用户着想,没事儿想想用户需要的是什么样的系统。经常这样想我相信以后做项目会越做越好。

同时希望各位大神指导。