リレーショナルデータベース上のツリーのようなデータを適切かつ効率的に表現するためにモデルを構築する方法は?

dba.stackexchange https://dba.stackexchange.com/questions/62

質問

に基づく SQLを使用したリレーショナルデータベース内のツリーのようなデータを通過します 質問、私は、物理的な意味を考慮して、リレーショナルデータベースの木のようなデータをどのように説明するために定期的に使用したかを知りたいですか?

RDBMSには、通常のSQL ANSIまたは一般的な利用可能な機能以外の処理に特別な機能がないと思います。

疑わしいことに、私は常にmysqlとpostgresql、そして最終的にはsqliteに興味があります。

役に立ちましたか?

解決

彼はバイナリツリーのようなものを求めていると思います。同じテーブルの一意のIDに結び付けられた3つのキー、左用、もう1つは右の子供用、もう1つは親用の3つのキーを含めます。

ie-(非常に多くの擬似コード)

TABLE tree
int         id                  autoinc
varchar(16) data_you_care_about
int         parent_id
int         left_child_id
int         right_child_id

FOREIGN KEY parent_id = tree.id
FOREIGN KEY left_child_id = tree.id
FOREIGN KEY right_child_id = tree.id

他のヒント

各ノードがまったく同じデータエンティティである場合、パラダイムはエンティティごとに1つのテーブルと、各ノードが1回しかリンクされていないツリートラバーサルのリンク列を意味します。

ツリー内の複数のポイントにリンクされているエンティティの場合、個別のリンクテーブルまたは複数の異なる値列が使用されます。

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