摘要
这篇论文对35年来的数据模型提案进行了总结,分为9个不同的时期。
我们讨论每个时代的提案,表明仅有几个基础的数据模型思想,且大部分都存在很长时间了。
后来的提案不可避免地跟之前的提案有很多相似之处。
因此,值得去研究之前的数据模型提案。
除此之外,我们介绍了每个时代在探索这些提案时吸取的经验教训。
当前大部分的研究人员都不在之前时代的研究人员周围,且对之前时代的经验教训理解有限。
有句古语说的好,不了解历史的人注定会重蹈覆辙。
通过介绍历史,我们希望未来的研究者可以避免重复历史。
不幸的是,当前的XML时代的主要数据模型提案跟20世纪70年代早期的CODSYL提案存在惊人的相似,但是CODSYL提案因为它的复杂性而失败了。
因此,当前的时代正在重演历史。
我们希望下一个时代能更智慧点。
第一部分:简介
当20世界60年代末第一个数据模型提案作者出现时,数据模型提案就算出现了。在之后的35年里,数据模型以惊人的规律发展着。
而且,当前的许多提案都是有许多年轻的研究人员提出的,他们太年轻了以致于不能了解到更早一些提案的讨论。
因此,这篇文章的目的是总结35年来的有价值的进展,指出应该从其中吸取哪些教训。
我们用9个历史时期来介绍数据模型提案:
- 层级数据模型IMS:20世纪60年代末和70年代;
- 网络数据模型CODASYL:20世纪70年代;
- 关系数据模型:20世纪70年代和80年代早期;
- 实体-关系数据模型:20世纪70年代;
- 拓展的关系数据模型:20世纪80年代;
- 语义数据模型:20世纪70年代末和80年代
- 面向对象数据模型:20世纪80年代末和90年代早期;
- 对象-关系数据模型:20世纪80年代末和90年代早期;
- 半结构化数据模型:20世纪90年代末直到现在;
对每个时期,我们使用中立的记号来讨论数据模型,及其关联的查询语言。
我们向读者省去各种提案的细节。我们使用统一的术语,避免不统一带来的混乱。
在整篇文章中,我们将使用来自[CODD70]的标准示例:供应商suppliers、零部件parts等:
- 供应商Supplier(sno, sname, scity, sstate);
- 零部件Part(pno, pname, psize, pcolor);
- 供应关系Supply(sno, pno, qty, price);
注意:在这里我们有了供应商信息、零部件信息、供应关系,其中供应关系表明哪个供应商能提供什么零部件。