令和7年度 秋期 応用情報技術者試験 午後 問題 問6 受講管理システムのデータモデル変更

テクノロジデータベース

この問題は2025(R7)秋 応用情報技術者 午後に出題されたものです。出題時点の法令・制度に基づく内容のため、現行の内容と一致しない場合があります。

本ページの問題文・選択肢は、原本の体裁を Web 表示用に正規化しています(改行・記号・数式・図表参照の調整)。設問の趣旨および正解に影響する変更は加えていません。

学習ガイド

英会話スクールの受講管理システムに新しい講座区分を追加する改修を題材に、データモデルの変更とSQLを問う問題です。従来講座と新講座の違いをスーパータイプ/サブタイプでどう表現するか、その分割理由を字数内で説明できるかが中心的な論点になります。この記事では、2つの講座の要件差分表を作ってからE-R図の変更を検討し、SQL文の空欄もモデルとの対応関係から機械的に導ける形で解説します。

この記事で押さえる論点

  • スーパータイプ/サブタイプ分割の判断理由を説明する
  • 講座追加の要件をE-R図と関係スキーマの変更に反映する
  • ビュー定義や結合を含むSQL文の空欄を埋める

問題本文

問6 受講管理システムの改修に関する次の記述を読んで,設問に答えよ。

D社は,日本人を対象に英会話のオンライン教育サービスを提供する中堅企業である。従来は,ビジネス英会話の講座を提供していたが,それに加えて日常英会話の講座を追加することになった。
従来のビジネス英会話講座と新規に追加する日常英会話講座との違いを表1に示す。

表1 従来のビジネス英会話講座と新規に追加する日常英会話講座との違い
図の説明テキスト
項目大分類 項目小分類 ビジネス英会話講座 日常英会話講座
講座の種類 レベル 初級,中級,上級の3段階 A1,A2,B1,B2,C1,C2の6段階
講座の種類 ジャンル 海外出張,会議,交渉などの15種類 社交,旅行,趣味などの10種類(変更の可能性あり)
講座の種類 年齢層 なし 幼児・小学生,中学生・高校生,大学生・大人の3種類
受講形態 6人までのグループに対して1人の講師がつく受講形態 2人までの受講者に対して1人の講師がつく受講形態
受講予約方法 講座の開催スケジュールが決まっていて,それに受講者が先着順で応募する。 受講者が希望日時を指定して,その時間帯に空いている講師を選択して予約する。

日常英会話講座のジャンルは,サービスを開始してから1年程度は,申込み具合などを考慮して変更する可能性がある。
講師は割り当てられた講座の開始時刻から終了時刻まで拘束されるが,それ以外の時間帯は自由である。現状は勤務日と講座担当の割当てだけで勤務を管理している。講座の受講管理には,受講管理システムを利用している。
現状のビジネス英会話講座を管理する受講管理システムのE-R図を図1に示す。

図1 現状のビジネス英会話講座を管理する受講管理システムのE-R図
図の説明テキスト

【エンティティの構成と属性】(実線下線は主キー、破線下線は外部キー。主キーと外部キーを兼ねる場合は実線のみ)
・受講予約・結果: 受講者コード(PK), 講座コード(PK), a(PK), 出欠, 評価, アドバイス
・受講者: 受講者コード(PK), 氏名, 性別, 生年月日
・開催スケジュール: 講座コード(PK), 開催番号(PK), 開催年月日, 開始時刻, 終了時刻
・講座: 講座コード(PK), 講座名, レベル, ジャンル, 講座概要, 最大受講者数
・講座担当割当: 講座コード(PK), 開催番号(PK), 講師コード(PK)
・講師: 講師コード(PK), 氏名, 性別, 生年月日, 略歴
・勤務日: 勤務年月日(PK), 講師コード(PK)

