DBデータベーススペシャリスト試験 午前Ⅱ
平成29年度春期 データベーススペシャリスト 午前Ⅱ 問11
問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。
問題

選択肢
- アPRIMARY KEY(PCID,スロット番号),
- イPRIMARY KEY(PCID,スロット番号,メモリカードID),
- ウPRIMARY KEY(PCID,スロット番号), UNIQUE(メモリカードID),
- エPRIMARY KEY(スロット番号,メモリカードID), UNIQUE(PCID),
解き方のヒントを見る
制約とキーの役割を見分ける視点
表の設計を読むときは、各制約やキーがどの列の組合せに関わり、行の識別と表同士の結び付きをどのように整理するものかを、用語の役割ごとに確認していきましょう。
この問題で問われていること
一意性を保証する仕組みと、別の表との対応を表す仕組みを混同しないよう、設問中の列・列の組合せ・参照先の関係を対応付けて読み、それぞれが何を保証する話かを切り分けます。
視点
制約とキーを読む際は、まず対象となる表と列の範囲を区切り、次に重複の扱いと別表との対応という観点を分けて整理します。どの関係を説明している用語なのかを確認すると、条件同士の役割を比較しやすくなります。
確認ポイント
- 対象となる表と列の範囲を整理する
- 行の識別に関わる条件か確認する
- 別表との対応関係に関わる条件か確認する
正解と解説を見る
正解
ウ
解説
PCは二つのスロットを持つため、取付け表ではPCごとにスロット番号を重複させられない。一方、各メモリカードは一つの取付けにしか対応できないため、メモリカードIDも表全体で一意にする必要がある。
理由
主キーをPCIDとスロット番号の組合せにすると、同じPCの同じスロットに複数の取付けを登録できない。さらにメモリカードIDをUNIQUEにすると、同じカードを複数の取付けへ登録できない。これは図の多重度と整合する。
比較
主キーにメモリカードIDを含めるだけでは、PCIDとスロット番号が同じでもカードIDが異なる行を許してしまう。また、PCIDだけをUNIQUEにすると、1台のPCにつき1行しか登録できず、二つのスロットを表せない。
選択肢ア
これは不正解だよ。PRIMARY KEY(PCID,スロット番号)によって、同じPCの同じスロットへの重複登録は防げる。しかし、メモリカードIDに一意性の制約がないため、同じメモリカードを異なるPCや異なるスロットへ複数回登録でき、図のメモリカード側の多重度を満たせない。
選択肢イ
これは不正解だよ。三つの列を主キーにすると、PCID、スロット番号、メモリカードIDの組合せは一意になる。しかし、同じPCの同じスロットに異なるメモリカードIDを登録する行は許されるため、一つのスロットに対して複数の取付けが存在できてしまう。
選択肢ウ(正解)
これは正解だよ。PRIMARY KEY(PCID,スロット番号)により、1台のPCにおける各スロットの取付けを一つに制限できる。UNIQUE(メモリカードID)により、一つのメモリカードが複数の取付けに現れることも防げる。二つの制約が図の多重度に対応している。
選択肢エ
これは不正解だよ。PRIMARY KEY(スロット番号,メモリカードID)ではPCIDが主キーに含まれないため、同じPCの同じスロットに異なるカードを登録できる。また、UNIQUE(PCID)は1台のPCを1行に制限し、メモリカードID単独の一意性も保証しない。
学習のポイント
UMLの多重度を、主キーとUNIQUE制約へ変換する考え方を学ぶ。
出典:独立行政法人 情報処理推進機構(IPA)平成29年度春期 データベーススペシャリスト試験 午前Ⅱ 問11(公式資料:問題冊子(PDF) / 解答例)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針