计算机研究与发展
JOURNAL OF COMPUTER RESEARCH AND DEVELOPMENT
1999年　第36卷　第10期　Vol.36　No.10　1999



约束数据库中的动态区间索引结构
汪卫　王宇君　王轶彤　施伯乐
　　摘　要　区间索引是随着对约束数据库的实用化的研究而提出的.文中在Meta_树的基础上提出了DM_树和相应算法，它对区间索引保持了存储为O(n)、查询I/O时间为O(logn+t/B)的性能，在动态调整操作中通过采用软性限制、修改滞后等策略，使插入和删除时间为O(logn)，达到B_树水平，可用于约束数据库中数据的存储和访问.
　　关键词　约束数据库，区间索引结构，Meta_树
　　中图法分类号　TP311.13
DYNAMIC INTERVAL INDEX IN CONSTRAINT DATABASE
WANG Wei, WANG Yu-Jun, WANG Yi-Tong, and SHI Bo-Le
(Department of Computer Science, Fudan University， Shanghai 200433)
　　Abstract　The technique of dynamic interval index is very important in the practice of constraint database. Based on the structure of Meta_tree, DM_tree is given. Its storage is O(n) and query I/O time is O(logn+t/B). To reduce the complex of insert and delete operation, methods of unfixed_constraint and late_update are applied. The complex of the insert and delete I/O time are all O(logn). This result is equal to that of B_tree. It can be used in the storage and query in constraint database.
　　Key words　constraint database，interval index structure，Metatree
1　引言
　　约束数据库的研究是从90年代初开始的［1］，对其表达能力、查询语言、索引及系统实现的研究是近年来数据库方向研究的热点.约束数据库用数学表达式和逻辑表达式描述客观世界中的数据，不仅能描述常规类型数据，对不确定数据、时间数据和空间数据也有很强的描述能力，从而在空间数据库、时间数据库及数据库其它应用领域有广阔的应用前景.
　　约束数据库的基本思想是将关系数据库中的k个属性的元组扩充为k维广义元组，k维广义元组为无量词的k维约束的合取，如将元组(“张三”，26)转换为
name=“张三”∧age=26.
　　在约束数据库系统的设计和实现中，区间数据的查询和管理起着重要的作用，主要原因有
　　(1) 约束数据描述的不确定数据、时间数据和空间数据往往与区间相对应.如某地的降雨量对应区间为(30mm, 50mm)；黄河走当前河道的时间对应一个时间区间.有的数据本身就是随区间变化的，如某河一年中的流量变化如图1.图中a，b和c三段的表达式分别为y=x-1;y=5;2x=-3y+31,它们对应3个区间：(0,4),(4,6),(6,12).
　　(2) 为了提高约束查询的效率，约束在存储时也多记录了各表达式对应的区间，例如文献［2］、［3］中提出的规范化表示――表形结构对约束：A<5∧1<B∧B<7∧C=6∧A<B的规范化表示为表1，表中1和u行是每个变量的上界和下界.建立区间索引后，可缩减搜寻的范围.


图1　某河一年中流量的变化
　　对区间索引技术的研究从80年代开始，现在已有了一些成熟的方法，如一维区间索引结构Interval_树［4］，和可用于二维区间索引的Grid文件、Quad_树、KD_B树、Interval_树、Z_Order和R*_树［4～7］等，它们都成功地应用到空间数据库中，它们的平均查询效率较好，但最坏查询I/O时间为O(n).为了提高约束数据库的实用性，要求对一维区间索引的最坏查询I/O时间和动态调整时间能达到类似B_树的性能.这里对性能的评价是以I/O的次数为单位的［1］.
表1　表形结构对约束A<5∧1<B∧B<7∧C=6∧A<B的规范化

tABC
1-∞16
u576
μ=>?
　<=?
　??=

