リレーショナルデータベース設計では、問題を引き起こす1つ(またはそれ以上)の「循環グラフ」について心配する必要がありますか?リレーショナルデータベース設計 - 「循環」グラフ
(簡体字)、例えば、テーブル
T1(T1_Id、...)
T2(T2_Id、T1_Id_Fk、...)
T3(T1_Id_Fk、T2_Id_Fk、.. )
主キーは太字です。
T1の行には2つの役割があります。 T1行r1はT2の行r2との関係T3にあることができますが、T2の(おそらく同じ)行r2 'の親行でもあります。これらの2つの関係は直交しています。
私はこのような何かを思い付いた:
T1_Base(T1_Id、...)
T1_Child1(T1_C1_Id、...)
T1_Child2(T1_C2_Id、...)
T2(T2_Id、T1_C1_Id_Fk、...)
T3(T1_C2_Id_Fk、T2_Id_Fk、...)
ここでは、Relational database design cycleで説明されている可能性のあるカスケード問題のいくつかを解消するために、それぞれT1_BaseとT1_Child1およびT1_Child2の間に1対1の関係がありますが、まだ周期があります。
すべてのFKがON CASCADE NO ACTIONで定義されている状況でこれについて心配する必要がありますか?
これらのデザインにはどのようなサイクルがあると思いますか? – philipxy
@cloud元のテーブルにはサイクルがありません。関数の依存関係と外部キー制約はどちらも指向性ですが、どちらのセットもあなたのケースではサイクルを形成しません。また、リレーショナルデータベースでは、行を他の行(これは古いネットワークデータモデル)に関連付けるのではなく、値やドメインを関連付けることに注意してください。だからこそ表が関係を表していると言えます。 – reaanb
FKは複数の列を持つことができます。あなたはあなたのFKが何であるかを明確にしません。あなたの質問を編集してください。何を参照しているかについてDDLのようなステートメントを与えるだけの方がいいです。 (他のチェーンの連鎖の結果である直接参照を宣言する必要はありませんが)ここでPS "orthogonal"は不明です。あなたが意味することを書き留めてください。 – philipxy