Tips

階層リストをデータベースに保存する

日付2006/09/18
ID06-005
バージョン2004
プラットフォームMac & Win

階層リストをテーブルレコードに変換したい場合、どうすればよいでしょうか。

- 元の階層リスト -



- 階層リストのツリー構造をデータベースに置き換えた例 -



このような場合、特定のノードにアクセスするためには、再帰的なアルゴリズムを使用し、階層構造をシーケンシャルに解析しなくてはなりません。それよりも簡潔で効率的な方法、つまり親要素のIDを使用する代わりに、ふたつのフィールド、左境界および右境界を使用し、階層リストを次のような形式に変換するという方法もあります :

- 階層リストのツリー構造を整理した例 -



これをデータベースに置き換えると次のようになります。

- 整理した階層リストをデータベースに置き換えた例



このような場合、特定のノードにアクセスするには、単純な検索を実行するだけで済みます。ノード「周辺機器」のすべての要素を選択するには:

QUERY([Table1];[Table1]左の境界>=3;*)
QUERY ([Table1]; & [Table1]右の境界<=10)

サブリストのリファレンスではない要素をすべて選択するには:

QUERY BY FORMULA([Table1];[Table1]左の境界+1=[Table1]右の境界)