データベーススペシャリスト試験 2024年 午後101


オンライン学習プラットフォームの概念データモデリングに関する次の記述を読んで、設問に答えよ。

 教育事業者のA社は,オンライン学習プラットフォーム(以下, PF という)を運営している。このたび、新規要件の追加に伴い, データベースを再設計した。  
〔現行業務〕 1.アカウント  (1) PF を利用する個人をアカウントと呼び, アカウント番号 (以下, 番号を#で示す) で識別する。  (2) PF 上で学習教材を受講するアカウントを受講生と呼ぶ。受講生としてアカウントを登録する際,学習教材を購入するための支払情報を登録する。 後述する講師としてのアカウントを既に保持している場合、 再度アカウントを登録する必要はなく、支払情報を追加で登録する。  (3) PF 上で受講生に提供する学習教材を制作するアカウントを講師と呼ぶ。 講師としてアカウントを登録する際、自身のプロフィールを登録する。 受講生としてのアカウントを既に保持している場合, 再度アカウントを登録する必要はなく,自身のプロフィールを追加で登録する。
2.コース  (1) コースは,講師が PF 上で受講生に提供する一連の学習教材を指し, コース#で識別する。各コースの制作は1名の講師が行い, 制作した講師が分かるようになっている。 全て有料であり,標準価格を設定している。  (2) コースは,複数のセクションから成る。セクションは,コースごとにセクション#で識別する。  (3) セクションは,一つ又は複数の講義動画と,講義動画を視聴した後の理解度を確認する高々一つのテストから成る。 講義動画とテストとを併せてコンテンツと呼び,セクションごとにコンテンツ#で識別する。   ・テストは,複数の設問から成る。 設問は, テストごとに設問#で識別する。   ・設問は,全て単一選択式であり, 設問ごとに設問文と配点を設定する。   ・設問の各選択肢は、設問ごとに選択肢#で識別し, 選択文と正解フラグを設定する。
3.コース購入  (1) 受講生は,コースを検索して, 受講したいコースを購入する。 コースの購入は,コース購入#で識別する。 購入情報 (購入年月日, 購入価格及び受講生アカウント#)は, PF 上に記録される。  (2) 受講生は,PF 上で利用できるクーポンを使用すると,標準価格より安くコースを購入できる。 クーポンを使用する際は、クーポン#を指定して、購入の手続を行う。 クーポンの併用はできない。   ・クーポンは、講師が自身のコースの販売促進を目的に発行している。   ・クーポンは, クーポン#で識別し、割引率や値引額, クーポンの適用期間及び同一クーポンの使用可能人数をもつ。 使用可能人数は最大 1,000 名であり,クーポン使用者数が使用可能人数の上限に達すると,適用期間にかかわらず,クーポンの使用は不可となる。  (3) 受講生は,お薦めしたいコースがある場合, アカウントをもっている相手にコースをプレゼントすることができる。 受講生がコースをプレゼントするには,相手のアカウントと対象のコースをそれぞれ一つ指定して購入の手続を行う。
4.コース受講  (1) 受講生は,購入したコース及びプレゼントされたコースを,いつでも受講することができる。   ① コンテンツの受講の完了は, 講義動画については視聴を終えた時点, テストについては全設問に解答した時点である。セクション内の全コンテンツの受講が完了するとセクションの受講が完了となり, 全セクションの受講が完了するとコースの受講が完了となる。さん   ② 自己研鑽が目的なので,どのコンテンツから受講してもよい。 テストに合格基準点はなく,どのコンテンツも繰り返し受講することができる。   ③ コースの受講中又は完了後, 5段階評価と感想を登録することができる。   ④ 受講生は,自分が最後に実施したテストで選択した各設問の選択肢と解答日時を確認することができる。また, 自分が過去に実施したテストについては,最高獲得点数と, 全設問の合計点数の履歴を確認できる。  (2) 受講生は,コンテンツの内容に疑問があれば, PF 上で講師に質問することができる。各質問に対する講師からのコメントは1回だけできる。できる。各質問に対する講師からのコメントは1回だけできる。
5.購入実績及び受講の確認  講師は PF 上で, 自分が制作したコースを購入した受講生の購入情報, クーポンを使用した場合のクーポン#, 受講生による5段階評価及び感想を確認することができる。  
〔企業向けサービスの追加〕  PF に,次のような企業向けのサービスを追加することにした。
1.受講生の登録  企業は,研修対象の従業員を受講生としてアカウントを登録する。これを法人受講生と呼び,現行業務の受講生とは区別する。既に個人でアカウントを保持していても,法人用のアカウント#を新たに付与する。
2.研修カリキュラムの登録  (1) 企業は,受講させる一つ以上のコースをまとめた研修カリキュラムを作成する。研修カリキュラムは,企業ごとに研修カリキュラム#で識別し,研修カリキュラム名をもつ。研修カリキュラムに含まれるコースには,受講順を設定する。  (2) 企業は,法人受講生に対して一つ以上の研修カリキュラムを受講させる。  (3) 研修カリキュラムへの法人受講生の割当てでは,あらかじめ複数の法人受講生を束ねたグループを作成し,グループ単位で割当てを行う。 グループは,企業ごとにグループ#で識別し, グループ名をもつ。 また, 同じ研修カリキュラムでも,割り当てられるグループによって,受講開始可能年月日及び受講完了期限年月日が異なる場合がある。  (4) テストを含むコースについては,研修カリキュラムごとに各テストの合格基準点を設定できる。
3.法人受講生によるコース受講  (1) 法人受講生は,指定された研修カリキュラムを期限までに受講する。 受講を開始すると,研修カリキュラム受講開始日時が記録される。 全てのコースの受講が完了すると,研修カリキュラムが完了となり,研修カリキュラム受講完了日時が記録される。  (2) 現行業務のコース受講と同じサービスを提供するが,企業が合格基準点を定めているテストについては, 合格基準点に達しないとテストの受講は完了とならない。  
〔受講生からの要望〕  受講生から,学習に対する理解を深めるために, 次の要望があった。 ・コースを提供する講師だけではなく、他の講師及び受講生も質問に対して回数に制限なくコメントできるようにしてほしい。 ・その際、誰がコメントしたかを特定できるようにしてほしい。 ・質問だけではなく、 既出のコメントを指定してコメントできるようにしてほしい。  
〔概念データモデルと関係スキーマの設計〕 1.〔現行業務〕 に基づく設計  現行業務の概念データモデルを図1に, 関係スキーマを図2に示す。
データベーススペシャリスト試験(令和6年 午後I 問1 図1)
データベーススペシャリスト試験(令和6年 午後I 問1 図2)
2.〔企業向けサービスの追加〕に基づく設計  企業向けサービスの追加部分の概念データモデルを図3に、関係スキーマを図4に示す。
データベーススペシャリスト試験(令和6年 午後I 問1 図3)
データベーススペシャリスト試験(令和6年 午後I 問1 図4)
 解答に当たっては, 巻頭の表記ルールに従うこと。 ただし, エンティティタイ プ間の対応関係にゼロを含むか否かの表記は必要ない。 エンティティタイプ間のリレーションシップとして “多対多” のリレーションシップを用いないこと。 サ ブタイプが存在する場合、 他のエンティティタイプとのリレーションシップは, スーパータイプ又はいずれかのサブタイプの適切な方との間に設定すること。 同 一のエンティティタイプ間に異なる役割をもつ複数のリレーションシップが存在 する場合,役割の数だけリレーションシップを表す線を記述すること。 属性名は, 意味を識別できる適切な名称とすること。 関係スキーマに入れる属性を答える場合,主キーを表す下線, 外部キーを表す破線の下線についても答えること。

設問1(1)オンライン学習プラットフォームの概念データモデリングに関する次の記述を読んで、設問に答えよ。

図 1 の概念データモデルは未完成である。欠落しているリレーションシップを 7 本補って図を完成させよ。スーパータイプとサブタイプとの間のリレーションシップの本数は、サブタイプの切り口の数に関係なく,スーパータイプとサブタイプとの組ごとに1本と数える。なお、図1に表示されていないエンティティタイプは考慮しなくてよい。
模範解答
データベーススペシャリスト試験(令和6年 午後I 問1 設問1-1解答)
解説

小問1の解答キーワード

欠落しているリレーションシップは次の7本です。
  1. アカウント → 質問
  2. コース → 質問
  3. セクション → 質問
  4. アカウント → コメント
  5. 質問 → コメント
  6. テスト設問 → テスト結果詳細
  7. テスト設問選択肢 → テスト結果詳細

1.なぜその解答になるのか

ER 図におけるリレーションシップは,エンティティ(表)の属性に現れる外部キーを矢印で表現します。
以下,該当箇所を『問題文』の記述および『図2 現行業務の関係スキーマ(未完成)』の属性定義から引用しつつ説明します。
追加リレーションシップ外部キー属性根拠(引用+説明)
アカウント → 質問質問.アカウント#「質問(…,アカウント#,…)」があり,質問者のアカウントを識別するため(図2より)。
コース → 質問質問.コース#「質問(質問#,コース#,…)」があるため,どのコース上の質問かを示す外部キー。
セクション → 質問質問.セクション#「質問(…,セクション#,…)」があり,どのセクションの質問かを示す外部キー。
アカウント → コメントコメント.アカウント#「コメント(…,アカウント#,…)」があるため,誰がコメントしたかを示す外部キー。
質問 → コメントコメント.質問#「コメント(質問#,コメント#,…)」で質問番号を参照する外部キーが存在。
テスト設問 → テスト結果詳細テスト結果詳細.□b□(=設問#)「テスト結果詳細(…,□b□,…)」の伏字部分は「設問#」であり,どの設問への解答かを示す。
テスト設問選択肢 → テスト結果詳細テスト結果詳細.□b□+(選択肢#)想定解答として選んだ選択肢を記録するため,テスト設問選択肢を参照する外部キーが必要。

解説の流れ

  1. 質問エンティティ
    • 属性に「コース#」「セクション#」「コンテンツ#」「アカウント#」を持つため,それぞれから矢印が必要です。
    • 図1には「コンテンツ → 質問」のみあるので,残る3本を追加します。
  2. コメントエンティティ
    • 属性に「質問#」「アカウント#」を持つため,質問およびアカウントから矢印を追加します。
    • 注意点として,オリジナルの図1には誤って「コンテンツ → コメント」があるものの,コメントは質問に対して付くので「質問 → コメント」も必要です。
  3. テスト結果詳細エンティティ
    • 「テスト結果詳細(…,□b□,解答日時)」の□b□は「設問#」を表す伏字。これに加えて,「選択肢#」を合わせて持つことで,ある設問で学生が選んだ選択肢を記録します。
    • よって「テスト設問 → テスト結果詳細」「テスト設問選択肢 → テスト結果詳細」の2本を追加します。

2.受験者が誤りやすいポイント

  • 「質問」「コメント」「テスト結果詳細」など,下位エンティティの属性に外部キーがある場合,全ての親エンティティからの矢印を抜け漏れなく引くこと。
  • 「コメントはコンテンツに付く」と誤解しやすいが,問題文では**「質問に対する講師からのコメント」**が前提であり,属性定義にも「質問#」しかない点に注意。
  • サブタイプ(講義動画/テスト)とスーパークラス(コンテンツ)間は既に描かれているため,新たに描く必要はありません(問題文の指示「サブタイプが存在する場合...」を参照)。

3.試験対策として覚えておくべきポイント

  • ER 図の未完成補完問題では,関係スキーマの外部キー属性が最大の手がかり。属性名を必ずチェックし,対応する親エンティティを探す。
  • 「誰が」「どのコースの」「どのセクションの」「どの設問の」「どの選択肢を」といった業務上の意味を,属性名で見逃さない。
  • 汎化/継承(スーパータイプ⇔サブタイプ)は,本問のような補完では触らないことが多いので,既存の線をよく確認し,削除せずに追加だけを行う
  • 設問中の「未完成」「網掛け」「伏せ字」などの表現は,逆に図中にある属性をすべて確認せよというヒント。未表示部分こそ追加すべき関係の根拠になる。
以上を踏まえ,演習では必ず「表の属性一覧」と「ER 図」を並べて照合し,外部キー漏れがないか確認する癖をつけましょう。

設問1(2)オンライン学習プラットフォームの概念データモデリングに関する次の記述を読んで、設問に答えよ。

図2 中の(a)と(b)に入れる一つ又は複数の適切な属性名を補って関係スキーマを完成させよ。
模範解答
a:クーポン#, 受講生アカウント#, プレゼント相手アカウント# b:設問#, 選択肢#
解説

1. キーワード・論点整理

  • (a) は「コース購入」テーブルにおける
    ・購入者(受講生アカウント#)
    ・クーポンの利用(クーポン#)
    ・プレゼント機能(プレゼント相手アカウント#)
    の3つの情報をどのように属性として表現するかがポイントです。
  • (b) は「テスト結果詳細」テーブルにおける
    ・どの設問に対して
    ・どの選択肢を選んだか
    を記録するための適切な外部キーを選ぶ論点です。

2. (a) の解答解説:コース購入の属性補完

論理的根拠の引用

「受講生は,コースを検索して, 受講したいコースを購入する。…購入情報 (購入年月日, 購入価格及び受講生アカウント#)は, PF 上に記録される。」
「受講生がコースをプレゼントするには, 相手のアカウントと対象のコースをそれぞれ一つ指定して購入の手続を行う。」
「受講生は, PF 上で利用できるクーポンを使用すると, 標準価格より安くコースを購入できる。…クーポン#を指定して、購入の手続を行う。」
これらの要件から、コース購入テーブルには以下3つのキー情報が必要です。
属性名意味
クーポン#クーポンを使用した場合に指定する番号
受講生アカウント#購入手続きを行った受講生のアカウント番号
プレゼント相手アカウント#コースをプレゼントした相手のアカウント番号

関係スキーマ例

コース購入
コース購入#
┅コース#
購入年月日
購入価格
┅クーポン#
┅受講生アカウント#
┅プレゼント相手アカウント#
  • 下線()は主キー、破線下線(┅…┅)は外部キーを示しています。
  • 「受講生アカウント#」は必須、「クーポン#」「プレゼント相手アカウント#」はオプショナルですが、属性として定義します。

3. (b) の解答解説:テスト結果詳細の属性補完

論理的根拠の引用

「受講生は, 自分が最後に実施したテストで選択した各設問の選択肢と解答日時を確認することができる。」
テスト結果詳細テーブルは,「どの設問に対して」「どの選択肢を選んだか」を記録する必要があります。したがって,以下の外部キーを追加します。
属性名意味
設問#どの設問への解答か識別
選択肢#設問の中のどの選択肢か識別

関係スキーマ例

テスト結果詳細
アカウント#, コース#, セクション#, コンテンツ#
┅設問#
┅選択肢#
解答日時
  • 主キーは設問単位で履歴を保持する場合、上記のキーに「設問#」「解答日時」などを含める設計もありますが,ここでは試験問題文の要件「最後に実施したテストで選択した各設問の選択肢」を踏まえ,設問# と選択肢# を外部キーとして追加します。

4. 受験者が誤りやすいポイント

  1. プレゼント機能を別テーブルと勘違い
    → 本問では「コース購入」テーブルにプレゼント相手を属性として持たせる設計が正解です。
  2. (b) で「正解フラグ」「配点」を入れてしまう
    → テスト結果詳細は受講生が選んだ「設問#」「選択肢#」を記録するのが目的であり,設問マスタの配点や正解フラグではありません。
  3. 主キー/外部キーの表記忘れ
    → 解答には主キー(下線)と外部キー(破線下線)も明示してください。

5. 試験対策としてのまとめ

  • 「利用者の操作ログや履歴」を扱うテーブルでは,**何をキーに識別するか(どのIDを外部キーに含めるか)**を要件から逆算して明確にする。
  • オプショナルな関係(クーポン利用/プレゼント)も属性化してテーブルに含めることを意識する。
  • マスタ(テスト設問・選択肢)とトランザクション(解答履歴)は必ず キーで結びつける こと。
  • 主キー・外部キーの定義は必須。キーワードは「アカウント#」「コース#」「セクション#」「コンテンツ#」「設問#」「選択肢#」です。

設問2(1)企業向けサービスの追加の概念データモデル及び関係スキーマについて答えよ。

図3の概念データモデルは未完成である。図3中の欠落しているリレーションシップを4本補って図を完成させよ。なお, 図3に表示されていないエンティティタイプは考慮しなくてよい。
模範解答
データベーススペシャリスト試験(令和6年 午後I 問1 設問2-1解答)
解説

解答の要点整理

図3で未完成となっているリレーションシップは,企業向けサービスの要件から以下の4つが抜けています。
No.リレーションシップ名FromTo属性
1グループに属するグループ法人受講生なし
2研修カリキュラムを構成する研修カリキュラムコース受講順
3グループに割り当てられるグループ研修カリキュラム受講開始可能年月日/受講完了期限年月日
4テストの合格基準を設定する研修カリキュラムテスト合格基準点

解答に至る論拠

  1. グループ–法人受講生のリレーションシップ
    問題文中の〔企業向けサービスの追加〕2.(3)に
    「あらかじめ複数の法人受講生を束ねたグループを作成し,グループ単位で割当てを行う」
    とあるように,**「グループ」「法人受講生」**の間には「属する(所属)」という関係が必要です。
  2. 研修カリキュラム–コースのリレーションシップ
    同じく2.(1)に
    「企業は,受講させる一つ以上のコースをまとめた研修カリキュラムを作成する。研修カリキュラムに含まれるコースには,受講順を設定する」
    とあり,「研修カリキュラム」→**「コース」**の間に「構成する」関係と「受講順」の属性が必要です。
  3. グループ–研修カリキュラムのリレーションシップ
    2.(3)の続きで
    「同じ研修カリキュラムでも,割り当てられるグループによって,受講開始可能年月日及び受講完了期限年月日が異なる場合がある」
    とあることから,「グループ」→**「研修カリキュラム」**の間に「割当てる」関係と,2つの日付属性が必要です。
  4. 研修カリキュラム–テストのリレーションシップ
    2.(4)に
    「テストを含むコースについては,研修カリキュラムごとに各テストの合格基準点を設定できる」
    と明示されています。コース中のどのテストに対しても,「研修カリキュラム」→**「テスト」**間に「合格基準点」属性付きの関係が必要です。

受験者が誤りやすいポイント

  1. 「法人受講生」と「アカウント」の混同
    法人向け受講生は個人アカウントとは区別して新たなアカウント#を付与しますが,属性名が同じ「アカウント#」のため,既存の「受講生」と混同しやすいです。
  2. グループと企業,カリキュラムの3者関係
    「グループ」は企業の下に作られますが,「グループ」→「研修カリキュラム」の関係も必須である点を忘れがちです。
  3. テストの合格基準点のリレーションシップ先
    「テストを含むコース」ではなく,「研修カリキュラムごとにテスト」の合格基準を設定する点に注意。コースとテストの既存関係とは別に,カリキュラムとテストの新たな関係を設けます。

試験対策:覚えておくべき知識

  1. 概念モデルのリレーションシップ追加
    追加要件が出たら,必ず「どのエンティティ同士にどんな属性付きリレーションが必要か」をキーとなる要件文から1対1で抽出する。
  2. サブタイプ・スーパータイプの扱い
    今回は新たなサブタイプはないが,階層構造(継承構造)がある場合は,適切に上位/下位にリレーションを張る。
  3. 属性付きリレーションシップ
    「受講順」「受講開始可能年月日」「受講完了期限年月日」「合格基準点」のように,リレーションシップ自身に属性を持たせるパターンを確実に押さえる。
  4. 多対多禁止の原則
    図示する際は多対多のリレーションを避け,中間エンティティ(結合エンティティ)によって解消するルールを忘れないこと。
  5. 記述順序の確認
    問題文の大項目3節ごとに,どのエンティティ追加・関係追加が必要かを漏れなくチェックし,図と対応づけるクセをつける。
これらのポイントを意識し,「要件→リレーションシップ→属性」の順で整理すれば,概念データモデルの未完成部分を確実に補完できるようになります。

設問2(2)企業向けサービスの追加の概念データモデル及び関係スキーマについて答えよ。

図 4 中の(c)〜(g)に入れる一つ又は複数の適切な属性名を補って関係スキーマを完成させよ。
模範解答
c:研修カリキュラム#, 受講順 d:グループ# e:研修カリキュラム#, 受講開始可能年月日, 受講完了期限年月日 f:アカウント#, 研修カリキュラム# g:研修カリキュラム#, 合格基準点
解説

キーワード・論点整理

本問は,「企業向けサービスの追加」に伴い未完成となっている関係スキーマ(図4中の灰色箇所)を,設問文の業務要件に基づいて適切な属性で完成させる問題です。主な論点は次の5つです。
設問箇所表示ラベル対応業務要件
(c)研修カリキュラムに含まれるコースの定義(受講順)
(d)法人受講生をグループに割り当てる関係
(e)グループごとに研修カリキュラムの「受講開始可能年月日」「受講完了期限年月日」を管理
(f)法人受講生が研修カリキュラムを受講する際の開始・完了日時
(g)研修カリキュラムごとにテストの合格基準点を設定する関係

解答理由

以下,問題文の該当箇所を引用しつつ,なぜその属性を補う必要があるかを説明します。
  1. (c):あ(企業#, コース#, ■)
    「企業は,受講させる一つ以上のコースをまとめた研修カリキュラムを作成する。研修カリキュラムに含まれるコースには,受講順を設定する。」
    → コースがどの研修カリキュラムに属し,その中で何番目に受講するかを管理する必要がある。
    補う属性:
    • 研修カリキュラム#(どのカリキュラムに含まれるかを示す外部キー)
    • 受講順
  2. (d):い(企業#, アカウント#, ■)
    「法人受講生を束ねたグループを作成し,グループ単位で割当てを行う。グループは,企業ごとにグループ#で識別する。」
    → どのグループにどの法人受講生(アカウント#)が所属するかを示す。
    補う属性:
    • グループ#
  3. (e):う(企業#, グループ#, ■)
    「同じ研修カリキュラムでも,割り当てられるグループによって,受講開始可能年月日及び受講完了期限年月日が異なる場合がある。」
    → 特定のグループにあるカリキュラムをいつからいつまで受講させるかを管理する。
    補う属性:
    • 研修カリキュラム#(どのカリキュラムか)
    • 受講開始可能年月日
    • 受講完了期限年月日
  4. (f):え(企業#, ■, 研修カリキュラム受講開始日時, 研修カリキュラム受講完了日時)
    「法人受講生は,指定された研修カリキュラムを期限までに受講する。受講を開始すると,研修カリキュラム受講開始日時が記録される。全てのコースの受講が完了すると,研修カリキュラム受講完了日時が記録される。」
    → どの法人受講生(アカウント#)がどの研修カリキュラム(研修カリキュラム#)の受講を開始・完了したかを記録する。
    補う属性:
    • アカウント#
    • 研修カリキュラム#
  5. (g):お(企業#, コース#, セクション#, コンテンツ#, ■)
    「テストを含むコースについては,研修カリキュラムごとに各テストの合格基準点を設定できる。」
    → どの研修カリキュラム(研修カリキュラム#)において,どのテスト(コース#, セクション#, コンテンツ#で識別)に何点を合格基準とするかを管理する。
    補う属性:
    • 研修カリキュラム#
    • 合格基準点

補完後の関係スキーマ一覧

ラベル属性一覧(補完後)
企業#, コース#, 研修カリキュラム#, 受講順
企業#, アカウント#, グループ#
企業#, グループ#, 研修カリキュラム#, 受講開始可能年月日, 受講完了期限年月日
企業#, アカウント#, 研修カリキュラム#, 研修カリキュラム受講開始日時, 研修カリキュラム受講完了日時
企業#, コース#, セクション#, コンテンツ#, 研修カリキュラム#, 合格基準点

誤りやすいポイント

  • 「あ」(c)で**研修カリキュラム#**を抜かしやすい
    → “どのカリキュラム”かを示す外部キーがないと,コースがどの研修カリキュラムに属するか不明になります。
  • 「お」(g)で**研修カリキュラム#**を抜かしやすい
    → テストの合格基準は各研修カリキュラム単位で異なるため,カリキュラムキーが必須です。
  • 日付/日時の名称ミス
    → 「受講開始可能年月日」と「研修カリキュラム受講開始日時」など,名称が近いので設問文と完全一致で記述すること。

試験対策ポイント

  1. 業務要件から「何を管理するのか」をまず整理する(外部キー・属性に対応)。
  2. 関係スキーマの灰色ブロックには複数属性が入る場合がある。
  3. 「企業向けサービスの追加」は現行業務にない新規リレーションを生むため,文中のキーワード(例:「まとめた」「束ねた」「設定できる」など)をキー属性や関係性の手がかりにする。
  4. 属性名は問題文と同一用語を用いる。特に「年月日」「日時」の使い分けに注意しましょう。

設問3(1)受講生からの要望に対応するために、 図2の関係スキーマの関係 “コメント”の主キーとして “コメント#” を新たに設け, “質問#” は外部キーへ変更した上で,次の変更を行う。

図1の概念データモデル上のリレーションシップを一つ変更する。どのようにリレーションシップを変更すべきか。具体的なエンティティタイプ名を挙げ, 40字以内で答えよ。
模範解答
質問とコメントとの間のリレーションシップを1対1から1対多に変更する。
解説

キーワード・論点整理

  • 質問(エンティティタイプ)
  • コメント(エンティティタイプ)
  • リレーションシップの基数(1対1 → 1対多)
  • 受講生からの要望:「回数に制限なくコメントできるようにしてほしい」

解答解説

  1. 要件把握
    問題文の【受講生からの要望】には次の記述があります。
    「質問だけではなく、他の講師及び受講生も質問に対して回数に制限なくコメントできるようにしてほしい。」
  2. 現行モデルの確認
    本来の図1(現行業務の概念データモデル)では,
    質問──コメント 間のリレーションシップは 1対1 です。
  3. 必要な変更
    回数に制限なくコメントを許可するためには,
    一つの質問に対して複数のコメントを関連付けられるように,
    リレーションシップを「1対1」から「1対多」に変更します。
リレーションシップ変更前変更後
質問 ── コメント1 : 11 : 多

受験上の注意点

  • 「質問」と「コンテンツ」や「質問」と「講師/受講生」ではなく,必ず「質問」と「コメント」の関係性に着目すること。
  • ER図の多重度(カーディナリティ)表記を見落としやすいので,「1対1」と「1対多」の違いを正確に理解すること。
  • 要望文にある「回数に制限なく」の箇所が,多対多ではなく1対多で対応可能である点を誤解しないように注意すること。

試験対策ポイント

  • 要件変更時は,「誰が」「何に」「どのように」アクセス・操作できるかを特定し,該当するエンティティ間のリレーションシップを見直す。
  • ER図の関係における基数(1:1、1:N、N:M)は,実運用で起こりうる件数上限に従って決定する。
  • 要望文から「制限なく」や「1回だけ」のような表現を読み取り,多重度を適切に変更できる力を養う。

設問3(2)受講生からの要望に対応するために、 図2の関係スキーマの関係 “コメント”の主キーとして “コメント#” を新たに設け, “質問#” は外部キーへ変更した上で,次の変更を行う。

図1の概念データモデルに新しくリレーションシップを二つ追加する。どのようにリレーションシップを追加すべきか。具体的なエンティティタイプ名を挙げ,それぞれ 40字以内で答えよ。
模範解答
①:アカウントとコメントとの間に1対多のリレーションシップを追加する。 ②:コメントに自己参照型の1対多のリレーションシップを追加する。
解説

模範解答のキーワード整理

  • 「アカウントとコメントとの間に1対多のリレーションシップを追加」
  • 「コメントに自己参照型の1対多のリレーションシップを追加」
これら二つが設問①②の解答の核心です。

解答の根拠と論理的説明

受験生からの要望には,次のように記載されています。
・コースを提供する講師だけではなく、他の講師及び受講生も質問に対して回数に制限なくコメントできるようにしてほしい。
・その際、誰がコメントしたかを特定できるようにしてほしい。
・質問だけではなく、既出のコメントを指定してコメントできるようにしてほしい。
この要望を満たすには,
  1. コメントをした主体(講師/受講生=アカウント)をデータモデル上で関連づける必要がある → 「アカウント⇔コメント」のリレーション追加
  2. 既存コメントに対してコメントできるよう「親コメント→子コメント」の再帰的リレーションが必要 → 「コメント」の自己参照リレーション追加

1. アカウント→コメント(1:N)

  • 「誰がコメントしたかを特定できるようにしてほしい」
    → コメントテーブルに投稿者を外部キーとして持たせ,アカウントと1対多を結ぶ

2. コメント→コメント(自己参照1:N)

  • 「既出のコメントを指定してコメントできるようにしてほしい」
    → コメント同士を親子関係で結ぶ(親コメントPKを子コメントのFKとして持つ)

追加リレーションシップ概要

No.関連エンティティリレーションシップ多重度
アカウント ― コメント投稿者として関連1 : N
コメント ― コメント(自己参照)親コメント/子コメント1 : N

受験者が誤りやすいポイント

  • 質問(Question)とのリレーション追加と混同
    → すでに「質問→コメント」は存在するため,ここに手を加えるのではなく「アカウント→コメント」を追加
  • 多重度の取り違え
    → 投稿者(アカウント)1に対してコメント多数→1:N,逆に考えない
  • 自己参照を別エンティティ化してしまう
    → コメント同士の関係は同一エンティティの自己参照で設計

試験対策として覚えておくべきポイント

  1. 要件文中の「誰が」「何に対して」「どのように」 を抜き出し,エンティティ間のリレーションを読み取る
  2. 「誰が」の主語は常にアクター(ここではアカウント)と結びつける
  3. 既存ER図・関係スキーマを確認し,重複しない箇所に新規リレーションを追加
  4. 自己参照(再帰的リレーション)は,親子関係の多重度を正しく1:Nで表現
  5. 小問では「具体的エンティティ名+多重度(1対多)」を明示することで簡潔かつ正確に答えること――これが配点につながります。
← 前の問題へ次の問題へ →

©︎2025 情報処理技術者試験対策アプリ