　　下面首先介绍DM_树的数据结构，然后介绍DM_树的查询算法和动态调整算法，最后介绍DM_树的计算复杂性和与其它方法的比较. 
2　DM_树的数据结构
　　为了提高约束查询的效率，文献［8］对Segment树［5,6］进行了扩充，其存储复杂性为O(nlogBn)，查询I/O时间为O(logBn+t/B).文献［9］、［10］在Priority Search树［6，11］的基础上发展了Meta_树,并对其内部存储和查询机制进行了改进，它的存储为O(n)，查询I/O时间为O(logB　n+t/B)(t为查询结果的个数,B为外存块的大小).但上面这些研究对动态调整都没有给出有效的算法.文中提出了DM_树，DM_树的基本思想是以Meta_树为基础，在保证了Meta_树存储(O(n))和查询I/O时间(O(logBn+t/B))的前提下结合B_树的方法降低其动态调整的复杂，使之达到了B_树的性能(插入和删除的I/O时间为O(logBn)).
　　Meta_树(图2)是二维空间上点的索引结构，其基本思想是将二维空间中的点按其位置存放在一棵树中，方法是将纵坐标最大的B2(B 为每个外存块中区间的个数)个点放在树根结点，剩余的点根据X值以从小到大顺序平均分成B份，对每份按同样的方法形成根结点，并作为树根结点的子结点，然后递归地对该份其它的点进行操作，直到形成整个一棵树.从点的划分方式上可以看出每个结点实际对应二维区间上的一个矩形，所有后代对应的矩形在该点对应矩形的正下方.若对一维区间数据建立索引则将一维区间(a,b)转化为二维空间上的点(a,b)，然后再利用Meta_树对二维空间中的点建立索引，文献［1］对此做了详细的介绍.对Meta_树做动态调整的主要难点是结点分解时无法同时保持每个矩形的物理关系(各矩形的后代均在其正下方)、每个矩形中点的个数(B2个)以及每个结点应对应二维空间中的一个矩形，实际上由于Meta_树中各结点对应的二维空间的点数及子结点的个数是确定的(分别为B2和B)，所以可以讲Meta_树没有考虑动态调整问题.


图2　Meta_树(B=3)
　　DM_树也是对二维空间的点建立的索引结构， DM_树中的结点用一个称为包含点集的域指向每个结点对应的二维空间中的点，其构造方法与Meta_树相似，先取纵坐标最大的点放入根结点的包含点集中，将剩余的点分为0到B份，然后对每一份递归进行同样的操作.为了插入和删除操作的方便，对每个结点包含的点的个数和每个结点的子结点的个数的限制与Meta_树不同，也不像Meta_树那样要求完全用矩形将每个结点对应的点划分开(即允许如图3那样子结点Sm的包含点集中某个点a的纵坐标比其父结点S的包含点集中某个点b的纵坐标大).下面我们将详细介绍DM_树构造上的限制.当处理一维区间数据时，也是像Meta_树那样将一维区间(a,b)转换成二维点(a,b)，然后再用DM_树进行管理，当处理一维区间时，我们将包含点集改称为包含区间集.下面我们将主要讨论利用DM_树存储和管理一维区间的方法.


图　3
　　首先我们给出一些定义.
　　定义1. 对一个一维区间(a,b)，我们简称b为区间的尾.
　　定义2. DM_树中结点的包含区间集中区间的个数称为结点的容量.
　　定义3. DM_树中结点的包含区间集中某个子结点A的上部的区间的集合称为子结点A的上部区间集.图4 中的阴影部分就是结点A的子结点A′的上部包含区间集.结点A的上部区间集中区间的个数称为结点A的上部容量.某个结点的上部容量小于B/2的子结点称为上部不满结点.
　　定义4. 对结点A，其子结点的上部容量为a1,a2,…,an,设其兄弟为B，C，其子结点的上部容量分别为b1,b2,…,bm，c1,c2,…,cl的子结点数为，将a1,a2,…,an和b1,b2,…,bm在一起排序，设从大到小的第B+1个为ab，将a1,a2,…,an和c1,c2,…,cl在一起排序，设从大到小的第B+1个为ac，ab和ac中容量小的为A的临界容量.
　　下面给出DM_树的构造的具体限制：
　　(1) 最高限制.若某个结点共有A个子结点，其中m个子结点为上部不满结点，它们的上部容量为：r1,r2,…, rm,设其子结点的临界容量的最小的A/2个为s1,s2,…, sA/2,每个包含点集中原则上一维区间的最大个数为(A-m-1)×B+r1+r2+…+rm和(A/2-1)×B+s1+s2+…+sA/2中小的那个.通过最高限制和上部容量对矩形中区间的分布进行控制，防止在动态调整中向上或向下借点时发生不平衡的现象.
　　(2) 最低限制.DM_树中结点的每个区间集中最少有(A×B)/2个一维区间，其中A为该结点的子结点的个数.
　　(3) 结点限制.每个结点有0到B个子结点，且两个相邻结点的子结点和大于B.DM_树的根结点可以有不超过B个子结点.可见Meta_树是DM_树的特例.
　　DM_树中子结点对应的区间在父结点的包含区间集之下(图4).但由于包含区间集中区间分布的不均匀性，动态调整中构造限制常被破坏(主要是每个包含区间集中最少有A×B/2个一维区间这一限制)为了提高动态调整的性能，DM_树中采用了3种策略：


