[pgsql-jp: 33793] 効率的なSQLについて

shima tetuo mlmlml @ lily.freemail.ne.jp
2004年 8月 4日 (水) 10:58:21 JST


tetuoです。

現在、AとBが繋がって、BがCとDが繋がって、CとEが繋がって、と言うような連
鎖的なネットワークを表現するデータにおいて、Aを起点とした場合、Aは直接的、
間接的に誰と繋がっているかを検索するテーブル構成、SQLを模索しております。

上記例の場合ですと、Aは

A <--> B
B <--> C & D
C <--> E

となるので、B、C、D、Eの何れにも繋がっている事になります。
※このネットワークであればABCDEの何れの起点からでも同じ結果になります。
例:
B はACDEに繋がっている
C はABDEに繋がっている


現在考えているテーブル構成は非常に簡単で、誰が誰と繋がっているかをレコー
ドにしようと考えています。

--------------
table_network
--------------
name | connected_to

下記が上記の例のA起点からのデータとなります。
※BCDEそれぞれの起点用のデータも同じように必要になります。
------
A | B
B | C
B | D
C | E
------


この検索をする場合、まずAが誰に繋がっているかをみて、繋がっていた相手が
誰に繋がっているかをみて、そのまた繋がっている相手の相手をみて・・・と何
度と無くSQLを投げる事になってしまいます。

このようなネットワーク構造を持つデータで、何か効率的な解決方法に心当たり
のある方は、ご連絡頂けると幸いです。




pgsql-jp メーリングリストの案内