在培训学校学习期间,老师一直很重视培养我们的(在这里只指关系数据库)数据库设计能力的提高,在软工期间很注意,现在的项目练习中又重点训练,这是我对数据库的设计不敢轻视。
第一个问题,数据库的表依据什么来建立。
面向对象的编程思想自产生以来经久不衰,“一切皆为对象”更是经典中的经典,这就说明在数据库设计中也可用对象的思想解决问题,那我们可以说一个表就是一个对象,而什么对象呢?那就看具体的业务了,老师一直提醒我们数据库的设计最主要的目的是为程序服务,程序依托于实际业务,这样简化一下,数据表就是实际业务存在的对象的映射。一般情况,当我们分析实际业务功能时,就已经分析出有哪些对象,基本确定要建哪几个表。比如,一个简单的新闻发布系统,最基本的有新闻、新闻类别等对象吧,如果有发布评论的业务,那评论又是一个对象,这样新闻表、新闻类别表、评论表就确定下来了。一目了然,我们就清楚这个数据库大体的框架。
第二个问题,一个优秀的数据库具备哪些标准。
我想,首先以满足业务要求为底线,业务需要操作的数据及不同对象之间的关系在数据库表现为表中的字段齐全而不产生冗余,表与表之间的主外键关系正确清除。
其次,我们应考虑数据库的可扩张性。上一要求做到不难,而一个好的数据库设计者应该有发展的目光,比如,我们一个小组做一个旅游局的项目时,有一报表打印的功能,其报表的模版初定时就几项数据要填,对应数据库表中就几个字段,后来业务变化,报表的数据在原基础上,增加十几项,这是我们设计数据库始料未及的,结果更改了数据耗库,其结果大家重加工,产生的无用功太多。
还有,数据库的使用者首先是开发人员,那我们设计的数据库对于开发人员应该是简单方便的,是受欢迎的。这就要求我们多动脑筋,简化一些繁琐的工作,如联合查询,我们可以建立视图,又如,有几十个文本框的数据要记录在数据库中,我们可以采用二进制数据类型把所有文本框的值存储在一起。