图4　Meta_树(B=4)
　　(1) 软性限制.即对包含区间集中区间的数量限制可以被暂时违反；
　　(2) 调整滞后.包含区间集中区间的数量限制被违反后，不立即进行调整，后面的调整操作将使之恢复到满足限制的状态；
　　(3) 记录平衡关系.DM_树中每个结点中都存在一个结构称为平衡关系，它记录了该结点是否遵守构成限制，及不遵守的情况.调整算法根据平衡关系将DM_树向遵守原则的方向转化(结构的具体定义见第4部分).
　　DM_树中每个结点的包含区间集中区间的存放方法可参考文献［9］中的横向结构和纵向结构.为提高查询效率，有平衡关系的结点的包含区间集可存放在一起.
3　查询算法
　　有关区间的查询操作有3种：
　　(1) 包含点查询.查询包含某一点的区间集合，其查询结果对应图5中折线Q1左上部分(Q1的折点在y=x线上)；


图5　Meta_树(B=3)
　　(2) 包含区间查询.查询包含某一区间的区间集合，其查询结果对应图5中折线Q2左上部分(其中Q2的折点可在二维区间的任意地方)；
　　(3) 相交查询.查询与某一区间相交的区间集合.其查询结果对应图5中折线Q3左上部分.
　　查询算法的主体是一个广度优先搜索算法，有一个候选队列以存储将要查询的结点.
　　算法1. (查询折线Q左上部分的所有点)
　　① 将根结点加入候选队列；
　　② 从候选队列中取出一个结点p；
　　③ 如p与Q的垂直线相交，则根据p的纵向结构，以从左向右的顺序读取；如p与水平线相交，则根据p的横向结构，以从上向下的顺序读取；否则将p中包含区间集中的区间全部读入结果，并将折线范围内或与折线相交的子结点加入候选队列；
　　④ 如候选队列不空则转向②，否则结束.
4　动态调整算法
　　DM_树的动态调整算法是以B_树的动态调整算法为基础，针对DM_树的特殊情况进行了一些改进.在介绍动态调整算法之前我们先介绍一下在算法中用到的有关结构和标志.
　　(1) 平衡关系结构.DM_树结点中有一个平衡关系结构［q,n］ ，q为平衡结点，n为平衡量，其中：n=0表示该结点与其它结点无平衡关系；n<0表示该结点的包含区间集中的区间数小于最低限制，少的结点数在结点q的包含区间集中，少的个数为n；n>0表示该结点的包含区间集中的区间数大于最高限制，多的结点在结点q的包含区间集中，多的个数为n.
　　(2) 可插入标志.从根到被插入结点的搜索路径中某结点的包含区间集不到最高限制.则可插入标志为真，表示用户插入的点可转嫁到这里.
　　(3) 可删除标志.从根到被删除结点的搜索路径中某结点的容量超过最低限制且路径中该结点下没有结点的上部容量为空，则可将删除标志设为真，表示用户删除的点可转嫁到这里.
4.1　插入算法
　　DM_树的插入操作由两步构成：第一步是找到被插入区间所在的结点；第二步是执行具体的插入操作及后续的分解操作.算法如下.
　　算法2. 向DM_树中插入区间(a,b)
　　(1) 从DM_树的根开始向下搜索，找到包含点(a,b)的结点p，在搜索过程中判断该结点是否可插入(即包含区间集的容量小于最高限制)，是则将可插入标志设为真.
　　(2) 如果p的容量小于最高限制，则对p的平衡结构［q,n］做如下处理：
　　① 如n＞0，则将区间(a,b)插入p的包含区间集中，对q调用插入平衡算法，并调整p和q的平衡关系(将它们的平衡量均减1，如减到0则撤消两点间的平衡关系).转向④；
　　② 如n＜0，则将区间(a,b)插入p的包含区间集中，如q的容量大于最高限制，则对q执行删除平衡算法.并调整p和q的平衡关系(将它们的平衡量均减1，如减到0则撤消两点间的平衡关系).转向④；
　　③ 如n=0，则将区间(a,b)插入p的包含区间集中；
　　④ 如p的父结点s的平衡量大于0，则对s的平衡点执行插入平衡算法，如s的容量大于最高限制，则对s执行删除平衡算法，调整它们的平衡关系，算法结束.
　　(3) 如果可插入标志为真且p的容量等于或大于最高限制.则将(a,b)加入p的包含区间集中.
　　① 将p中尾值最大的区间充入其父结点，将父结点赋给p；如果p的容量等于或大于最高限制，则转向①；
　　② 如p的平衡量小于0，则对p的平衡点调用删除平衡算法，调整它们的平衡关系.如p的平衡量大于0，则对p的平衡点调用插入平衡算法，调整它们的平衡关系.如p的父结点的平衡量大于0，则对p的父结点的平衡点调用插入平衡算法，调整它们的平衡关系.算法结束.
　　(4) 如果可插入标志为假且p的容量大于或等于最高限制.则将(a,b)加入p的包含区间集中.如p的父结点的平衡量大于0，则对p的父结点的平衡点调用插入平衡算法，调整它们的平衡关系.对p调用删除平衡算法.算法结束.
4.2　删除算法
　　DM_树的删除操作由两步构成：第一步是找到被删除的区间所在的结点；第二步是执行具体的删除操作及后续的合并操作.算法如下.
　　算法3. 从DM_树中删除区间(a,b).
　　(1) 若DM_树的根root的包含区间集中包含区间(a,b)，则转向(3)，否则若root的容量大于最低限制，则将可删除标志设为真，将在x轴上的投影包含a的子结点赋给p，如p的上部容量为0，则将可删除标志设为假；
　　(2) 如p的包含区间集中包含区间(a,b)，则转向(3)；否则若p的容量大于最低限制，则将可删除标志设为真，将在x轴上的投影包含a的子结点赋给p，如p的上部容量为0，则将可删除标志设为假.转向(2)；
　　(3) 如p的容量大于最低限制，则对p的平衡结构［q,n］；
　　① 如n＜0，将(a,b)从p的包含区间集中删除.对p运行插入平衡算法.如p的父结点t的容量大于最高限制，则对t运行删除平衡算法，对t的平衡点运行插入平衡算法，调整它们的平衡关系.转向(6)；
　　② 如n＞0，将(a,b)从p的包含区间集中删除，对q运行插入平衡算法，调整p与q的平衡量.如p的父结点t的容量大于最高限制，则对t运行删除平衡算法，对t的平衡点运行插入平衡算法，调整它们的平衡关系.转向(6).
　　③ 如p的平衡量等于0，将(a,b)从p的包含区间集中删除，转向(6)；
　　(4) 如果可删除标志为真，且p的容量等于或小于最低限制，则将(a,b)从p的包含区间集中删除，将其父结点中尾值最小的区间充入p，将p的父结点赋予p，重复执行直到容量大于最低限制的结点.这时如p的父结点的容量大于最高限制，则对它运行删除平衡算法.转向(6)；
　　(5) 如果可删除标志为假且p的容量等于或小于最低限制，则将(a,b)从包含区间集中删除，对p执行插入平衡算法；
　　(6) 如被删除区间的结点或删除转嫁到的结点出现包含区间集不均衡(即包含区间集中区间的尾值大于某个值c的区间数至少为上部区间中的最小尾值大于某个值c的子结点数的B/2倍)，则对该结点执行插入调整算法和删除调整算法进行调整.　　
　　算法4. 合并算法(将结点r与s合并)
　　(1) 将r和s的包含区间集合并在一起；
　　(2) 将两个结点的子结点合并在一起，并修改平衡关系结构.
　　算法5. 插入平衡算法
　　输入：DM_树中一个结点p；
　　(1) 将p的子结点q的包含区间集中尾值最大的区间(设属于q)加入父结点中，如q的容量大于最低限制，则算法结束，如q为叶结点，则转向(2)，将q赋给p，转向(1)；
　　(2) 如果p的容量大于或等于B2/2，则算法结束，否则对p，p的兄弟和p的父结点进行重组将其分为一个父结点和―1个子结点，如p的父结点的子结点数与其兄弟的相加小于B，则转向(3)，否则算法结束.
　　(3) 如p的父结点r与兄弟s的子结点和小于B，则r和s合并(调用合并算法)，p赋上新结点的父结点，转向(3).否则算法结束.
　　算法6. 删除平衡算法
　　输入：DM_树中一个结点p.
　　(1) 如果p为叶结点，则转向(2).将p的上部满的子结点的上部区间中尾值最小的区间充入其子结点，将该子结点赋给p；如果p的容量等于或大于最高限制，则转向(1).否则算法结束；
　　(2) 如p，p的兄弟和p的父结点的容量和小于B3+B2，算法结束；
　　(3) 否则将p的父结点一分为二，插入区间，将p的父结点赋给p；
　　(4) 如p与其某一兄弟共有小于2B个兄弟，则算法结束，否则将子结点数大于B的结点r的包含区间集和子结点一分为二，将r分成两个结点，同时计算两个结点的包含区间集，如一个结点的包含区间集中区间数多于最高限制，则在平衡关系表中指明该结点和另一结点的平衡关系(设定平衡点和平衡量).将p赋上r的父结点，转向(4).
5　性能分析
5.1　算法复杂性分析
　　定理1. DM树的存储空间为O(n/B)，且DM_树总共有O(logBn)层.(n为二维区间的个数).
　　证明. 每个区间在DM_树中只存储一次，由文献［9］中的存储结构可得其存储空间为O(n/B).
　　DM树与B_树相同每个结点至少有B/2个子结点，每个结点至少由 A×B/2个区间，所以DM_树总共有O(logBn)层.
　　在算法6的步骤(3)中将结点一分为二时，虽然会产生不平衡的现象，即结点的容量大于最高限制或小于最低限制，但两个结点的和是满足最低和最高限制的.而且产生不平衡结点对后，在以后的每次插入和删除操作执行时，均保证有平衡关系的结点的容量总和不变，而且向满足限制的方向转化.
证毕.
　　定理2. 在对一个结点进行分解时该结点与任何结点均无平衡关系.
　　证明. 结点间的平衡关系只有某个结点在执行插入操作中进行分解时才会产生.
　　某个结点在分解之前要求为：该结点有B个子结点，分解后其容量最多和原来一样，最少为0，如容量为0则每次向其满的子结点增加新的区间都会向该结点增加区间，所以当它再次分解时其容量早已达到正常水平，从而消除了平衡关系.而且产生不平衡结点对后，在以后的每次插入和删除操作执行时，对平衡量大于0的结点，在算法中是不会向其中加点的，同时将平衡量减1，由于平衡量是不会大于在该结点分解之前在当前结点及其子结点中插入的区间数，所以在其平衡点再次分解时平衡关系早已结束.所以定理得证.
证毕.
　　推论1. DM_树中每个结点只与一个结点有平衡关系，而且相邻.
　　证明. 由插入算法可得一个结点只有在分解时才产生和它有关的新的平衡关系，而且一个结点在分解时与其它结点已无平衡关系，所以DM_树中每个结点只与一个结点有平衡关系.由于两个结点之间除了分解操作是无法生成新的结点，所以一对有平衡关系的结点之间是不会出现新的结点的，所以一对有平衡关系的结点总是相邻的.
证毕.
　　由推论1和定理2可以看到软性限制、滞后调整和记录平衡关系相结合可保证在动态调整的过程中对限制的违反只是存在于相邻两个结点之间.因此可以通过插入和删除操作对平衡关系的处理将其调整成正常状态，同时由于查询算法是宽度优先扫描，所以两个相邻的结点间有平衡关系时，并不影响查询的效率.
　　定理3. 查询I/O时间为logBn+t/B.(n为二维区间的个数，t为查询结果的个数).
　　证明. 从DM_树上的查询方法上可以看到查询结果所在的包含区间集共有3种可能：
　　(1) 完全包含在折线内且子结点与折线的水平部分不相交：每层结点的包含区间集中区间的个数至少为A×B/2，(以一次读取B2个计算［1］)，所以读取这部分区间所需访问外存的次数为O(t/B)次；
　　(2) 与折线的垂线部分相交，从定理1中可看到DM_树总共有O(logBn)层，由纵向结构的特点可以看到，每层只有一个块中的区间不全满足查询条件，所以读取这部分结果所需访问外存的次数为O(logBn).
　　(3) 与折线的水平线部分相交或子结点与折线的水平部分相交，由横向结构的特点可以看到，每个结点只有一个块中的区间不全满足查询条件，从本文第2部分可知DM_树中每个结点有A个子结点，每个结点的包含区间集中区间的个数至少为A×B/2(至少两个相邻结点的和是满足这一结论的)，设某结点与折线水平部分相交的子结点有A个.这A+1次外存访问至少读取A×B/2个区间，所以以一次读取消耗在该部分的外存访问次数为O(t/B).动态调整中删除操作有可能造成查询结果中区间的数量小于独到的块数的B/2倍，但第6步中的调整操作保证了这个比例.
　　所以查询I/O时间为O(logBn+t/B).
证毕.
　　定理3与文献［1］中对Meta_树的查询操作复杂性的分析是相似的.
　　定理4. DM_树的调整算法中插入和删除操作I/O时间是O(logB　n).
　　证明. DM_树上的插入操作在第1步从根向叶的插入过程的最高时间复杂性为O(logBn)，因为只访问了O(logBn)层，且每个结点的操作的时间复杂性为常数.叶结点上的调整过程只是在一个结点下进行的，其复杂性可认为是常数.由于每个平衡算法执行的时间复杂性为O(logBn)，而整个插入操作中只执行有限次平衡算法，所以整个插入的时间复杂性为O(logBn).
　　DM_树上的删除操作在1步从根向叶的删除过程的最高I/O时间为O(logBn)，因为只访问了O(logBn)层，且每个结点的操作的时间复杂性为常数.叶结点上的调整过程只是在一个结点下进行的，其复杂性可认为是常数.由于每个平衡算法执行的时间复杂性为O(logBn)，而整个删除操作中只执行有限次平衡算法，第6步只对包含区间集中删除了区间的结点和区间转嫁的结点使用，所以也只执行一次，所以整个插入的时间复杂性为O(logBn).
证毕.
　　最高限制和临界容量的设定用于在父子结点间进行区间交换时保持包含区间集中区间的平衡.避免出现图6中S结点中S1和S2这种所含区间的尾值较大的子结点上面的部分所含的区间数较少，而Sm和Sm-1这种所含区间的尾值较大的子结点上面的部分所含的区间数较多.这样将影响查询操作的效率.删除算法的第6步和插入算法的第3步对这一点进行控制.


