私は1対多の関係のためのSQLデータベーススキーマのための最良のデザインを見つけることを試みています。私のプロジェクトでは、私はnodes
の番号で構成されたobjects
を持っていて、それぞれにroot_node
というオプションの外部キーの参照があるようにしたいと思います。お互いに逆参照を使って1対多の関係に最適なデザインは何ですか?
-- schema A
CREATE TABLE objects (
object_id integer NOT NULL PRIMARY KEY,
root_node integer REFERENCES nodes(node_id),
<some other data>
);
CREATE TABLE nodes (
node_id integer NOT NULL PRIMARY KEY,
object_id integer REFERENCES objects,
<some other data>
);
は、しかし、今、私たちは、私は良いことであることを確認していない互いへの外部キー参照を持つ2つのテーブルがありますので、私の最初のソリューションは、この(わかりやすくするために、私は依存関係の問題をスキップしています)のように見えます。
-- schema B
CREATE TABLE objects (
object_id integer NOT NULL PRIMARY KEY,
<some other data>
);
CREATE TABLE root_nodes (
object_id integer REFERENCES objects PRIMARY KEY,
root_node integer REFERENCES nodes(node_id),
);
CREATE TABLE nodes (
node_id integer NOT NULL PRIMARY KEY,
object_id integer REFERENCES objects,
<some other data>
);
だから私の質問は次のとおりです:両方A
とB
デザインは許容可能であると考えるか、または知られている「最高のがあるので、私は代わりにobjects
テーブル内root_node
を置くこと、それがroot_nodes
として個別に格納されている場合、別のアプローチを検討していますもう一つ上のものを好むでしょうか?もしそうなら、スキーマの方が優れている理由を説明してください。
@AntonínLejsek - はい、ありがとうございます!修正されました。 – Yatima