CREATE TABLE table_a (
id INTEGER,
table_b_id INTEGER FOREIGN KEY REFERENCES table_b(id),
table_c_id INTEGER FOREIGN KEY REFERENCES table_c(id),
);
CREATE TABLE table_b (
id INTEGER,
table_d_id INTEGER FOREIGN KEY REFERENCES table_d(id),
);
CREATE TABLE table_c (
id INTEGER,
table_d_id INTEGER FOREIGN KEY REFERENCES table_d(id),
);
CREATE TABLE table_d (
id INTEGER,
);
table_bとtable_cはお互い関連はないのですが、共にtable_dを参照しています。
また、table_aに所属するtable_bとtable_cのtable_d_idは必ず同じ値になります。
このようなテーブルはどのように正規化、もしくは設計変更すればよろしいでしょうか?
この情報を見る限りでは、十分に正規化されてますね。やるとすれば非正規化でしょう。
もしくはA->Dのリレーションがあるということなので、そのテーブルを追加するか。
いずれにせよ用件によりますね。今のままで何か問題があるんですか?
外部参照が全て1対nの関係であれば、これ以上正規化はできないです。
やりたい事はは上の回答に対する返答なのですが、
たしかに全て1対nの関係なので難しいですよね……
気分の問題かもしれませんが、table_bとtable_cのtable_d_idが異なる可能性を排除したいんです。