图　6
5.2　比较
　　下面将DM_树与其他的几种区间索引方法作一下比较，见表2.
表　2

名称存储效率查询I/O时间插入I/O时间删除I/O时间
Interval_树O(n/B)O(logBn+t/B)　　
Segment_树O(nlogBn/B)O(logBn+t/B)　　
Meta_树O(n/B)O(logBn+t/B)O(log2Bn)　
DM_树O(n/B)O(logBn+t/B)O(logBn)O(logBn)

　　从上表可以看出DM_树的存储、查询、插入和删除效率达到最优，所以DM_树的综合效率是较好的. 
6　总结
　　文中提出了一个DM_树，可用于约束数据库中数据的存储和访问，它在一维区间索引的存储、查询和动态调整方面有较好综合性能，基本达到B_树的性能.以后还将对如何进一步提高性能以及进行多维区间的索引需要进一步的研究.
本课题得到国家自然科学基金资助.
作者简介：王轶彤，女，1973年生，博士生，主要研究方向为数据库和半结构化数据处理.
　　　　　施伯乐，男，1935年生，复旦大学首席教授，博士生导师，主要研究方向为数据库、知识库和数据仓库等.
作者单位：复旦大学计算机科学系　上海　200433
参考文献
　1　　Kanellakis P et al. Constraint query language. Journal of Computer Science and System，1995, 51
　2　　Goldin D Q, Kanellakis P. Constraint query algebra. To appear in Constraints Journal 1st issue 1996
　3　　王宇君.约束数据库：模式设计、代数查询语言及索引［博士论文］. 复旦大学. 上海， 1996
　　　(Wang Yujun，Constraint database: Scheme design, algebra query language and indexing ［Ph D dissertation］(in Chinese). Fudan University, Shanghai, 1996)
　4　　Edelsbruner H. A new approach to rectangle intersections (Part I). Internet Journal of Computer, 1983
　5　　Guting R H. Spatial database systems，Very Large Database '95
　6　　Samet H. The Design and Analysis of Spatial Data Structure. Reading, MA: Addison-Wesley, 1989
　7　　Samet H. Application of Spatial Data Structure. Reading, MA: Addison-Wesley, 1989
　8　　Blankenagel G, Guting R H. External segment tree. Algorithmica, 1994, 12: 498～532
　9　　Kanellakis P et al. Indexing for data models with constraints and classes, Principle of Database '93. Washington: ACM Press, 1993. 25～28
　10　　Ramaswamy S, Subramanian S. Path caching: A technique for optimal external searching. Principle of DataBase '94. Minneapolis: ACM Press, 1994. 24～26
　11　　Mccreight E M. Priority search trees, SIAM Journal of Computer, 1985, 14(2): 257～276
原稿收到日期：1998-10-06；
修改稿收到日期：1999-03-08.
