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

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


当前回答

进化数据库设计。http://martinfowler.com/articles/evodb.html

这些敏捷方法使数据库更改过程易于管理、可预测和可测试。

开发人员应该知道,在版本控制、持续集成和自动化测试方面重构生产数据库需要什么。

进化数据库设计过程具有管理方面的问题,例如,在此代码库的所有数据库中,某个列在某个生命周期后将被删除。

至少要知道数据库重构的概念和方法是存在的。 http://www.agiledata.org/essays/databaseRefactoringCatalog.html

分类和过程描述也使得为这些重构实现工具成为可能。

其他回答

非唯一索引中的列顺序很重要。

第一列应该是其内容(即基数)变化最大的列。

这是为了帮助SQL Server在运行时如何使用索引创建有用的统计数据。

我会说有很强的SQL基础技能。到目前为止,我见过许多对数据库了解不多的开发人员,但总是询问如何制定一个相当简单的查询的技巧。查询并不总是那么容易和简单。在查询规范化良好的数据库时,必须使用多个连接(内部连接、左连接等)。

我希望每个人,包括dba和开发人员/设计人员/架构师,都能更好地理解如何正确地对业务领域建模,以及如何将业务领域模型映射/转换为规范化的数据库逻辑模型、优化的物理模型和适当的面向对象类模型(每种模型由于各种原因(可能)不同),并理解何时、为什么以及它们(或应该)如何彼此不同。

索引的工作原理

这可能不是最重要的,但肯定是最被低估的话题。

索引的问题在于SQL教程通常根本不会提到它们,而且所有的玩具示例都可以在没有索引的情况下工作。

即使更有经验的开发人员也可以编写相当好的(和复杂的)SQL,而不需要了解更多关于索引的知识,而只是“索引使查询更快”。

这是因为SQL数据库作为黑盒的工作做得非常好:

告诉我你需要什么(给我SQL),我来处理。

这可以很好地检索正确的结果。SQL的作者不需要知道系统在幕后做什么——直到一切变得非常缓慢.....

这时索引就成了一个话题。但这通常很晚了,而且某些人(一些公司?)已经遇到了真正的问题。

这就是为什么我认为索引是在使用数据库时不能忘记的首要主题。不幸的是,它很容易忘记。

免责声明

这些论点是从我的免费电子书“使用索引,卢克”的序言中借来的。我花了很多时间来解释索引是如何工作的,以及如何正确地使用它们。

三件事是一个神奇的数字:

数据库也需要版本控制。 游标很慢,您可能不需要它们。 触发器是邪恶的*

*几乎总是