ツリー構造を格納するモデルとは何ですか?またその特徴は何ですか?

StackOverflow https://stackoverflow.com/questions/27850

  •  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 このような文字列でも大丈夫です。

@ラセブク: この記事 アプローチについて詳しく説明し、コード スニペットを提供します。

お役に立てれば。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top