2008-08-26 4 views
5

これまでは、ツリー構造をデータベースに格納するためのモデルとして、隣接リスト、入れ子セット、ネストされた間隔が発生しました。私は十分にこれらを知っていて、1つから別のものに木を移行しました。ツリー構造を格納するモデルとその特性は何ですか?

その他の人気モデルは何ですか?その特性は何ですか?このトピックに関する良い資料(書籍、ウェブなど)は何ですか?

私はdbストレージを探しているだけでなく、一般的な知識を広げたいと思っています。たとえば、ネストされたセット/インターバルは、リレーショナルデータベースの格納に特に好都合であり、実際には badの他のコンテキストでの選択ですか?

答えて

1

SQL for Smartiesの28-30章です。

(私はそんなにこの本をお勧めしてきた私はCelkoが私に今では印税を負う把握!)

2

バリエーションは、直接的な階層表現(ノード内の親リンク)を使用するだけでなく、パス値も保存する場所です。

ie。以下からなるディレクトリツリーのために:

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* 

パスがインデックス化され、そしてあなたはすぐにノードをピックアップクエリを実行できるようになりますと、そのすべての次のノードを持っているでしょう子供たちは、範囲を操作する必要はありません。

ie。 \ Tempとそのすべての子:C見つけること

WHERE Path LIKE '*1*2*%' 

をこの表現は、私は、このような文字列でIDのを格納することはOKです考えることができる唯一の場所です。

+0

これは隣接リストとマテリアライズドパスのハイブリッドでしょうか?どのシナリオを使用するのですか? 1つのクエリを持つすべての子どもを取得する方がネストされたセット/インターバルでうまくやると思われます。また、隣接リストも保存したいと思っていませんか? –

0

@lassevk:This articleより詳細にあなたのアプローチについての講演やコードスニペットを提供します。

これが役に立ちます。