次の一連のテーブルがありました。
CREATE TABLE sellers (
id integer PRIMARY KEY,
....
);
CREATE TABLE buyers (
id integer PRIMARY KEY,
....
);
CREATE TABLE invoices (
id integer PRIMARY KEY,
number varchar(40),
buyer_id integer REFERENCES buyers(id),
seller_id integer REFERENCES sellers(id),
UNIQUE(seller_id, number),
....
);
UNIQUE 制約は、1 人の売り手が指定された番号の請求書を 1 つしか持てないという制約を強制します。
buyers
主にとの間の多対多の関係として、新しいテーブルを作成したかったのsellers
です。
CREATE TABLE suppliers (
id integer PRIMARY KEY,
buyer_id integer REFERENCES buyers(id),
seller_id integer REFERENCES sellers(id),
....
);
正規化の取り組みとして、次のようinvoices
に参照するように変更したいとsuppliers
思います。
CREATE TABLE invoices (
id integer PRIMARY KEY,
number varchar(40),
supplier_id integer REFERENCES suppliers(id),
....
);
私の質問は次のとおりです: UNIQUE 制約をどのように置き換えることができますか?