DBデータベーススペシャリスト試験 午後Ⅰ

令和6年度秋期 データベーススペシャリスト 午後Ⅰ 問1

事例を読んで設問の答えを考えてから、解説のポイントとIPA公式の解答例・採点講評で確認しましょう。

問題

問1 オンライン学習プラットフォームの概念データモデリングに関する次の記述を読んで,設問に答えよ。 教育事業者の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回だけできる。 5. 購入実績及び受講の確認 講師はPF上で,自分が制作したコースを購入した受講生の購入情報,クーポンを使用した場合のクーポン#,受講生による5段階評価及び感想を確認することができる。 〔企業向けサービスの追加〕 PFに,次のような企業向けのサービスを追加することにした。 1. 受講生の登録 企業は,研修対象の従業員を受講生としてアカウントを登録する。これを法人受講生と呼び,現行業務の受講生とは区別する。既に個人でアカウントを保持していても,法人用のアカウント#を新たに付与する。 2. 研修カリキュラムの登録 (1) 企業は,受講させる一つ以上のコースをまとめた研修カリキュラムを作成する。研修カリキュラムは,企業ごとに研修カリキュラム#で識別し,研修カリキュラム名をもつ。研修カリキュラムに含まれるコースには,受講順を設定する。 (2) 企業は,法人受講生に対して一つ以上の研修カリキュラムを受講させる。 (3) 研修カリキュラムへの法人受講生の割当てでは,あらかじめ複数の法人受講生を束ねたグループを作成し,グループ単位で割当てを行う。グループは,企業ごとにグループ#で識別し,グループ名をもつ。また,同じ研修カリキュラムでも,割り当てられるグループによって,受講開始可能年月日及び受講完了期限年月日が異なる場合がある。 (4) テストを含むコースについては,研修カリキュラムごとに各テストの合格基準点を設定できる。 3. 法人受講生によるコース受講 (1) 法人受講生は,指定された研修カリキュラムを期限までに受講する。受講を開始すると,研修カリキュラム受講開始日時が記録される。全てのコースの受講が完了すると,研修カリキュラムが完了となり,研修カリキュラム受講完了日時が記録される。 (2) 現行業務のコース受講と同じサービスを提供するが,企業が合格基準点を定めているテストについては,合格基準点に達しないとテストの受講は完了とならない。 〔受講生からの要望〕 受講生から,学習に対する理解を深めるために,次の要望があった。 ・コースを提供する講師だけではなく,他の講師及び受講生も質問に対して回数に制限なくコメントできるようにしてほしい。 ・その際,誰がコメントしたかを特定できるようにしてほしい。 ・質問だけではなく,既出のコメントを指定してコメントできるようにしてほしい。 〔概念データモデルと関係スキーマの設計〕 1. 〔現行業務〕に基づく設計 現行業務の概念データモデルを図1に,関係スキーマを図2に示す。 図1 現行業務の概念データモデル(未完成) 図2 現行業務の関係スキーマ(未完成) 2. 〔企業向けサービスの追加〕に基づく設計 企業向けサービスの追加部分の概念データモデルを図3に,関係スキーマを図4に示す。 図3 企業向けサービスの追加部分の概念データモデル(未完成) 図4 企業向けサービスの追加部分の関係スキーマ(未完成) 解答に当たっては,巻頭の表記ルールに従うこと。ただし,エンティティタイプ間の対応関係にゼロを含むか否かの表記は必要ない。エンティティタイプ間のリレーションシップとして“多対多”のリレーションシップを用いないこと。サブタイプが存在する場合,他のエンティティタイプとのリレーションシップは,スーパータイプ又はいずれかのサブタイプの適切な方との間に設定すること。同一のエンティティタイプ間に異なる役割をもつ複数のリレーションシップが存在する場合,役割の数だけリレーションシップを表す線を記述すること。属性名は,意味を識別できる適切な名称とすること。関係スキーマに入れる属性を答える場合,主キーを表す下線,外部キーを表す破線の下線についても答えること。 設問1 〔現行業務〕の概念データモデル及び関係スキーマについて答えよ。 (1) 図1の概念データモデルは未完成である。欠落しているリレーションシップを7本補って図を完成させよ。スーパータイプとサブタイプとの間のリレーションシップの本数は,サブタイプの切り口の数に関係なく,スーパータイプとサブタイプとの組ごとに1本と数える。なお,図1に表示されていないエンティティタイプは考慮しなくてよい。 (2) 図2中の[a]と[b]に入れる一つ又は複数の適切な属性名を補って関係スキーマを完成させよ。 設問2 〔企業向けサービスの追加〕の概念データモデル及び関係スキーマについて答えよ。 (1) 図3の概念データモデルは未完成である。図3中の欠落しているリレーションシップを4本補って図を完成させよ。なお,図3に表示されていないエンティティタイプは考慮しなくてよい。 (2) 図4中の[c]~[g]に入れる一つ又は複数の適切な属性名を補って関係スキーマを完成させよ。 設問3 〔受講生からの要望〕に対応するために,図2の関係スキーマの関係“コメント”の主キーとして“コメント#”を新たに設け,“質問#”は外部キーへ変更した上で,次の変更を行う。 (1) 図1の概念データモデル上のリレーションシップを一つ変更する。どのようにリレーションシップを変更すべきか。具体的なエンティティタイプ名を挙げ,40字以内で答えよ。 (2) 図1の概念データモデルに新しくリレーションシップを二つ追加する。どのようにリレーションシップを追加すべきか。具体的なエンティティタイプ名を挙げ,それぞれ40字以内で答えよ。
図1 現行業務の概念データモデル(未完成)。アカウント、講師、受講生、コース、クーポン、セクション、コンテンツ、講義動画、テスト、テスト設問、テスト設問選択肢、コース購入、質問、コメント、コース受講、セクション受講、コンテンツ受講、テスト結果、テスト結果詳細、テスト結果履歴のエンティティタイプと一部のリレーションシップを示した未完成の概念データモデル。
図1 現行業務の概念データモデル(未完成)。アカウント、講師、受講生、コース、クーポン、セクション、コンテンツ、講義動画、テスト、テスト設問、テスト設問選択肢、コース購入、質問、コメント、コース受講、セクション受講、コンテンツ受講、テスト結果、テスト結果詳細、テスト結果履歴のエンティティタイプと一部のリレーションシップを示した未完成の概念データモデル。
図2 現行業務の関係スキーマ(未完成)。アカウント、講師、受講生、コース、セクション、コンテンツ、講義動画、テスト、テスト設問、テスト設問選択肢、クーポン、コース購入、コース受講、セクション受講、コンテンツ受講、テスト結果、テスト結果詳細、テスト結果履歴、質問、コメントの関係スキーマ。コース購入に空欄a、テスト結果詳細に空欄bがあり、網掛け部分は非表示。
図2 現行業務の関係スキーマ(未完成)。アカウント、講師、受講生、コース、セクション、コンテンツ、講義動画、テスト、テスト設問、テスト設問選択肢、クーポン、コース購入、コース受講、セクション受講、コンテンツ受講、テスト結果、テスト結果詳細、テスト結果履歴、質問、コメントの関係スキーマ。コース購入に空欄a、テスト結果詳細に空欄bがあり、網掛け部分は非表示。
図3 企業向けサービスの追加部分の概念データモデル(未完成)。コース、企業、テスト、法人受講生、グループ、研修カリキュラムと、網掛けで名称が伏せられたエンティティタイプあ~おを示す未完成の概念データモデル。コースとテストは図1と同じ。
図3 企業向けサービスの追加部分の概念データモデル(未完成)。コース、企業、テスト、法人受講生、グループ、研修カリキュラムと、網掛けで名称が伏せられたエンティティタイプあ~おを示す未完成の概念データモデル。コースとテストは図1と同じ。
図4 企業向けサービスの追加部分の関係スキーマ(未完成)。コース、企業、テスト、法人受講生、グループ、研修カリキュラムと、関係あ~おの関係スキーマ。関係あ~おの属性に空欄c~gがあり、コースとテストの網掛け部分は図2と同じ属性であることを注記している。
図4 企業向けサービスの追加部分の関係スキーマ(未完成)。コース、企業、テスト、法人受講生、グループ、研修カリキュラムと、関係あ~おの関係スキーマ。関係あ~おの属性に空欄c~gがあり、コースとテストの網掛け部分は図2と同じ属性であることを注記している。
解き方のヒントを見る

業務要件から対応関係を読み取る

データベース設計の問題では、業務要件の一文一文が、どの実体とどの実体の対応関係を述べているかを丁寧に読み取ることが出発点になります。本ヒントでは観点をその一点に絞り、記述の根拠を自分で確かめながら検討する姿勢を整理します。

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

問われている箇所について、関係する業務要件の記述を探し、それが一対一・一対多・多対多のどれに当たるのか、また対応が必須か任意かを自分の言葉で言い直してから、判断に使えるかを確認します。

視点

実体間の対応関係は、片方向だけでなく「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による補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針