資格部

資格・検定の試験情報、対策方法、問題解説などをご紹介

AP 午後 データベース[R3秋]

企業向け電子書籍サービスの追加設計と実装に関する次の記述を読んで,設問1〜4に答えよ。

 H社は,個人会員向けに電子書籍の販売及び閲覧サービス(以下,既存サービスという)を提供する中堅企業である。近年,テレワークの普及に伴い,企業での電子書籍の需要が高まってきた。そこで,既存サービスに加え,企業向け電子書籍サービス(以下,新サービスという)を開発することになった。
 新サービスの開始に向けて,企業向け書籍購入サイトを新たに作成し,既存サービスで提供している電子書籍リーダを改修する。新サービスの機能概要を表1に,検討したデータベースのE-R図の抜粋を図1に示す。
 このデータベースでは,E-R図のエンティティ名を表名にし,属性名を列名にして,適切なデータ型で表定義した関係データベースによって,データを管理する。

表1 新サービスの機能概要
No. 機能名 概要
1 一括購入 企業の一括購入担当者が,電子書籍を一括購入する。購入した電子書籍を企業の社員に割り当てる方法には,次の二つがある。
(1)一括購入担当者が,配布対象の社員にあらかじめ割り当てておく方法
(2)社員が,未割当の一括購入された電子書籍を割当依頼する方法
2 企業補助 社員が,自己啓発に役立つビジネスや技術など特定の分類の電子書籍を購入する。その際,企業が購入額の一部を負担する。ただし,企業は負担する上限金額を書籍分類ごとに設定する。
3 割引購入 社員が,個人として読みたい本や雑誌などの電子書籍を購入する。その際,それぞれの企業がH社と契約した一定の割引率を適用した価格で購入できる。
4 書籍閲覧 社員が,電子書籍リーダに,H社が付与した企業ID,社員ID及び社員パスワードを用いてログインし,No.1〜3で購入した電子書籍を閲覧する。電子書籍リーダにログインすると,一括購入で割り当てられた電子書籍や,社員が購入した電子書籍が一覧表示され,各電子書籍を選択して閲覧できる。

f:id:trhnmr:20211011134248p:plain
図1 検討したデータベースのE-R図(抜粋)

一括購入機能の社員割当処理の作成

 表1中の一括購入機能の概要(2)にある,社員が割当依頼した電子書籍を割り当てる処理を考える。検討した処理の流れを表2に示す。ここで,“:一括購入ID”は割当依頼された一括購入IDを,“:企業ID”及び“:社員ID”は割当依頼した社員の企業IDと社員IDを格納する埋込み変数である。

表2 検討した処理の流れ
手順 処理概要 使用するSQL文
1 社員が割当依頼した一括購入IDから,一括購入数量を取得する。 SELECT 一括購入数量
FROM 一括購入,
WHERE 一括購入 ID = :一括購入ID
2 社員が割当依頼した一括購入IDのうち,現在割り当てられている数量を取得する。 SELECT   d  
FROM 一括購入割当
WHERE 一括購入ID = :一括購入ID
3 手順1で取得した数量が,手順2で取得した数量より  e  場合,手順4に進む。そうでない場合,処理を終了する。 なし
4 割当依頼した社員に一括購入IDを割り当てる。 INSERT INTO 一括購入割当
(一括購入ID, 社員ID, 企業ID)
  f  

 表2のレビューを実施したところ,処理の流れやSQL文に問題はないが,①トランザクションの同時実行制御には専有ロックを用いるように,とのアドバイスを受けた。

書籍閲覧機能の作成

 電子書籍リーダに,社員がログインした際,閲覧可能な重複を含まない書籍の一覧を取得するSQL文を図2に示す。ここで,“:企業ID”及び“:社員ID”は,ログインした社員の企業IDと社員IDを格納する埋込み変数である。また,図2の  c  には,図1の  c  と同じ字句が入る。

SELECT sk.  c  
FROM 社員書籍購入 sk
WHERE sk.企業ID = :企業ID AND sk.社員ID = :社員ID
  g  
SELECT ik.  c  
FROM 一括購入 ik
 INNER JOIN 一括購入割当 iw
   h  
WHERE ik.企業ID = :企業ID AND iw.社員ID = :社員ID

図2 閲覧可能な重複を含まない書籍の一覧を取得するSQL文

書籍閲覧機能の改善

 書籍閲覧機能のレビューを実施したところ,既存サービスを個人で利用している社員は,電子書籍リーダのログインIDを個人会員IDから企業IDと社員IDに切り替えて利用しなければならず煩雑である,との指摘を受けた。
 そこで,電子書籍リーダに個人会員IDを用いてログインした際,社員として閲覧できる書籍も一覧に追加して閲覧できるように,E-R図に新たに②一つエンティティを追加し,電子書籍リーダに③一つ画面を追加した上で書籍閲覧機能に改修を施した。

出典:令和3年度秋期 問6

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

 

解答・解説
解答例

 準備中

解説
準備中

 

 

設問2 〔一括購入機能の社員割当処理の作成〕について,(1),(2)に答えよ。

 

(1)表2中の  d    f  に入れる適切な字句を答えよ。

 

解答・解説
解答例

 準備中

解説
準備中

 

 

(2)本文中の下線金の専有ロックを用いなかった場合,どのような問題が発生するか。30字以内で述べよ。

 

解答・解説
解答例

 準備中

解説
準備中

 

 

設問3 図2中の  g    h  に入れる適切な字句又は式を答えよ。
なお,表の列名には必ずその表の相関名を付けて答えよ。

 

解答・解説
解答例

 準備中

解説
準備中

 

 

設問4 〔書籍閲覧機能の改善〕について,(1),(2)に答えよ。

 

(1)本文中の下線2で追加したエンティティの属性名を全て列挙せよ。
なお,エンティティの属性名に主キーや外部キーを示す下線は付けなくてよい。

 

解答・解説
解答例

 準備中

解説
準備中

 

 

(2)本文中の下線3とは,どのような画面か。25字以内で述べよ。

 

解答・解説
解答例

 準備中

解説
準備中

 

 

IPA公開情報

出題趣旨

 近年,テレワークの普及に伴い,インターネット利用を前提とする新しいサービスが増えつつある。 本問では,企業向け電子書籍サービスを題材に,E-R 図や SQL 文に関する基本的な理解,トランザクション 処理における同時実行制御に関する理解,業務要件からデータモデルを実装する能力を問う。

採点講評

 問 6 では,企業向け電子書籍サービスを題材に,E-R 図,SQL 文,トランザクション処理における同時実行制御,データモデルなどについて出題した。全体として正答率は平均的であった。
 設問 1 の b は,正答率が平均的であった。新サービスの機能概要中にある割引購入と E-R 図を注意深く読んで,正答を導いてほしい。
 設問 2(1)の f は,正答率が低かった。INSERT 文を用いたデータの挿入は,重要なデータ操作の一つである。 基本的な構文だけではなく,埋込み変数を用いた記述方法についても理解してほしい。 設問 4(2)は,正答率が低かった。電子書籍リーダに個人会員 ID を用いてログインしている状況において,どのような画面を追加するかを問うたが,その状況や画面追加を考慮しない解答が散見された。落ち着いて問題文を読んで解答するよう心掛けてもらいたい。