1

特定の子オブジェクトが異なる型の複数の親を持つ場合があります。たとえば、オブジェクトは、 、、またはオブジェクトfooの 1 つ以上の子である場合があります。さらに、1 つ以上の 、、またはオブジェクトの子であるオブジェクトもあります。これをSQLでモデル化する適切な方法は何ですか?abcbarabc

A) すべての関係の単一のテーブル:

relationship_tbl
parent_id  parent_type  child_id  child_type
---------  -----------  --------  ----------
1          a            5         foo
2          a            6         foo
3          c            7         bar
4          b            7         bar

B) 各親タイプの一意のテーブル:

a_child_tbl
parent_id  child_id  child_type
---------  --------  ----------
1          5         foo
2          6         foo

b_child_tbl
parent_id  child_id  child_type
---------  --------  ----------
4          7         bar

c_child_tbl
parent_id  child_id  child_type
---------  --------  ----------
3          7         bar

C) 各子タイプの一意のテーブル:

foo_parent_tbl
child_id   parent_id    parent_type
---------  -----------  -----------
5          1            a
6          2            a

bar_parent_tbl
child_id   parent_id    parent_type
---------  -----------  -----------
7         3             c
7         4             b

D) 組み合わせごとに固有の表

a_foo_tbl
parent_id  child_id
---------  --------
1          5
2          6

b_bar_tbl
parent_id  child_id
---------  --------
4          7

c_bar_tbl
parent_id  child_id
---------  --------
3          7

E) まだ検討していない他の戦略

Find all the parents of child 7私には、 A がクエリを実行して、またはのような質問に答えるのが最も簡単なように思えますがFind all the children of parent 4、基本的に親子関係の一般的なテーブルを作成しないというアドバイスを読みました。

誰かがこれを行うための最良の方法とその理由に光を当てることができますか? テーブルの行数が数百万行を超えることはないと考えて間違いありません。

4

2 に答える 2