階層リストをデータベースに保存する
日付 | 2006/09/18 |
---|---|
ID | 06-005 |
バージョン | 2004 |
プラットフォーム | Mac & Win |
階層リストをテーブルレコードに変換したい場合、どうすればよいでしょうか。
- 元の階層リスト -
- 階層リストのツリー構造をデータベースに置き換えた例 -
このような場合、特定のノードにアクセスするためには、再帰的なアルゴリズムを使用し、階層構造をシーケンシャルに解析しなくてはなりません。それよりも簡潔で効率的な方法、つまり親要素のIDを使用する代わりに、ふたつのフィールド、左境界および右境界を使用し、階層リストを次のような形式に変換するという方法もあります :
- 階層リストのツリー構造を整理した例 -
これをデータベースに置き換えると次のようになります。
- 整理した階層リストをデータベースに置き換えた例
このような場合、特定のノードにアクセスするには、単純な検索を実行するだけで済みます。ノード「周辺機器」のすべての要素を選択するには:
QUERY([Table1];[Table1]左の境界>=3;*)
QUERY ([Table1]; & [Table1]右の境界<=10)
サブリストのリファレンスではない要素をすべて選択するには:
QUERY BY FORMULA([Table1];[Table1]左の境界+1=[Table1]右の境界)