不管我们喜欢与否,我们开发人员中的许多人(如果不是大多数的话)都经常使用数据库,或者有一天可能不得不使用数据库。考虑到大量的误用和滥用,以及每天出现的大量与数据库相关的问题,公平地说,有一些概念是开发人员应该知道的——即使他们今天不设计或使用数据库。

关于数据库,开发人员和其他软件专业人员应该知道的一个重要概念是什么?


当前回答

关于以下对Walter M。的回答:

“写得很好!历史视角对于当时没有做数据库工作的人(比如我)来说非常有用。”

历史观点在某种意义上是绝对重要的。“忘记历史的人,注定要重蹈覆辙。”XML重复着过去的层次错误,图形数据库重复着过去的网络错误,OO系统迫使用户使用层次模型,而每个人即使只有十分之一的大脑都应该知道层次模型不适合真实世界的通用表示,等等,等等。

至于问题本身:

每个数据库开发人员都应该知道“关系型”不等于“SQL”。然后他们就会明白为什么他们会被DBMS供应商如此失望,为什么他们应该告诉同样的供应商想出更好的东西(例如真正的关系型DBMS),如果他们想继续从他们的客户那里为这些蹩脚的软件吸走大量的钱)。

每个数据库开发人员都应该了解关系代数的所有知识。这样,就不会再有开发者在Stack Overflow网站上发布“我不知道如何做我的工作,希望别人帮我做”这样的愚蠢问题了。

其他回答

RDBMS兼容性

查看是否需要在多个RDBMS中运行应用程序。如有,可能需要:

避免RDBMS SQL扩展 消除触发器和存储过程 遵循严格的SQL标准 转换字段数据类型 更改事务隔离级别

否则,这些问题应该分开处理,并开发应用程序的不同版本(或配置)。

了解用于数据库编程的工具!!

我浪费了很多时间试图理解为什么我的代码神秘地失败了。

例如,如果您正在使用。net,您需要知道如何正确使用System.Data.SqlClient名称空间中的对象。您需要知道如何管理SqlConnection对象,以确保它们被打开、关闭,并在必要时正确地处理。

你需要知道,当你使用SqlDataReader时,有必要将它与你的SqlConnection分开关闭。您需要了解如何在适当的时候保持连接打开,以及如何最小化对数据库的访问次数(因为它们在计算时间方面相对昂贵)。

不要依赖于SQL查询返回的行顺序。

基本的SQL技能。 索引。 处理DATE/ TIME/ TIMESTAMP的不同形式。 用于您正在使用的平台的JDBC驱动程序文档。 处理二进制数据类型(CLOB、BLOB等)

对于一些项目,面向对象模型更好。

对于其他项目,关系模型更好。