PCへのメモリカードの取付け状態を管理するデータモデルを作成した。
1台のPCは、スロット番号によって識別されるメモリカードスロットを二つ備える。
“取付け”表を定義するSQL文のaに入る適切な制約はどれか。
ここで、モデルの表記にはUMLを用いる。
[SQL文]
CREATE TABLE 取付け (
PCID INTEGER NOT NULL FOREIGN KEY REFERENCES PC(PCID)
スロット番号 INTEGER NOT NULL,
メモリカードID INTEGER NOT ALL
FOREIGN KEY REFERENCES メモリカード(メモリカードID),
a
CHECK(スロット番号 IN (1, 2))
)
ア | PRIMARY KEY(PCID, スロット番号), |
イ | PRIMARY KEY(PCID, スロット番号, メモリカードID), |
ウ | PRIMARY KEY(PCID, スロット番号), UNIQUE(メモリカードID), |
エ | PRIMARY KEY(スロット番号, メモリカードID), UNIQUE(PCID) |
答え ウ
【解説】
1台のPCにはメモリカードスロットを2つ備えるので、PRIMARY KRY(主キー)になるのは、PCIDとスロット番号の組になる。
また、主キーでない項目(列)を一意にするためにはUNIQUE制約を使うので、SQL文は
CREATE TABLE 取付け (
PCID INTEGER NOT NULL FOREIGN KEY REFERENCES PC(PCID)
スロット番号 INTEGER NOT NULL,
メモリカードID INTEGER NOT ALL
FOREIGN KEY REFERENCES メモリカード(メモリカードID),
PRIMARY KEY(PCID, スロット番号), UNIQUE(メモリカードID),
CHECK(スロット番号 IN (1, 2))
)
(ウ)になる。
【キーワード】
・主キー