過去問解きまくり研究所 ホーム

平成29年度 春期 午前Ⅱ 問11

データ操作

主キーに関する問題

PCへのメモリカードの取付け状態を管理するデータモデルを作成した。1台のPCは,スロット番号によって識別されるメモリカードスロットを二つ備える。“取付け”表を定義するSQL文のaに入る適切な制約はどれか。ここで,モデルの表記にはUMLを用いる。

データモデル:

[PC]PCID  1 ──── 0..2  [取付け]スロット番号  0..1 ──── 1  [メモリカード]メモリカードID

〔SQL文〕

CREATE TABLE 取付け (
  PCID INTEGER NOT NULL FOREIGN KEY REFERENCES PC(PCID),
  スロット番号 INTEGER NOT NULL,
  メモリカードID INTEGER NOT NULL
    FOREIGN KEY REFERENCES メモリカード(メモリカードID),
  [          a          ]
  CHECK(スロット番号 IN (1,2))
)
答えと解説を見る

✓ これが正解ウPRIMARY KEY(PCID,スロット番号), UNIQUE(メモリカードID),

解説

スロットを主キーにし、メモリカードIDに一意性制約を付けます。

見分ける軸は、モデルの多重度をどの制約で表すかです。取付けは、PCとスロット番号の組で一つに決まります。1台のPCにはスロットが二つあり、スロット番号はCHECK制約で1か2に限っています。そのため、主キーをPCIDとスロット番号の組にすれば、同じスロットに2枚を登録することを防げます。一方、メモリカードから見た取付けの多重度は0..1で、1枚のメモリカードは高々一つのスロットにしか取り付けられません。これを表すには、メモリカードIDに一意性制約が必要です。主キーとUNIQUEの両方を備えた組合せが、モデルの意味をすべて表しています。多重度の1側ごとに、一意にすべき列を書き出すのが見分け方です。

ほかの選択肢はなぜ違うのか

出典:平成29年度 春期 データベーススペシャリスト試験 午前Ⅱ 問11

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)