开发人员应该首先了解的数据库是:数据库的作用是什么?它们既不是如何工作的,也不是如何构建的,甚至不是如何编写代码来检索或更新数据库中的数据的。但是他们是干什么的呢?
不幸的是,这一目标的答案是一个不断变化的目标。 在从1970年代到1990年代初期的数据库大杂烩中,数据库用于共享数据。 如果您使用的是数据库,并且没有共享数据,那么您要么参与了一个学术项目,要么在浪费资源,包括您自己。建立数据库和驯服DBMS是一项艰巨的任务,以至于要多次开发数据,投资回报必须非常庞大,才能与投资相称。
在过去的15年中,数据库已用于存储仅与一个应用程序关联的持久性数据。 为MySQL或Access或SQL Server建立数据库已经变得如此例行,以至于数据库几乎已成为普通应用程序的例行部分。有时,随着数据的真实价值变得明显,最初的有限任务会因任务蠕变而被推高。不幸的是,出于单一目的而设计的数据库在开始被推到整个企业范围且对任务至关重要的角色时,往往会严重失败。
开发人员要了解数据库的第二件事是对整个数据中心视图的了解。以数据为中心的世界视图与以过程为中心的世界视图相比,大多数开发人员所学到的东西都与以往有更多不同。与该差距相比,结构化编程与面向对象编程之间的差距相对较小。
至少在概述中,开发人员需要学习的第三件事是数据建模,包括概念数据建模,逻辑数据建模和物理数据建模。
从数据中心的角度来看,概念数据建模实际上是需求分析。
逻辑数据建模通常是将特定数据模型应用于概念数据建模中发现的需求。关系模型的使用远远超过其他任何特定模型,并且开发人员需要确定地学习关系模型。针对非平凡的需求设计功能强大且相关的关系模型并非易事。如果您误解了关系模型,就无法构建好的SQL表。
物理数据建模通常是特定于DBMS的,除非开发人员同时也是数据库构建者或DBA,否则无需对其进行详细了解。开发人员确实需要了解的是,物理数据库设计可以与逻辑数据库设计分离的程度,以及仅通过调整物理设计就可以完成生成高速数据库的程度。
开发人员接下来需要了解的是,尽管速度(性能)很重要,但是其他设计优良性的衡量标准甚至更加重要,例如修改和扩展数据库范围的能力或编程的简便性。
最后,任何与数据库打交道的人都需要了解,数据的价值通常比捕获数据的系统的价值还要高。
ew!