如何衡量一个数据库设计是否优秀
如何衡量一个数据库设计是否优秀
数据库设计是信息系统设计的根底,一个优秀的数据库设计在满意了软件需要以外,还要易维护、易扩充等等需求。当然,对专家们反复强调的数据的一致性、冗余性、访问效率等疑问的处理,很大程度上取决于数据库设计者的经历和专业水平。但这不阻碍咱们根据过去的经历,从有用的视点给出数据库设计所要要考虑的疑问并尽可能给出相应的处理方案,然后给信息系统的数据库设计者一些有益的启示。那么如何衡量一个数据库设计是否优秀呢?
(1)、一个优秀数据库设计首先要满足用户的需求
所有信息系统最后都将提交给最终用户使用,对于这一点,相信大家都已经达成共识。但是准确地把握用户的需求是很难的,虽然各方面的专家已经从不同方面给出了解决方案,但是用户需求仍然是软件工程中最不确定的因素之一。
(2)、一个优秀数据库设计要便于维护和扩充
为了应对用户需求的修改和添加,也为了满足各种不同的软硬件环境下系统的使用,大部分信息系统都不得不在其生命期中进行升级和调整。在这些升级、调整中,又有相当部分会涉及到数据库设计的修改,因此,数据库设计最好从一开始就能在易维护、可扩充的角度多加斟酌。
(3)、一个优秀数据库设计要具有“可读性”
如同编程书籍中反复强调的程序员一定要在代码的可读性方面下功夫一样,考虑到信息系统将来的升级和维护可能要要由另外一批人来进行,因此数据库设计必然也要具有可理解性。
用设计文档来提高数据库设计的可读性这点基本对应于“可读性”代码里面的注释。在一个合格的数据库设计文档中必须给出数据库中的每个表、每个字段、表间的关联关系以及各种约束的意义以及由来,从而有可能让开发者根据用户需求和设计文档就能理解正确数据库的设计。
(4)、一个优秀数据库设计能够满足空间和效率的要求
对于一个信息系统来说,在实现用户需求的基础之上,保证一个较低的空间占用以及短的响应时间都是理智的客户所愿意看到的。那么在这一方面,数据库设计又要做些什么工作呢?
1、使用varchar而不要使用char字段
对于不定长信息如用户的简介信息,varchar的使用可以减少近一半的空间占用。当然这点不能一概而论,如用相应长度的char存储定长文本数据就比varchar来的合适。
2、不要使用BLOB字段存放“大数据”
BLOB字段诚如其名,本身是为存储二进制大数据而出现的,同样的道理也适用于某些DBMS所引入的TEXT字段。因为对于一般信息系统而言,最长的字段往往是一些描述文本信息,而DBMS对char/varchar的长度基本能满足这种需求。因此积极建议设计者对一些貌似很长的文本的最大允许长度进行确认,在此基础上参照DBMS中的开发手册来决定是否采用大字段。
(5)、一个优秀数据库设计可以简化业务逻辑的设计
所有的数据库设计都不是孤立的,它通过相应的业务逻辑实现(三层结构中还有表现层)来形成最终的产品,因此一个好的数据库设计应该能够帮助降低业务逻辑的编写难度,最起码不要给业务逻辑的设计、编码带来额外工作。
分析出设计中所涉及的主外键引用关系并体现在数据库设计中。这一条出于两点思考:降低事务逻辑的编写难度和数据关联性约束的需要。一切答应为空的字段有必要是根据用户需要,而不是出于设计上便利的思考。这样带来的优点是让详细设计中的某些过错和遗漏(如在设计中没有思考对非空字段的内容查看)在编码和单元测试期间就被发现,然后避免了进一步扩散,有助于进步软件的质量。
数据库设计是信息系统设计的根底,一个优秀的数据库设计在满意了软件需要以外,还要易维护、易扩充等等需求。当然,对专家们反复强调的数据的一致性、冗余性、访问效率等疑问的处理,很大程度上取决于数据库设计者的经历和专业水平。但这不阻碍咱们根据过去的经历,从有用的视点给出数据库设计所要要考虑的疑问并尽可能给出相应的处理方案,然后给信息系统的数据库设计者一些有益的启示。那么如何衡量一个数据库设计是否优秀呢?
(1)、一个优秀数据库设计首先要满足用户的需求
所有信息系统最后都将提交给最终用户使用,对于这一点,相信大家都已经达成共识。但是准确地把握用户的需求是很难的,虽然各方面的专家已经从不同方面给出了解决方案,但是用户需求仍然是软件工程中最不确定的因素之一。
(2)、一个优秀数据库设计要便于维护和扩充
为了应对用户需求的修改和添加,也为了满足各种不同的软硬件环境下系统的使用,大部分信息系统都不得不在其生命期中进行升级和调整。在这些升级、调整中,又有相当部分会涉及到数据库设计的修改,因此,数据库设计最好从一开始就能在易维护、可扩充的角度多加斟酌。
(3)、一个优秀数据库设计要具有“可读性”
如同编程书籍中反复强调的程序员一定要在代码的可读性方面下功夫一样,考虑到信息系统将来的升级和维护可能要要由另外一批人来进行,因此数据库设计必然也要具有可理解性。
用设计文档来提高数据库设计的可读性这点基本对应于“可读性”代码里面的注释。在一个合格的数据库设计文档中必须给出数据库中的每个表、每个字段、表间的关联关系以及各种约束的意义以及由来,从而有可能让开发者根据用户需求和设计文档就能理解正确数据库的设计。
(4)、一个优秀数据库设计能够满足空间和效率的要求
对于一个信息系统来说,在实现用户需求的基础之上,保证一个较低的空间占用以及短的响应时间都是理智的客户所愿意看到的。那么在这一方面,数据库设计又要做些什么工作呢?
1、使用varchar而不要使用char字段
对于不定长信息如用户的简介信息,varchar的使用可以减少近一半的空间占用。当然这点不能一概而论,如用相应长度的char存储定长文本数据就比varchar来的合适。
2、不要使用BLOB字段存放“大数据”
BLOB字段诚如其名,本身是为存储二进制大数据而出现的,同样的道理也适用于某些DBMS所引入的TEXT字段。因为对于一般信息系统而言,最长的字段往往是一些描述文本信息,而DBMS对char/varchar的长度基本能满足这种需求。因此积极建议设计者对一些貌似很长的文本的最大允许长度进行确认,在此基础上参照DBMS中的开发手册来决定是否采用大字段。
(5)、一个优秀数据库设计可以简化业务逻辑的设计
所有的数据库设计都不是孤立的,它通过相应的业务逻辑实现(三层结构中还有表现层)来形成最终的产品,因此一个好的数据库设计应该能够帮助降低业务逻辑的编写难度,最起码不要给业务逻辑的设计、编码带来额外工作。
分析出设计中所涉及的主外键引用关系并体现在数据库设计中。这一条出于两点思考:降低事务逻辑的编写难度和数据关联性约束的需要。一切答应为空的字段有必要是根据用户需要,而不是出于设计上便利的思考。这样带来的优点是让详细设计中的某些过错和遗漏(如在设计中没有思考对非空字段的内容查看)在编码和单元测试期间就被发现,然后避免了进一步扩散,有助于进步软件的质量。
