ツリー構造を格納するモデルとは何ですか?またその特徴は何ですか?
-
09-06-2019 - |
質問
これまでに、ツリー構造をデータベースに格納するためのモデルとして、隣接リスト、ネストされたセット、およびネストされた間隔に遭遇しました。私はこれらのことを十分に知っており、木から木へと移植してきました。
他の人気モデルは何ですか?彼らの特徴は何でしょうか?このトピックに関する優れたリソース (書籍、ウェブなど) は何ですか?
DB ストレージを探しているだけでなく、ツリー全般についての知識を広げたいと考えています。たとえば、ネストされたセット/インターバルはリレーショナル データベース ストレージに特に適していることを理解していますが、実際にそれらは 悪い 他の状況での選択は?
解決
このための重要なリソースは、第 28 章から第 30 章です。 賢い人のための SQL.
(私はこの本をあまりにも勧めたので、今では Celko が私に印税を支払う義務があると思います!)
他のヒント
バリエーションとしては、直接の階層表現を使用する場合があります (つまり、ノード内の親リンク)だけでなく、パス値も保存します。
つまり。以下で構成されるディレクトリ ツリーの場合:
C:\
Temp
Windows
System32
次のノードが存在します。
Key Name Parent Path
1 C: *1*
2 Temp 1 *1*2*
3 Windows 1 *1*3*
4 System32 3 *1*3*4*
パスにはインデックスが付けられており、範囲を操作することなく、ノードとそのすべての子を取得するクエリをすばやく実行できます。
つまり。C: emp とそのすべての子を検索するには:
WHERE Path LIKE '*1*2*%'
この表現は、私が考えることができる唯一の保存場所です。 ID このような文字列でも大丈夫です。
@ラセブク: この記事 アプローチについて詳しく説明し、コード スニペットを提供します。
お役に立てれば。
所属していません StackOverflow