Abstract

关系型数据库是基于 Relational Data Model 的数据库。Relational Model 基于 Relation 对数据库做抽象,从而避免代码中维护数据存储的物理方式的成本。

背景故事

在 1950 年代之前,数据管理就是搬运数以百万计的打孔纸带。在 1951 年磁带驱动器诞生,数据处理开始变得更快;1956 年磁盘驱动器诞生,数据的随机访问成为可能。

1961 年,第一个成功的数据库系统 Integrated Data Store 被开发出来。早期的数据库大多采用层次型或网状型结构,数据的存取和管理高度依赖程序逻辑,程序员需要感知数据库的具体设计和数据存放模式,要基于指针做遍历操作,查询逻辑和数据库定义是紧耦合的。这导致每当 Schema 发生变化时,代码都要重新写;而且数据或者查询逻辑的问题会波及整个系统。

IBM 的研究员 Edgar F. Codd (学数学的!) 观察到这些现象后,提出了 Relational Model 的概念,将数据做了抽象,并用集合论和一阶逻辑来定义操作和约束,这样数据库的结构和操作就脱离了底层存储。这些思想随后被实现出来,并设计了 SQL 用于查询,关系型数据库就此诞生。

在 Relational Model 诞生之初,也有人质疑「没有什么程序能让查询语法的效率和人类手写的查询代码媲美」;但就像 C 语言编译器已经能胜过绝大多数人手写的汇编代码的效率一样,现在已经没有人质疑这一点了。