【リレーションシップ】
・受講予約・結果 から 受講者 へ矢印(多対1)
・受講予約・結果 と 開催スケジュール の間に線があり、線上にbが配置されている
・開催スケジュール から 講座 へ矢印(多対1)
・講座担当割当 から 開催スケジュール へ矢印(多対1)
・講座担当割当 から 講師 へ矢印(多対1)
・勤務日 から 講師 へ矢印(多対1)

【凡例】
・線のみ: 1対1
・片側矢印(→): 1対多
・両側矢印(←→): 多対多
・エンティティのボックスは上部にエンティティ名、下部に属性名を記述

【注記】
属性名の実線の下線は主キー、破線の直線は外部キーを示す。主キーの実線が付いている属性名には、外部キーの破線を付けない。

開催スケジュールについては,同じ講座が複数回開催されるので,開催番号で区別している。

受講管理システムのデータベースでは,E-R図のエンティティ名を表名にし,属性名を列名にして,適切なデータ型で表定義した関係データベースによって,データを管理する。

〔受講管理システムの関係スキーマの変更〕

講座の種類には,表1に示す内容に沿った値以外のものを格納できないように定義域制約を適用する。

日常英会話講座の追加に当たり,日常英会話講座のジャンルの変更の容易性と講師の勤務管理の厳密化を考慮して,受講管理システムの関係スキーマの変更内容を次のように検討した。

  • 講座エンティティをスーパータイプにして,ビジネス英会話講座エンティティ,日常英会話講座エンティティをサブタイプとして新規に追加する。講座エンティティにビジネス英会話講座か日常英会話講座かを区別する講座区分属性を追加して,講座エンティティからc及びd二つの属性をサブタイプに移す
  • 勤務日でも講師が講座を受けもつことができない時間帯は予約できないようにするため,勤務日の勤務可能時間帯を管理する勤務可能時間エンティティを追加する。

追加及び変更するエンティティを図2に示す。

図2 追加及び変更するエンティティ
図の説明テキスト

ER図のような模式図。
・スーパータイプ「講座(省略)」から、排他的なサブタイプとして「ビジネス英会話講座」と「日常英会話講座」が派生している。
・「ビジネス英会話講座」の属性: 講座コード(主キー、下線あり)、cd
・「日常英会話講座」の属性: 講座コード(主キー、下線あり)、cde
・右側に独立したエンティティ「勤務可能時間」がある。属性は 勤務年月日(主キー、下線あり)、講師コード(主キー、下線あり)、開始時刻(主キー、下線あり)、終了時刻。
・左下に「凡例」があり、スーパータイプからサブタイプへの派生を示す記法(線と三角形)が説明されている。

〔表の定義の追加,変更〕

受講管理システムの関係スキーマの変更に伴い,新規表の定義,既存表の変更を行う。今回の変更では,スーパータイプ,サブタイプのエンティティごとに別の表にしている。講座表の変更に当たり,削除する列の情報は削除前に保存して,追加したサブタイプに反映する。
講座表の変更を行うSQL文を図3に示す。

図3 講座表の変更を行う SQL 文
図の説明テキスト

講座表の変更を行うSQL文を示す枠。3行のSQL文が記載されており、それぞれ空欄を含む。
1行目: f TABLE 講座 ADD COLUMN 講座区分 VARCHAR(10)
2行目: f TABLE 講座 DROP COLUMN c CASCADE
3行目: f TABLE 講座 DROP COLUMN d CASCADE

勤務可能時間表を作成するSQL文を図4に示す。

図4で,勤務日表の行が削除された場合は,参照元の勤務可能時間表の行も自動的に削除されるようにしている。

図4 勤務可能時間表を作成する SQL 文
図の説明テキスト

勤務可能時間表を作成するSQL文を示す枠。
CREATE TABLE 勤務可能時間(
勤務年月日 DATE,
講師コード CHAR(10),
開始時刻 TIME,
終了時刻 TIME,
PRIMARY KEY(勤務年月日, 講師コード, 開始時刻),
FOREIGN KEY(勤務年月日, 講師コード) REFERENCES 勤務日( g )
ON DELETE h )

〔勤務日の削除〕

