<1>一个具有树状结构的实体在数据库里如何保存?

1、层次码

实体编码采取层次码的结构,如

ID    Name

01   A

0101  B

010101 D

010102 E

0102  C

010201 F

优点:查询方便。在已知编码规则的情况下,查询一个节点的父子节点是很容易的。

缺点:“移枝”困难。如把B及B的子节点移到C下,必须必须改变B及B的子节点的编码。

2、父节点字段

增加一个字段表示该节点的父节点,如:

ID    Name    ParentID

1     A          0

2     B          1

3     C          1

4     D          2

5     E          2

6     F          3

优点:  “移枝”容易,改变树的形状容易。

缺点:查询某节点的子树复杂。

<2>当树状结构的组成节点是不同实体如何存储?

如:产品由部件和零件组成。他们是不同的实体。产品树该如何存储?

装配模式:有实体表和装配结构组成。

如:

实体表:

ID    Name   

1     A         

2     B         

3     C          

4     D         

5     E          

6     F

注:上表的每条记录可能代表不同实体(如可能是零件,也可能是部件,这里将他们放入一张表中)。

装配结构:

ParentID  ChildID  Quantity

1             2          1

1             3          1

2             4          1

2             5          1

3             6          1

注:Quantity(或其他属性)标明该边所具有的属性。

装配结构也可以这样表示:

ID              EntityID  Quantity

01              1

0101          2

010101       4

010102      5

0102          3

010201      6

采用装配模式结构定义数据模型具有结构关系重定义的灵活性。 

 <3>树状结构在程序中的操作

1、展开树

2、修改某一节点的属性

3、在某节点下增加节点

4、移动子树

 

 

 

 

posted on 2009-04-26 22:03  FourInOne  阅读(314)  评论(0编辑  收藏  举报