リレーショナル データベースで次の構造を表す必要があります。A、B、C、Dの5 つの階層レベルがあります。階層レベル間の関係は常に 1 対多であるため、Aには多数のBがありますが、すべてのBは 1 つの特定の Aに属しています。同じことがB、C、D、Eにも当てはまります。これまでのところ、 BはAを外部キーとして持ち、CはBを外部キーとして持ちます。
A 1
/ |
B 1 2
/ | |
C 1 2 3
/| | |
D 1 2 3 4
複雑なのは、Bから下に向かってインスタンスを表現しなければならないことです。1 つの特定のBに対して、多くの異なるインスタンスを持つことができます。すべてのインスタンスのデータは異なりますが、以下のツリー構造は同じです。
MyB
instancefo
と instanceがあるとしましょうba
。fo
とba
は同じ数の子供を持つ必要があり、その子供たちも同じ数の子供を持つ必要があります。あるインスタンスでは、子は別のインスタンスで特定の値を持ちますが、サブツリーの構造は同じです。
多くのBが存在する可能性があるため、多くのサブツリー構造が存在する可能性がありますが、ツリーの深さは常に 4 に制限されます。
A 1
/ | \
B 1 2fo 2ba
/ | | |
C 1 2 3 4
/| | |\ |\
D 1 2 3 4 5 6 7
2fo
子が 1 人で孫が 2 人いる場合は、子が 1 人で孫が 22ba
人いる必要があります。
この構造をリレーショナル データベースにきれいにマッピングするにはどうすればよいですか?
編集
X-Zeros の質問 にコメントよりも詳細に回答する。誰かがノードを C2 に追加してから C3 に追加すると、結果は次のようになります。
A 1--------
/ | |
B 1 2fo 2ba
/ | | |
C 1 2 3---- 4----
/| | |\ | |\ |
D 1 2 3 4 5 9 6 7 10