勤務日が削除可能となるのは,指定した日の勤務年月日に開催する講座を講師が担当していない場合である。

指定した日にある講師が担当している講座の講座コードの一覧を取得するSQL文を図5に示す。ここで,“:講師コード”と“:勤務年月日”は,それぞれ対象となる講師の講師コードと指定した日の年月日を格納する埋込み変数である。

なお,CAST指定は,データ型を変換する際に使用される。

図5 指定した日にある講師が担当している講座の講座コードの一覧を取得する SQL 文
図の説明テキスト

指定した日にある講師が担当している講座の講座コードの一覧を取得するSQL文を示す枠。
SELECT DISTINCT t0.講座コード
FROM 開催スケジュール t0
INNER JOIN 講座担当割当 t1 i
WHERE t1.講師コード = :講師コード AND t0.開催年月日 = CAST(:勤務年月日 AS DATE)

設問と解答・解説

設問1

図1中の ab に入れる適切な属性名及びエンティティ間の関連を答え,E-R図を完成させよ。なお,属性名の表記及びエンティティ間の関連は図1の凡例に倣うこと。

(1)

a に入れる適切な属性名を答えよ。

模範解答

開催番号

採点基準(配点 2点)

正確性(内容)(2点)

  • 2: 正答「開催番号」を記載し、かつ主キーを示す実線の下線が付与されている。
  • 1: 正答要素は含まれているが、主キーを示す実線の下線が付いていない、または表記揺れがある。
  • 0: 正答と一致しない、または無解答。

解説

図1のE-R図において、開催スケジュールエンティティの主キーを特定する問題です。

  • 開催スケジュールは、特定の講座のインスタンスとして複数存在します。
  • したがって、開催スケジュールを一意に識別するためには、親となる講座の「講座コード」と、その講座内での開催回を示す「開催番号」の複合キーが必要です。
  • E-R図の凡例に従い、主キー属性として a には「開催番号」が入ります。

高得点のポイント

  • E-R図における主キー・外部キーの構成を正確に読み取り、一つの開催スケジュールに対して複数の受講者が参加することに注意して関連を把握すること。
  • 主キーを表す実線の下線を正しく記述すること。

(2)

b に入れる適切なエンティティ間の関連を答えよ。

模範解答

採点基準(配点 2点)

正確性(内容)(2点)

  • 2: 正答「←」が正しく記述されている。
  • 1: 多重度の意図は正しいが、図1の凡例に完全には倣っていない記号が使用されている。
  • 0: 1対1の関連を記載しているなど、関連性が不適切または無解答。

解説

エンティティ間の関連(多重度)をE-R図に記述する問題です。

  • 1つの講座に対して、複数の開催スケジュールが存在します。
  • したがって、「講座」から「開催スケジュール」へは1対多の関連となります。
  • 図1の凡例に従い、多側(開催スケジュール側)に向けて矢印「」を記述します。

高得点のポイント

  • 1つの開催スケジュールに対して複数の受講者が参加することなど、エンティティ間の1対多の構造を正しく理解し、凡例通りの記号を用いること。

設問1は,正答率が平均的であった。実線の下線が付いていない解答や,1対1の関連を記載した解答が散見された。一つの開催スケジュールに対して,複数の受講者が参加することに注意して解答をしてほしい。

設問2

(1)

本文,図2及び図3中の c に入れる適切な属性名を答えよ。

模範解答

レベル

ジャンル

採点基準(配点 2点)

正確性(内容)(2点)

  • 2: 「レベル」または「ジャンル」が正しく記載されている。
  • 1: 正答要素を含んでいるが、余分な記述や表記揺れが含まれている。
  • 0: 正答と一致しない、または無解答。

解説

スーパータイプとサブタイプの設計における属性の配置を問う問題です。

  • eラーニング講座と集合研修講座の共通属性と固有属性を分類します。
  • どちらの講座区分にも共通して存在する属性は「講座コード」「講座名」「レベル」「ジャンル」です。
  • スーパータイプである「講座」エンティティには共通属性を持たせるため、cd には「レベル」と「ジャンル」が入ります。

