引言数据库设计是信息系统设计的基础,一个好的数据库设计在满足了软件需求之外,还要易维护、易扩充等等要求。当然,对专家们反复强调的数据的一致性、冗余性、访问效率等问题的解决,很大程度上取决于数据库设计者的经验和专业水平。但这不妨碍我们根据过去的经验,从实用的角度给出数据库设计所要要考虑的问题并尽可能给出相应的解决方案,从而给信息系统的数据库设计者一些有益的启示。(注:这里的数据库设计主要指数据库中表和视图的schema设计,不涉足数据库系统中其他方面的设计)那么怎样才算是一个好的数据库设计呢?以下给出一个一般性的标准。
一、一个好的数据库设计首先要满足用户的需求
所有信息系统最后都将提交给最终用户使用,对于这一点,相信大家都已经达成共识。但是准确地把握用户的需求是很难的,虽然各方面的专家已经从不同方面给出了解决方案,但是用户需求仍然是软件工程中最不确定的因素之一。
二、一个好的数据库设计要便于维护和扩充
为了应对用户需求的修改和添加,也为了满足各种不同的软硬件环境下系统的使用,大部分信息系统都不得不在其生命期中进行升级和调整。在这些升级、调整中,又有相当部分会涉及到数据库设计的修改,因此,数据库设计最好从一开始就能在易维护、可扩充的角度多加斟酌。
1、不要为各种编号字段的设定固定的意义
而是最好通过对照表来建立这种编号和意义的对照关系。举例来说,很多设计者习惯给部门信息给出固定的编号,这种设计有个致命的缺陷:那就是由于这种对照关系既然不体现在数据库中,就必然要用业务逻辑来进行解释,这样一来,一有新的调整就不得不更新业务逻辑代码,也就非常容易不一致的错误。
2、枚举信息要体现在相应在对照表中
而不是体现在使用