· [Java论坛][安全论坛][数据库论坛][操作系统论坛]
· [专题] IBM Rational高峰论坛 Windows 7十大功能
· [专题] 史上就危险7月 微软 BizSpark 计划介绍
· [IT技术周刊][IT资源下载专区][病毒求助专区]
· [热点] 我也能做CTO_赛迪连载 赛迪七夕特别行动
· [热点] Chrome 4.0采用V8引擎 Java开发编程规范

解析数据库使用和开发中的十个常见错误 (1)

发布时间:2009.05.15 04:44     来源:赛迪网    作者:yan

尽管软件发展中的热点技术层出不穷,不断地变化,有一些东西却一直未曾改变,其中之一就是开发人员对数据库的使用和设计开发。

你可能会兴奋地紧跟时尚创建一个AJAX Web界面,或者使用最近迷人的Windows用户界面,但是透过这些各种各样的外观界面,你可能依然需要从后台数据库中提取或存取所需要的数据——这一点就如同十多年以前人们对数据库的操作是一样的。

然而,令人吃惊的是,现在还有很多开发者依然在不断地重复着很多年以前就存在的数据库使用和开发上的错误。或许是有太多的开发者只是来学习如何使用一个数据库,而不是真正的去研究它。以下是笔者作为一个开发者,个人在平时的开发工作中所精选出的数据库开发者常犯的十大错误,以飨读者和同行。

1、选择了错误的数据库

不是所有的数据库都可以用来完成你的任务,这意味着当你在使用数据库来做任何开发工作和其他事情前,你必须选择合适的数据库。例如,我们经常看到一些Access数据库没有能力处理的大容量数据集,对于SQL Server来说却像玩小孩子的游戏一样轻松地完成处理。但是,对于只需要处理几百行数据的需求,有的人却花钱来购买SQL Server。这些都是错误的做法。广泛地来说,在当今市场中的数据库可以分为三个层次:桌面和嵌入数据库——适合于处理小型任务;一些大型数据库产品的“Express”版也是不错的,可以处理数G条数据;而真正的企业级数据库,像SQL

Server、Oracle和DB2的数据处理能力是非常惊人的,你可以毫不犹豫地把数据抛给它们。因此,在你选择数据库前,你需要对于你的数据进行一次客观真实的分析,从而选择适合你的开发工作和实际需求的数据库产品。

2、选择了太多的数据库

诸如ODBC、JDBC和OLEDB等应用程序编程接口的出现,大大促进和提升了数据库独立性,也就是说,开发人员可以这样来编写你的应用程序:你可以让你的应用程序支持使用任何数据库来进行数据存储。

然而,这种情况是要付出一些代价的,我曾经看到有的开发团队为了追求应用程序的数据库“无关性”,专门编写了应用程序将所有的SQL语句转换成一些底层的语言,以便让所有的数据库都能理解并执行,但是,这样做的同时也丧失了现有数据库的一些高级功能。

那么为什么这么做呢?可能是出于这样的考虑:某些客户在将来的使用中可能想切换到Oracle或DB2或FoxPro,或其他的什么数据库,采用上面的这种做法或许是现在先准备好了,“未雨绸缪”。

对于此,另一种相反的做法是:当你开始开发一个新产品的时候,选择一个存储引擎并开始在此基础上编写你的应用程序。如果你的产品足够好,人们会安装你指定的数据库,因此你不用浪费时间和精力来支持一种“假想”的用户需求。

3、了解你的数据

在我们使用数据库的过程中会碰到很多需要考虑的问题,例如有些客户编号可能并不是我们通常认为的七位,而是六位;而有一些公司和企业出于保护个人隐私的考虑,可能不一定非要求员工输入他们的身份证号码或者银行帐号,因此这中数据类型在数据库搭建和开发中必须设置成可以为空(NULL)。也就是说,数据库开发和设计不能脱离实际情况进行,不能远离实际业务规则。对数据库开发者来说,必须要完全了解用户真正输入数据的需求是什么,并根据这些数据来合理地设计数据字段的大小、类型以及什么规则,等等。否则,等待你的将是一次又一次地返回头来进行修改工作。因此,你要学会在开始的时候就对你需要处理的数据具有非常全面、深入的了解,要尽量考虑到各种意外的情况。

4、数据库不像Excel一样人人会用

现在有一种认识上的误区,尤其是在一些小单位的管理者眼中,他们总认为任何开发者都知道如何去合理地搭建一个数据库。很明显,这种误解让我很困惑。既然你不会假定任何开发者都知道如何用C#编程或创建一个Web服务,那么为什么要假定每个开发者都是数据库专家呢?这种假设所带来的最后结果是,太多的数据库被一些甚至从来没有听说过术语规范化(term ormalization)的人所设计。很多数据库的功能根本没有被合理地运用,如果你是这样一个开发者的话,那么在你设计数据库之前,你需要加强这方面的培训和学习了。高效的数据库设计是你必须了解和掌握的技巧,而不要奢望可以通过失败的教训来了解到这一点。

1 2 下一页>>


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 如何才能有效对抗MySQL数据库的解密高手 (05-14) · 实例解析:用Oracle创建实例的参数需求 (05-14)
· MySQL数据库创始人宣布创建开源数据库联盟 (05-14) · 优化SQLServer数据库服务器内存配置的策略 (05-12)
· 为什么Access数据库的精髓不在VBA之中 (05-12) · SQL Server 压缩日志及数据库文件大小 (05-12)
· 细化解析:如何来正确的理解异构数据库 (05-12) · 非结构化数据库与异构数据库是一样的吗 (05-12)
· 名词解释:带你轻松接触13个数据库术语 (05-12) · 实例讲解一种处理不规范日期数据的好方法 (05-11)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
资讯 通信 IT产品 IT技术 信息化
专题:谷歌发布PC操作系统Chrome OS
·芯能量 新动力 兴经济:..
·专题:英特尔与AMD和解 ..
·专题:惠普27亿收购3Com..
专题:
·专题:诺基亚危局已现 ..
·六股势力角逐4G标准 中..
·专题:联通iPhone并不贵..
 
·惠普123459黑白激打家族..
·云计算格局初现 三大阵..
·分析:虚拟化在高性能计..
2009 IBM动态架构新动力论坛
·直播:第八届中国系统与..
·专题:置身智慧海洋——..
·专题:让物品开口说话 ..