在数据库中建立树型结构的表?十万火急!请大家给予我帮助!!!!!感激不尽!!!!!(100分)

  • 主题发起人 主题发起人 清新
  • 开始时间 开始时间

清新

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在数据库中建立树型结构的表,也既是怎样使数据库中的表表示出树型的结构?

数据库中的字段有指针类型吗?怎样使用?

我用的是access数据库,开发工具是delphi!

十万火急!
 
什么意思呀?
关系数据库不好吗?
 
有一些表结构比较复杂,关系复杂,如果用树型结构(例如二叉树)的话,会比较简单.

你有一点明白了吗?
 
需要两个字段。
其中一个字段作为自身的唯一标识,另外一个字段为所属父节点的唯一标识。
在界面上显示请用DxDBTreeView,(在inprises.com上有下载)
 
刘素杰,你讲的东西给我一点启发,可是太深了,

可否用比较通俗的话语来表达,并且讲的具体一点!

需要用到指针类型吗?/
 
eg.
table1:
field ---->>RootName key //节点的名称
field ---->>id key
field ---->>SubRootCount integer//页的个数
field --->> parentRootId //父亲节点 ==0 那么就是根

table2:其他信息

 
treeview 熟悉么?和treeview相似。
你所谓的数据结构中的指针,在关系型数据库中就用字段值表示就行了,
(:jackliew的例子已经给你了。)
以二叉树为例子:
数据结构中:二叉树的指向left,right的是两个指针。
在转化为数据库的表示就是:在表中,
一个字段代表自己的唯一ID,主键。不为0,不能为空
一个字段rootid表示父节点(longint) 是0,表明是根节点。不为空。
一个代表left节点(longint) 保存的是当前节点下的left节点的ID值。为0则当前节点的
left为空。
一个代表right节点(longint) 保存的是当前节点下的right节点的ID值。为0则当前节点的
right为空。
以interbase 6.0为例子:
create table treeTable ( nID longint NOT NULL,
nParentID longint NOT NULL, //这个就是指针!
nLeftID longint NOT NULL,//这个就是指针!
nRightID longint NOT NULL,//这个就是指针!
....
)


 
同意-->>刘素杰
你可参考一下"用友"的库结构
 
多人接受答案了。
 
这种数据库结构当树节点超过一定限度时,将会出现难以忍受的速度问题,实在是不可取。
 
后退
顶部