d3.js ツリー/樹状図の階層 JSON を構築するために PHP で使用する MySQL クエリがあります。
スキーマと既存のクエリを表示するための Fiddle です。
私は現在、プログラム結果データ O とユニット データ U および開発レベル データ の間に追加のデータ関係 D を追加する方法を検討しています。これらの間には複数のペアがあり、多くの関係があります。 。
#D には、次の図に示すように 3 種類しかありません。
必要なコンセプト マップ:各
U は、各 O の 1 つの D のみに関連しています (明確にするために、1 つの O 分岐のみが示されています)。
したがって、U はD の子孫であり、O の孫である必要があります。同じ U は、他の O ブランチに対して同じタイプの D を持つことも、異なるタイプの D
を持つこともできます。
フィドルでわかるように、O と U の関係は現在、ルックアップ/関係テーブル
program_outcome_unit_lookup
また、ルックアップ テーブルを変更して、
program_outcome_unit_lookup
O -> U
D -> U
これを実現する方法はありますか?
クエリ後の PHP (データベース フィドルではありません...) は次のとおりですが、解決策には関係ない可能性があります。これは本質的にデータベースの問題です。
リーリー 更新
2 つの分岐を含む展開された概念図を表示します: ###
P粉4278776762024-03-30 12:45:05
あなたのモデルは次のようになります: 各 (一意の) タプル (O, U)
には必須の値 D
が割り当てられます。
このモデルを実装するには、D
列を program_outcome_unit_lookup
テーブルに追加します。
リーリー
(program_outcome_fk,unit_fk) を主キーにすることもできますが、いずれにしても一意である必要があります (現在、この制約は適用されていません)。
U は任意の数の
O のメンバーになれますが、要件に従って、「各
U はそれぞれの
U にのみ関連付けられます」
D
たとえば、更新されたチャートから
U1 (
O1-D2-U1 および
O2-D1-U1) を保存するには、値を変更できます。
((1,2,1),(2,1, 1))。必要に応じて、一意の制約に違反するため、
O2-D2-U1
D
の新しいテーブルも追加する必要があります。すべての
O がすべての
D の使用を許可されていない場合 (例:
O2 ブランチが
D1 の使用を許可されていない場合)、さらに 1 つテーブル
(O, D)