高得点のポイント

  • 共通の属性はスーパータイプに、固有の属性はサブタイプに定義するというデータベース設計の基本原則に従うこと。
  • 属性名に惑わされず、講座区分の性質から共通項を見極めること。

(2)

本文,図2及び図3中の d に入れる適切な属性名を答えよ。

模範解答

レベル

ジャンル

採点基準(配点 2点)

正確性(内容)(2点)

  • 2: 「レベル」または「ジャンル」(cと重複しない方)が正しく記載されている。
  • 1: 正答要素を含んでいるが、余分な記述や表記揺れが含まれている。
  • 0: 正答と一致しない、または無解答。

解説

スーパータイプとサブタイプの設計における属性の配置を問う問題です。

  • eラーニング講座と集合研修講座の共通属性と固有属性を分類します。
  • どちらの講座区分にも共通して存在する属性は「講座コード」「講座名」「レベル」「ジャンル」です。
  • スーパータイプである「講座」エンティティには共通属性を持たせるため、cd には「レベル」と「ジャンル」が入ります。

高得点のポイント

  • 共通の属性はスーパータイプに、固有の属性はサブタイプに定義するというデータベース設計の基本原則に従うこと。
  • 属性名に惑わされず、講座区分の性質から共通項を見極めること。

(3)

本文中の下線①について,二つの属性をサブタイプに移した理由を20字以内で答えよ。

模範解答

定義域が講座区分によって異なるから

採点基準(配点 2点)

知識・理解度(内容)(1点)

  • 1: 属性の「定義域」や「適用範囲」についての理解が明確に示されている。
  • 0: 属性の定義域や適用範囲に関する言及がない。

論理性(構造)(1点)

  • 1: 「講座区分によって異なる」という理由が文脈に沿って論理的に記述されている。
  • 0: 論理的な記述になっていない、または理由として成立していない。

解説

スーパータイプ・サブタイプ設計において、特定の属性をサブタイプへ移行する理由を記述する問題です。

  • 属性の適用範囲(定義域)に着目します。
  • 「受講可能期間」はeラーニング講座固有であり、「定員」「開催場所」は集合研修講座固有の概念です。
  • これらの属性をスーパータイプ(講座)に持たせると、講座区分によっては不要な項目が生じるなど、定義域が曖昧になります。
  • したがって、属性の定義域が講座区分によって異なるため、それぞれのサブタイプに属性を移すのが適切な設計です。

高得点のポイント

  • サブタイプごとに属性の定義域(適用範囲)が異なることを明示すること。
  • 講座区分によって必要な属性が変わる点に言及し、論理的な理由としてまとめること。

(4)

図2中の e に入れる適切な属性名を答えよ。

模範解答

年齢層

採点基準(配点 2点)

正確性(内容)(2点)

  • 2: 正答「年齢層」が正しく記載されている。
  • 1: 正答要素を含んでいるが、表記揺れや余分な文字が含まれている。
  • 0: 正答と一致しない、または無解答。

解説

受講管理システムの要件変更に伴い追加された属性を特定する問題です。

  • 変更後の要件において、「受講者の年齢層」を分析・集計する必要が生じたことが本文から読み取れます。
  • したがって、図2の受講者エンティティに追加される属性 e には「年齢層」が入ります。

高得点のポイント

  • 本文の要件定義から、データモデル(関係スキーマ)に必要な属性を過不足なく抽出すること。

設問2(2)は,正答率がやや低かった。スーパータイプ/サブタイプにおいては,共通の属性はスーパータイプに,固有の属性はサブタイプに定義するという基本に従い,属性名に惑わされることなく正答を導き出してほしい。

設問3

図3中の f に入れる適切な字句を答えよ。

模範解答

ALTER

採点基準(配点 2点)

