尽管软件发展中的热点技术层出不穷不断地变化有一些东西却一直未曾改变其中之一就是开发人员对数据库的使用和设计开发
你可能会兴奋地紧跟时尚创建一个AJAX Web界面或者使用最近迷人的Windows用户界面但是透过这些各种各样的外观界面你可能依然需要从后台数据库中提取或存取所需要的数据——这一点就如同十多年以前人们对数据库的操作是一样的
然而令人吃惊的是现在还有很多开发者依然在不断地重复着很多年以前就存在的数据库使用和开发上的错误或许是有太多的开发者只是来学习如何使用一个数据库而不是真正的去研究它以下是笔者作为一个开发者个人在平时的开发工作中所精选出的数据库开发者常犯的十大错误以飨读者和同行
选择了错误的数据库
不是所有的数据库都可以用来完成你的任务这意味着当你在使用数据库来做任何开发工作和其他事情前你必须选择合适的数据库例如我们经常看到一些Access数据库没有能力处理的大容量数据集对于SQL Server来说却像玩小孩子的游戏一样轻松地完成处理但是对于只需要处理几百行数据的需求有的人却花钱来购买SQL Server这些都是错误的做法
广泛地来说在当今市场中的数据库可以分为三个层次桌面和嵌入数据库——适合于处理小型任务一些大型数据库产品的Express版也是不错的可以处理数G条数据而真正的企业级数据库像SQL ServerOracle和DB的数据处理能力是非常惊人的你可以毫不犹豫地把数据抛给它们
因此在你选择数据库前你需要对于你的数据进行一次客观真实的分析从而选择适合你的开发工作和实际需求的数据库产品
选择了太多的数据库
诸如ODBCJDBC和OLEDB等应用程序编程接口的出现大大促进和提升了数据库独立性也就是说开发人员可以这样来编写你的应用程序你可以让你的应用程序支持使用任何数据库来进行数据存储
然而这种情况是要付出一些代价的我曾经看到有的开发团队为了追求应用程序的数据库无关性专门编写了应用程序将所有的SQL语句转换成一些底层的语言以便让所有的数据库都能理解并执行但是这样做的同时也丧失了现有数据库的一些高级功能
那么为什么这么做呢?可能是出于这样的考虑某些客户在将来的使用中可能想切换到Oracle或DB或FoxPro或其他的什么数据库采用上面的这种做法或许是现在先准备好了未雨绸缪
对于此另一种相反的做法是当你开始开发一个新产品的时候选择一个存储引擎并开始在此基础上编写你的应用程序如果你的产品足够好人们会安装你指定的数据库因此你不用浪费时间和精力来支持一种假想的用户需求
了解你的数据
在我们使用数据库的过程中会碰到很多需要考虑的问题例如有些客户编号可能并不是我们通常认为的七位而是六位而有一些公司和企业出于保护个人隐私的考虑可能不一定非要求员工输入他们的身份证号码或者银行帐号因此这中数据类型在数据库搭建和开发中必须设置成可以为空(NULL)
也就是说数据库开发和设计不能脱离实际情况进行不能远离实际业务规则对数据库开发者来说必须要完全了解用户真正输入数据的需求是什么并根据这些数据来合理地设计数据字段的大小类型以及什么规则等等否则等待你的将是一次又一次地返回头来进行修改工作因此你要学会在开始的时候就对你需要处理的数据具有非常全面深入的了解要尽量考虑到各种意外的情况
数据库不像Excel一样人人会用
现在有一种认识上的误区尤其是在一些小单位的管理者眼中他们总认为任何开发者都知道如何去合理地搭建一个数据库
很明显这种误解让我很困惑既然你不会假定任何开发者都知道如何用C#编程或创建一个Web服务那么为什么要假定每个开发者都是数据库专家呢?
这种假设所带来的最后结果是太多的数据库被一些甚至从来没有听说过术语规范化(term normalization)的人所设计很多数据库的功能根本没有被合理地运用如果你是这样一个开发者的话那么在你设计数据库之前你需要加强这方面的培训和学习了高效的数据库设计是你必须了解和掌握的技巧而不要奢望可以通过失败的教训来了解到这一点
[] []