IPA データモデル・E-R/UML・キー — 頻出論点と過去問

頻出論点

1. この分野は何か

現実の業務で扱う顧客や商品、注文などの情報構造を整理して図で表し、それを関係データベースの表と列の定義に落とし込むまでの設計を扱います。図に描かれた1対多や多対多の対応関係は、表の上ではどの列を主キーや外部キーにするか、データの追加や削除でどの操作が参照制約に阻まれるかという具体的な挙動に直結します。

2. 実際の出題のされ方

データベースの基本構造やキーの役割を確認する問題から始まります。ITパスポートでは、関係データベースを構成する要素の包含関係を模式図の空欄補充で問う問題や、表形式でデータを表すモデルを選ばせる問題が出ています。与えられた複数の表や業務条件から主キー・外部キーとして設定すべき列を選ばせる問題、E-R図を作成する目的や条件に合う矢印の向きを選ばせる問題も問われています。

UMLのクラス図やオブジェクト図からデータモデルを読み取る問題が、応用情報技術者の午前と高度試験の午前Iの両方に繰り返し出ています。表の定義に書く削除規則の字句を選ぶ問題も出ています。具体的には、インスタンス間のリンクを描いたオブジェクト図に対応する概念データモデルを選ぶ問題、複数の表の設計案からだけでは集計・抽出できない情報を判定する問題、親テーブルの行を削除した際に子テーブルの対応する行を連動して扱うための削除規則(ON DELETE)の字句を選ぶ問題が出題されています。

業務の条件を表の設計に落とす判断は、データベーススペシャリストの午前IIで深く問われます。1人の従業員が複数のプログラム言語を使える状況を管理するプログラム言語の表の主キーを選ぶ問題や、多くの属性から成る複合主キーを扱いやすくするためのキー設計を選ぶ問題、自己関連を含む組織階層のクラス図を選ぶ問題、主キーと外部キーの下線が付いた複数の表定義からE-R図を逆引きする問題などが出題されています。

外部キーの性質と、参照制約によって拒否される操作の判定は、情報処理安全確保支援士の午前IIで出題されています。システム監査技術者の午前IIには、クラス図に合わせて作ったオブジェクト図の誤りを指摘する問題や、クラス図を表に実装するときの解釈を選ぶ問題があります。

3. 学習のポイント

データモデリングの段階と対象を区別しておくことが土台になります。概念データモデルは、業務でどんな物事を記録し、それらがどう結びつくかを、表の形に直す前の段階で描いたものです。これを特定のデータベースの方式に合わせて表したものが論理データモデルで、関係データベースでは表・行・列の形になります。

各種のキーの定義と、表設計での使い分けを押さえます。

  • 候補キー・主キー・代理キー: どの行をとっても値の組が重ならず、1列でも減らすと重なりが出る列の組が候補キーで、その中から表の代表に選んだものが主キーです。1つの列では一意にならない場合、複数の列を組み合わせて複合主キーとします。代理キー(サロゲートキー)は、業務上の意味を持たない番号などの列を新しく加えて、主キーにしたものです。
  • 外部キーと参照制約: 外部キーは、別の表の行を指すために、その表の候補キーと同じ値を入れておく列です。参照制約(参照整合性制約)により、参照元の外部キーには参照先に存在する値(またはNULL)しか登録できません。そのため、データを追加するときは参照される親の表から先に追加し、削除するときは参照している子の表の行が存在すると原則として拒否されます。削除規則は、参照されている親の行を消すときに子の行をどう扱うかの指定です。子の行も一緒に消すCASCADEと、子の行が残っていれば親を消させないRESTRICTの違いを押さえます。

E-R図やUMLクラス図の多重度と、表への実装の対応関係も重要です。1対多(1対*)の関連を表に実装するときは、「多」側の表に「1」側の表の主キーを参照する外部キーを持たせます。多対多(*対*)の関連は、両方の表の主キーをそれぞれ外部キーとして持ち、それらの組合せなどを主キーとする連関エンティティ(明細や履歴などの交差テーブル)を間に設けて、2つの1対多の関連に分解して実装します。また、多重度の下限が1(1や1..*)の側を指す外部キーは空にできず、下限が0(0..1や0..*)なら空にすることや対応する行が無い状態を許します。

4. 間違えやすいところ

主キーの設定について「主キーの値は数値でなければならない」とする誤答肢がありますが、主キーの型に決まりは無く、文字列型や日付型の列も主キーにできます。

外部キーについて「外部キーの値は,その関係の中で一意でなければならない」とする誤答肢もありました。外部キーは1対多の「多」側に置かれるため、同じ値が複数の行に現れてかまいません。

子の表の行を消す操作が参照制約で拒否されるとする誤答肢がありました。参照制約が止めるのは、親に無い値を子が指している状態を作る操作です。

下限の読み違えもあります。出庫の多重度が0..*の関連について「出庫の実績がない在庫商品は存在しない」とする誤答肢がありましたが、下限が0なら、出庫が1件も無い在庫商品があってかまいません。UMLのクラス図やオブジェクト図を読むときは、多重度がどちらの端に書かれているかと、下限が0か1かを確かめます。読み違えていないかは、その関連を表にしたときに外部キーがどちらの表に入るかを考えると確かめられます。

データモデル・E-R/UML・キーの理解度チェック

データモデル・E-R/UML・キーの過去問一覧

データベースのほかの論点

SQL・関係代数53問 正規化・関数従属19問 トランザクション・同時実行制御30問 障害回復・バックアップ26問 分散DB・NoSQL18問 インデックス・物理設計11問