正確性(内容)(2点)

  • 2: 正答「ALTER」が正しく記載されている。
  • 1: 大文字・小文字の差異や表記揺れがあるものの、ALTER文の意図が読み取れる。
  • 0: 正答と一致しない、または無解答。

解説

既存のテーブル定義を変更するためのSQL文(DDL)を完成させる問題です。

  • 既存の「受講」テーブルに対して外部キー制約を追加するためには、テーブルの構造を変更する ALTER TABLE 文を使用します。
  • したがって、f には ALTER が入ります。

高得点のポイント

  • CREATE, ALTER, DROP などのDDL(データ定義言語)の基本的な文法と用途を正確に理解しておくこと。

設問4

図4中の gh に入れる適切な字句を答えよ。

(1)

g に入れる適切な字句を答えよ。

模範解答

勤務年月日

講師コード

採点基準(配点 2点)

正確性(内容)(2点)

  • 2: 「勤務年月日」と「講師コード」の両方が正しく記載されている。
  • 1: 一方のみが正しい、または表記揺れが見られるが意図は正しい。
  • 0: 正答と一致しない、または無解答。

解説

「講師勤務実績」テーブルの主キーを定義するDDL文を完成させる問題です。

  • 講師の勤務実績を一意に特定するためのキー構成を考えます。
  • E-R図およびスキーマ設計から、講師勤務実績は「どの日」に「どの講師」が勤務したかを記録するものであるため、「勤務年月日」と「講師コード」の複合主キーとなります。
  • g にはこれら2つの属性名が入ります。

高得点のポイント

  • 複合主キーの構成要素をエンティティの関連から正しく読み取ること。
  • CREATE文などのDDL文法において、PRIMARY KEYに指定するべき属性を正確に記述できること。

(2)

h に入れる適切な字句を答えよ。

模範解答

CASCADE

採点基準(配点 2点)

正確性(内容)(2点)

  • 2: 正答「CASCADE」が正しく記載されている。
  • 1: 大文字小文字の違いなど軽微な表記揺れがあるが意図は伝わる。
  • 0: CASCADEではなく属性名を記載しているなど、DDLの文法として不適切または無解答。

解説

外部キー制約における参照整合性アクションを指定する問題です。

  • 「講師」テーブルのレコードが削除された際、それに紐づく「講師勤務実績」のレコードも自動的に削除されるようにする要件です。
  • これを実現するためには、ON DELETE 句に続けて CASCADE を指定します。
  • したがって、h には CASCADE が入ります。

高得点のポイント

  • 削除時のアクション(CASCADE, SET NULL, RESTRICT など)のSQL構文とその意味を正確に理解しておくこと。

設問4 hは,正答率がやや低かった。削除時のアクションではなく,属性名を記載するなどの誤った解答が散見された。CREATE文やALTER文などのDDLは,データベースの設計や実装をする上で必要な知識なので,文法を正確に理解してほしい。

設問5

図5中の i に入れる適切な字句を答えよ。

模範解答

ON t0.講座コード = t1.講座コード AND t0.開催番号 = t1.開催番号

採点基準(配点 2点)

正確性(内容)(2点)

  • 2: 「ON t0.講座コード = t1.講座コード AND t0.開催番号 = t1.開催番号」の構成で正しく記述されている。
  • 1: 複合主キーの一部のみ記述されている、またはエイリアスの指定に不備があるが意図は伝わる。
  • 0: 結合条件として成立していない、または無解答。

解説

SQLにおけるテーブルの結合条件(ON 句)を記述する問題です。

  • t0t1 のテーブルを結合する際、対象となる「開催スケジュール」エンティティを一意に特定する必要があります。
  • 開催スケジュールの主キーは「講座コード」と「開催番号」の複合キーです。
  • したがって、結合条件にはこの2つの列が両方とも一致することを AND で結んで記述する必要があります。

高得点のポイント

  • 複合主キーを持つテーブルを結合する際は、主キーを構成するすべての列を結合条件に含めること。
  • SQL構文に従い、テーブルのエイリアス(t0, t1)を正確に用いて条件を記述できること。