階層データのロード
階層の深さが一定でないnレベルの階層は、地理的もしくは組織的軸をデータで表す場合などによく使用されます。
これらの種類の階層は、通常隣接するノード テーブルに保存されます。つまり、テーブルでは、それぞれのレコードはノードと一致し、親ノードへの参照を含む項目を持っています。
NodeID | ParentNodeID | タイトル |
---|---|---|
1 | - | General manager |
2 | 1 | Region manager |
3 | 2 | Branch manager |
4 | 3 | Department manager |
このようなテーブルでは、ノードは 1 つのレコードにのみ保存されますが、子供をいくつでも持つことができます。当然のことながら、テーブルには、ノードの属性が記述された追加項目が含まれている可能性があります。
隣接するノード テーブルは、メンテナンスには役立ちますが、毎日の業務には適していません。そこでクエリと分析では、他の表現を使用します。展開されたノード テーブルは一般的な表現の 1 つで、階層の各レベルは別個の項目に保存されます。展開されたノード テーブルのレベルは、ツリー構造などで容易に使用できます。hierarchy のキーワードをデータ ロード スクリプトで使用すると、隣接するノード テーブルを展開ノード テーブルに変換できます。
NodeID | ParentNodeID | タイトル | Title1 | Title2 | Title4 | Title4 |
---|---|---|---|---|---|---|
1 | - | General manager | General manager | - | - | - |
2 | 1 | Region manager | General manager | Region manager | - | - |
3 | 2 | Branch manager | General manager | Region manager | Branch manager | - |
4 | 3 | Department manager | General manager | Region manager | Branch manager | Department manager |
展開ノード テーブルの問題は、検索や選択を行う際に対象となるレベルを知っておく必要があり、レベル項目を簡単に使用できないという点にあります。この問題を解決する 1 つの表現が先祖テーブルで、ブリッジ テーブルとも呼ばれます。
先祖テーブルには、データで見つかった子供と先祖の関係をすべて記録するレコードが 1 つあり、子供と先祖のキーと名前を含みます。つまり、すべてのレコードは特定のノードがどのノードに属するかを示します。hierarchybelongsto キーワードをデータ ロード スクリプトで使用すると、隣接するノード テーブルを先祖テーブルに変換できます。