ユーザーとストアの2つのテーブルがあります
ユーザー テーブルの主キーは住所と電話番号の組み合わせです (ユーザーは Web ページから登録しますが、同じユーザーが 2 回登録することは望ましくありません)。userId 列はシリアルですが、主キーではありません
Stores テーブルでは、ownerID の列は users テーブルの userID です - しかし、これは主キーではないため、参照を設定することはできません (シリアルではありますが)。
どうすればこの結果を達成できますか?
ユーザーとストアの2つのテーブルがあります
ユーザー テーブルの主キーは住所と電話番号の組み合わせです (ユーザーは Web ページから登録しますが、同じユーザーが 2 回登録することは望ましくありません)。userId 列はシリアルですが、主キーではありません
Stores テーブルでは、ownerID の列は users テーブルの userID です - しかし、これは主キーではないため、参照を設定することはできません (シリアルではありますが)。
どうすればこの結果を達成できますか?
参照列は主キーである必要はありません。
外部キーは、主キーまたは一意制約の列を参照できます。
これは、次の方法で行うことができます。
CREATE TABLE Users(
address varchar(100),
phone_number varchar(20),
userid serial,
constraint pk primary key (address, phone_number ),
constraint userid_unq unique (userid)
);
create table Stores(
storeid int primary key,
ownerID integer,
constraint b_fk foreign key (ownerID)
references Users(userid)
);