次の依存関係を持つテーブルがあるとします。
(Name、BoughtFrom、TimeBought)->コスト
太字の3つの属性は、テーブルの複合主キーを形成します。次に、別のテーブルからこのテーブルにリンク(関係を形成)したいと思います。それ、どうやったら出来るの? ID列があれば何をすべきかはわかりますが、このようなシナリオに遭遇したことはありません。
3つの列をすべて追加する必要がありますか(Name, BoughtFrom, TimeBought)
他のテーブルへ?それとも別の方法がありますか?
はい、3つの列をすべて追加します。両方のテーブルで同じ名前を持っていると仮定すると、次のようなものを使用します
foreign key (Name, BoughtFrom, TimeBought)
references the_other_table_name (Name, BoughtFrom, TimeBought)
サロゲートID番号を使用する場合でも、{Name、BoughtFrom、TimeBought}に一意の制約が必要です。あなたはこれらの線に沿った何かでそれを行うことができます。
create table your_table (
your_id_number integer primary key,
Name ... ,
BoughtFrom ... ,
TimeBought ... ,
unique (Name, BoughtFrom, TimeBought)
);
サロゲートキーはhaveをID番号にすることはできません。 anyである必要はありません。しかし、自動的に増加するID番号が最も一般的です。
サロゲートは代わりになるを意味します。 ID番号のような代理キーは、自然キーの代わりになります。代理母のようなものは、自然の母の代わりをします。