关系数据库的诞生

关系数据库由来

网状数据库和层次数据库已经很好地解决了数据的集中和共享问题,但是在数据独立性和抽象级别上仍有很大欠缺。

1970 年,IBM 的研究员 E.F.Codd 博士在刊物《Communication of the ACM》上发表了一篇名为 “ARelational Model of Data for Large Shared Data Banks” 的论文,提出了关系模型的概念,奠定了关系模型的理论基础。

这篇论文被普遍认为是数据库系统历史上具有划时代意义的里程碑。Codd 的心愿是为数据库建立一个优美的数据模型。后来Codd又陆续发表多篇文章,论述了范式理论和衡量关系系统的 12 条标准,用数学理论奠定了关系数据库的基础。

关系模型

关系模型有严格的数学基础,抽象级别比较高,而且简单清晰,便于理解和使用。

但是当时也有人认为关系模型是理想化的数据模型,用来实现 DBMS 是不现实的,尤其担心关系数据库的性能难以接受,更有人视其为当时正在进行中的网状数据库规范化工作的严重威胁。

为了促进对问题的理解,1974 年 ACM 牵头组织了一次研讨会,会上开展了一场分别以 Codd 和 Bachman 为首的支持和反对关系数据库两派之间的辩论。这次著名的辩论推动了关系数据库的发展,使其最终成为现代数据库产品的主流。

1970 年关系模型建立之后,IBM 公司在 San Jose 实验室增加了更多的研究人员研究这个项目,这个项目就是著名的 System R。其目标是论证一个全功能关系 DBMS 的可行性。该项目结束于 1979 年,完成了第一个实现 SQL 的 DBMS。

关系数据库

1973 年加州大学伯克利分校的 Michael Stonebraker 和 EugeneWong 利用 System R 已发布的信息开发自己的关系数据库系统 Ingres。

他们开发的 Ingres 项目最后被 Oracle 公司、Ingres 公司以及硅谷的其他厂商所商品化。后来,System R 和 Ingres 系统双双获得 ACM 的 1988 年“软件系统奖”。

1976 年 Honeywell(霍尼韦尔)公司开发了第一个商用关系数据库系统,MulticsRelational Data Store(MRDS)。

关系型数据库系统以关系代数为坚实的理论基础,经过几十年的发展和实际应用,技术越来越成熟和完善。其代表产品有 Oracle、IBM 公司的 DB2、微软公司的 MS SQLServer 以及 Informix、ADABASD 等等。

关系代数

关系代数(Relation Algebra)是一种抽象的查询语言,用对关系的运算来表达查询,作为研究关系数据语言的数学工具。关系代数的运算对象是关系,运算结果亦为关系。

关系代数用到的运算符包括四类:集合运算符、专门的关系运算符、算术比较符和逻辑运算符。

比较运算符和逻辑运算符是用来辅助专门的关系运算符进行操作的,所以关系代数的运算按照运算符的不同主要分为传统的集合运算和专门的关系运算两类。

传统的集合运算是二目运算,包括并(Union)、交(Intersection Referential Integrity)、差(Difference)、广义笛卡尔积(Extended Cartesian Product)四种运算。专门的关系运算包括选择(Selection)、投影(Projection)、连接(Join)和除(Division)。