我一直在研究正确的关系代数,来自 Christopher Date 的书Database in Depth: Relational Theory for Practitioners。在整本书中,他使用了他和 Hugh Darwen 提出的语言来传达理论——教程D。总的来说,我认为 Tutorial D 是一种非常实用的查询语言,比 SQL 灵活得多,所以我(只是为了好玩)热衷于尝试基于 Tutorial D 编写一个(性能很差,毫无疑问)小 RDBMS,而不是SQL。
意识到这是一项艰巨的任务,即使只是为了做一些基本的事情,我想知道是否有现有的存储系统不代表 SQL 意义上的表,而是表示关系意义上的关系,并且不假设任何特定的查询语言用于访问数据,而只是提供低级函数,如、 、 、product
等join
(intersect
在C 级别,而不是在查询语言级别)。union
project
我说得有道理吗?:) 基本上我想采用类似的方法并在其前面粘贴一个 Tutorial D(或类似的)查询界面。
在内存中做所有事情真的很容易,但是以一种甚至是中等效率的方式表示磁盘上的数据结构是相当棘手的,并且可能在我没有认真研究的情况下超出我的头脑。