正文
CODASYL:一个数据库管理系统的新标准
1969 年,数据系统语言委员会(CODASYL)发布了一份报告,提出一个数据库管理标准。巴赫曼是委员会的一员,该报告主要参照了 IDS。
CODASYL 数据模型引入了许多我们今天使用的数据库管理系统的核心特性:
最重要的是,IDS 和 CODASYL 引入了一种新的数据建模方法,这种方法影响了 SQL 的最终开发——网络数据模型。
网络模型示例
数据模型是一种描述(模型)世界(数据)的标准化方法。
前面的层次数据模型使用树型结构来描述数据,但是这些树型结构仅限于一对多的关系。新的网络模型允许记录有多条父记录,从而创建一个图结构。通过支持多个父节点,网络模型能够对多对一和多对多关系进行建模。
在网络模型中,表之间的关系存储在集合中。每个集合都有一个所有者(即教师)和一个或多个成员(即班级和学生)。
网络模型的其中一个主要好处是,集合中的相关记录是通过指针直接连接的。集合是使用 next、prior 和 owner 指针实现的,这样就可以像链表一样轻松遍历。
网络数据模型的低级特性提供了性能优势,但也付出了代价。网络数据模型增加了存储成本,因为每个记录都必须额外存储指向前一条记录和父记录的指针。
关系模型示例
1970 年,在 IDS 诞生 8 年后,Edgar F. Codd 在他的开创性论文《A relational model of Data for Large Shared Data Banks》中引入关系模型(这也为他赢得了图灵奖)。
https://www.seas.upenn.edu/~zives/03f/cis550/codd.pdf
Codd 指出,数据库中的所有数据都可以用元组(SQL 中的行)表示,这些元组被分组成关系(SQL 中的表)。为描述数据库查询,他发明了一种一阶谓词逻辑的形式,称为元组关系演算。
元组关系演算引入了一种声明性语言用于查询数据。使用声明性编程语言,程序员只需说明他们想做什么,而不必描述如何做。
对开发人员来说,这种新的声明性语言更容易使用。关系模型公开了所有数据。开发人员可以用一条命令,从一个表中检索所有数据或者读取一行数据。
在指针迷宫中查找数据的日子已经一去不复返了。