平成29年 春期 データベーススペシャリスト 午前II 問11

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))
  )
(ウ)になる。


キーワード
・主キー

キーワードの解説
  • 主キー
    主キーは関係データベース(リレーショナルデータベース、RDB)において、データの組(レコード、行)を識別するのに最もふさわしいデータの項目(列)のことです。
    主キーを使いデータの組を特定します。

もっと、「主キー」について調べてみよう。

戻る 一覧へ 次へ