DBデータベーススペシャリスト試験 午前Ⅱ

令和6年度秋期 データベーススペシャリスト 午前Ⅱ 問5

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

あるエンティティを関係データベース上に実装しようとしたとき,その主キーが多くの属性から構成される複合キーとなることが分かった。主キーとして扱う属性を少なくして扱いやすくしたい。この対応として,適切なものはどれか。

選択肢

  1. ア
    複合キーを構成する属性のうち,エンティティの性格を最もよく表している一つの属性を主キーとし,残りの属性を外部キー(foreign key)にする。
  2. イ
    複合キーを構成する属性のうち,エンティティの性格を最もよく表している一つの属性を主キーとし,残りの属性を代替キー(alternate key)とする。
  3. ウ
    連番などを値としてとる列を新たに設けて主キーとし,複合キーの代理キー(surrogate key)とする。
  4. エ
    連番などを値としてとる列を新たに設けて主キーとし,複合キーを外部キー(foreign key)にする。
解き方のヒントを見る

複合主キーを見直す設計視点

複合キーの属性数を減らす前に、何を一意に識別する必要があるのか、既存属性の組合せが担う役割と変更後の識別性を確認する。また、関連表との参照や重複防止への影響も同じ観点で捉える。

この問題で問われていること

この問題では、主キーを構成する属性の多さそのものではなく、エンティティを一意に識別する条件を保ったまま、キー設計をどのように扱いやすくするかという設計上の視点に集中することを確認する。

視点

主キー設計では、識別対象の単位、一意性の維持、関連するデータとの結び付き、将来の変更しやすさをまとめて考える。属性数だけに注目せず、キーが担う役割と周辺への影響を整理する。

確認ポイント

  • 識別したいエンティティの単位を確認する
  • 一意性がどの条件で保たれるかを確認する
  • 関連表や重複防止への影響を確認する
正解と解説を見る

正解

ウ

解説

複合キーを構成する属性を一つだけ主キーに変更すると、元の一意性を保てない可能性がある。連番などの新しい列を設けて主キーにする代理キーの方式が、主キーを扱いやすくする適切な対応です。

理由

複合キーの属性数を減らす目的で、既存属性の一つだけを主キーにすると、エンティティを一意に識別できる保証が失われることがある。そこで、連番などを値とする新しい列を追加し、その列を主キーとして利用する。これは元の複合キーに代わる代理キーです。

比較

外部キーは他の関係の主キーなどを参照するための属性であり、代替キーは主キー以外に一意性を保つ候補となるキーです。どちらも、複合キーを簡単な識別子へ置き換えるために新設する主キーそのものではありません。

選択肢ア

これは不正解だよ。複合キーの属性の一つを主キーにし、残りを外部キーにする方法では、残りの属性が他の関係を参照するという意味になってしまう。複合キーが担っていた一意な識別を保つ設計として、単純に外部キーへ変更することは適切ではない。

選択肢イ

これは不正解だよ。複合キーの属性の一つを主キーにし、残りを代替キーにする説明では、元の複合キーを構成する属性の役割を適切に整理できない。代替キーは主キー以外の候補キーを指すもので、扱いやすい新しい主キーを設ける対応とは異なる。

選択肢ウ(正解)

これは正解だよ。連番などを値としてとる列を新たに設け、その列を主キーにすることで、複合キーより少ない属性でエンティティを識別できる。この新しい列は、元の複合キーに代わる代理キー(surrogate key)として扱われる。

選択肢エ

これは不正解だよ。連番などを値としてとる新しい列を主キーにする部分は適切だが、複合キーを外部キーにする部分が不適切である。外部キーは他の関係を参照するための属性であり、元の複合キーを自動的に外部キーへ変更するものではない。

学習のポイント

主キー、外部キー、代替キー、代理キーの役割の違いを整理する。

出典:独立行政法人 情報処理推進機構(IPA)令和6年度秋期 データベーススペシャリスト試験 午前Ⅱ 問5(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針