DBデータベーススペシャリスト試験 午後Ⅰ
令和6年度秋期 データベーススペシャリスト 午後Ⅰ 問1
事例を読んで設問の答えを考えてから、解説のポイントとIPA公式の解答例・採点講評で確認しましょう。
問題




解き方のヒントを見る
業務要件から対応関係を読み取る
データベース設計の問題では、業務要件の一文一文が、どの実体とどの実体の対応関係を述べているかを丁寧に読み取ることが出発点になります。本ヒントでは観点をその一点に絞り、記述の根拠を自分で確かめながら検討する姿勢を整理します。
この問題で問われていること
問われている箇所について、関係する業務要件の記述を探し、それが一対一・一対多・多対多のどれに当たるのか、また対応が必須か任意かを自分の言葉で言い直してから、判断に使えるかを確認します。
視点
実体間の対応関係は、片方向だけでなく「Aの1件から見てBは何件か」「Bの1件から見てAは何件か」の両方向から確かめると整理しやすくなります。要件の中で数量や必須性を表す言い回し、また時期や状況によって対応が変わりうるかどうかに注意し、推測ではなく記述を根拠に判断することが大切です。
確認ポイント
- 問われている箇所に関係する業務要件の記述を、根拠として特定できているか
- 対応関係を両方向から見て、それぞれ何件対応しうるかを言い直せているか
- 対応が必ず存在するのか、存在しない場合もあるのかを記述から判断できているか
正解と解説を見る
解説
オンライン学習プラットフォームを題材に、業務記述から概念データモデルのリレーションシップと関係スキーマの属性を補完する問題です。問われるのは次の三つです。①プレゼント相手やクーポンなど、役割ごとに参照先を正しく引くこと。②企業向けサービスで多対多を連関エンティティに分解し、研修カリキュラムとの関係を補うこと。③コメント機能の拡張に合わせて多重度を変え、自己参照を追加すること。
問題の全体像
A社はオンライン学習PFを運営しています。問題の構成は次のとおりです。
・現行業務:アカウント(講師・受講生)、コース〜セクション〜コンテンツ〜テスト設問〜選択肢の階層、コース購入(クーポン・プレゼント)、受講とテスト結果、質問とコメント
・企業向けサービスの追加:法人受講生、グループ、研修カリキュラム、合格基準点
・受講生からの要望:コメント機能の拡張
公式解答例の出題趣旨によると、狙いは「業務要件をデータモデルに反映する能力」と「新規要件の追加に伴い、データモデルと関係スキーマを適切に変更する能力」です。採点講評では、全体の正答率は平均的とされています。そのうえで、設問1の「アカウントからコース購入へのリレーションシップ」と(2)b の下線、設問2(2)e の正答率が低かったと指摘されています。
設問1(1)
公式解答例で追加されている7本は次のとおりです。
①アカウント→講師、②アカウント→受講生(スーパータイプ/サブタイプ)
・「講師としてのアカウントを既に保持している場合、再度アカウントを登録する必要はなく」とあります。1人が講師と受講生を兼ねられるので、切り口は別々に二つです。
・図2でも、講師・受講生の主キーはアカウント#になっています。
③受講生→コース購入
・購入情報に受講生アカウント#が記録されます。購入するのは支払情報をもつ受講生です。
④アカウント→コース購入
・プレゼントでは「アカウントをもっている相手」を一つ指定します。
・相手は受講生とは限らないので、スーパータイプのアカウントから、購入者とは別の役割として線を引きます。採点講評では、この線を引けていない解答が多かったと指摘されています。
⑤クーポン→コース購入
・購入時にクーポン#を指定します。併用はできないので、1回の購入に使えるクーポンは高々一つです。
・一方、一つのクーポンは多数の購入で使われます。
⑥セクション-テスト(1対1)
・セクションには「高々一つのテスト」しかありません。1対多で結んだ講義動画とは区別して、1対1で結びます。
⑦テスト設問選択肢→テスト結果詳細
・受講生は、最後に実施したテストで各設問に選んだ選択肢を確認できます。そのため、テスト結果詳細は選んだ選択肢を参照します。
設問1(2)(a)
公式解答例は「クーポン#、受講生アカウント#、プレゼント相手アカウント#」で、いずれも外部キー(破線の下線)です。
・クーポン#:講師は、クーポンを使用した場合のクーポン#を確認できます。そのため、購入ごとに記録しておく必要があります。
・受講生アカウント#:問題文の購入情報に明記されています。
・プレゼント相手アカウント#:プレゼントでは相手のアカウントを一つ指定します。
購入者と相手はどちらもアカウント#を指しますが、役割が違うので、意味を区別できる別名の属性にします。これらは設問1(1)で追加した③〜⑤のリレーションシップに対応します。
設問1(2)(b)
公式解答例は「設問#、選択肢#」です。
テスト結果詳細は「最後に実施したテストで選択した各設問の選択肢と解答日時」を保持します。
・設問#:設問ごとに1行となるので、テスト結果の主キー(アカウント#〜コンテンツ#)に設問#を加えて主キーとします(実線の下線)。
・選択肢#:1設問につき一つだけなので、主キーには含めません。
・参照関係:コース#〜設問#と選択肢#の組合せで、テスト設問選択肢を参照します(破線の下線)。
採点講評によると、属性名は書けていても主キー・外部キーの下線の誤りが目立ったとされています。下線の付け方まで正確に答えることが重要です。
設問2(1)
図4の属性から、あ〜おの意味を読み取ります(エンティティタイプ名は網掛けで示されていません)。
・あ:研修カリキュラムに含まれるコースと受講順
・い:法人受講生のグループへの所属
・う:グループへの研修カリキュラムの割当て
・え:法人受講生による研修カリキュラムの受講
・お:テストごとの合格基準点
公式解答例で追加されている4本は、次のとおりです。
・研修カリキュラム→あ:カリキュラムは一つ以上のコースから成り、コースは複数のカリキュラムに含まれ得ます。この多対多を、あで分解します。
・グループ→い:グループは複数の法人受講生を束ねます。
・研修カリキュラム→う:割当てはグループ単位で行われ、同じカリキュラムでもグループごとに期間が異なります。
・研修カリキュラム→お:合格基準点は研修カリキュラムごとに設定されます。
設問2(2)(c)
公式解答例は「研修カリキュラム#(主キーの一部)、受講順」です。
・あは、研修カリキュラムとコースの多対多を分解する関係です。主キーは企業#、研修カリキュラム#、コース#の組合せになります。
・「研修カリキュラムに含まれるコースには、受講順を設定する」とあります。そのため、受講順はこの組合せに従属する属性です。
設問2(2)(d)
公式解答例は「グループ#(主キーの一部)」です。
・いは、法人受講生とグループの対応を表します。
・法人受講生は、受講するカリキュラムに応じて複数のグループに属し得ます。そのため、企業#、アカウント#、グループ#の組合せで識別します。
・グループ#は、グループを参照する外部キーの役割も兼ねます。
設問2(2)(e)
公式解答例は「研修カリキュラム#(主キーの一部)、受講開始可能年月日、受講完了期限年月日」です。
・「同じ研修カリキュラムでも、割り当てられるグループによって、受講開始可能年月日及び受講完了期限年月日が異なる場合がある」とあります。
・このため、二つの年月日はカリキュラム単体でもグループ単体でもなく、グループと研修カリキュラムの組合せに従属します。
採点講評では、設問2の中でも特にeの正答率が低かったとされています。期間をどのエンティティにもたせるかを、記述から正確に読み取る必要があります。
設問2(2)(f)
公式解答例は「アカウント#、研修カリキュラム#」(どちらも主キーの一部)です。
・えには、研修カリキュラム受講開始日時と受講完了日時が記録されます。これは法人受講生1人と研修カリキュラム1件ごとの受講記録です。
・そのため、企業#、アカウント#、研修カリキュラム#で識別します。
・図3で法人受講生→え、研修カリキュラム→えの線が既に引かれていることとも整合します。
設問2(2)(g)
公式解答例は「研修カリキュラム#(主キーの一部)、合格基準点」です。
・「研修カリキュラムごとに各テストの合格基準点を設定できる」とあります。
・したがって、テストの主キー(コース#、セクション#、コンテンツ#)に企業#と研修カリキュラム#を加えた組合せで識別し、合格基準点をもたせます。
・これは、設問2(1)で追加した研修カリキュラム→おのリレーションシップに対応します。
設問3(1)
公式解答例は「質問とコメントとの間のリレーションシップを1対1から1対多に変更する」です。
・現行では「各質問に対する講師からのコメントは1回だけ」なので、コメントの主キーは質問#で、1対1でした。
・要望は、他の講師や受講生も「回数に制限なく」コメントできるようにすることです。1質問に複数のコメントが付くので、コメント#を主キーにし、質問#を外部キーにします。これが1対多です。
・答案には、変更前後の多重度とエンティティタイプ名(質問・コメント)を40字以内に収めます。
設問3(2)①
公式解答例は「アカウントとコメントとの間に1対多のリレーションシップを追加する」です。
・要望「誰がコメントしたかを特定できるように」に対応するため、コメントに投稿者の参照をもたせます。
・コメントするのは講師と受講生の両方です。そのため、サブタイプではなくスーパータイプのアカウントから線を引きます。
・採点講評でも、受講生や講師から引いた解答が散見されたとして注意が促されています。
設問3(2)②
公式解答例は「コメントに自己参照型の1対多のリレーションシップを追加する」です。
・要望「既出のコメントを指定してコメントできるように」に対応するため、コメントが別のコメントを参照できるようにします。
・一つのコメントには複数のコメントが付き得るので、コメント自身への1対多(自己参照)となります。
・関係スキーマでは、参照先のコメント#を別名の外部キーとしてもつイメージです。
・答案では「コメント」と「自己参照」「1対多」を明示します。
学習のポイント
業務記述の数量表現(一つ、高々一つ、複数、1回だけ、制限なく)を多重度に置き換えることが第一の重点です。そのうえで、役割ごとのリレーションシップ、スーパータイプから引く判断、主キーと外部キーの下線の付け分けを正確に行う練習をしてください。
出典:独立行政法人 情報処理推進機構(IPA)令和6年度秋期 データベーススペシャリスト試験 午後Ⅰ 問1(公式資料:問題冊子(PDF) / 解答例 / 採点講評)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針