公式サイトの問題冊子はこちら。
https://www.ipa.go.jp/shiken/mondai-kaiotu/gmcbt8000000fabr-att/2018h30h_db_pm2_qs.pdf
問1-設問1-(1)
図1中のア、イに入れる一つ又は複数の列名を答えよ
- 「申請には、社員番号、申請理由、仮払金額、精算期限を記載する」
- 「事務センタは、未精算の仮払金を仮払金残高として記録し、社員が精算期限までに全額を精算するように促している」
- 「承認の場合は、申請に上司承認日を記録して庶務担当者に回付する」
- 「問題がなければ、申請に精査日を記録する」
- 「仮払金は、申請を基に一定額の支払いを行い、申請に支払実行日を記録する」
- ア: 仮払金額、精算期限、仮払金残高、上司承認日、精算日、支払実行日
- 「精算時には、精算日ごとに精算金額を記録し、仮払金残高から精算金額を減額する」
- 仮払金精算は、申請番号と精算日で識別される
- イ: 申請番号、精算日、精算金額
問1-設問1-(2)
表6中の太枠内に適切な字句を記入して、太枠内を完成させよ
外貨金額
- 「数値の列が整数である場合は、取り得る値の範囲に応じて、SMALLINT又はINTEGERを選択する。それ以外の場合はDECIMALを選択する」
- 表1「外貨で支払う場合に、通貨コード及び支払金額に相当する外貨金額(0.01~9,999,999,999.99)を指定」なので、最大12桁、うち小数点以下は2桁
- 格納長は、DECIMALのバイト数:(12÷2+1)に、NOT NULLの1バイトを加えた8バイト
支払先
- 「文字列型の列が全角文字の場合は、NCHAR又はNCHAR VARYINGを選択し、それ以外の場合はCHARまたはVARCHARを選択する」
- 表1「支払先の名称、所在地(全角文字100字以内、平均文字数は20文字)。申請登録時の指定は、経費支払依頼では必須、立替経費精算では任意である」
- 全角文字で最大100字の可変長なので、NCHAR VARYING
- 格納長は、NCHAR VARYINGのバイト数:(20×2)と制御文字4バイトに、NOT NULLの1バイトを加えた45バイト
支払目的
- 表1「一般経費申請における経費の目的、用途(全角文字1,000字以内、平均文字数は64文字)。申請登録時の指定は必須である」
- 全角文字で最大1000字の可変長なので、NCHAR VARYING
- 格納長は、NCHAR VARYINGのバイト数:(64×2)に制御文字4バイトを加えた132バイト
支払予定日
- 表1「一般経費申請において、支払完了時に、支払の基になった支払伝票の支払予定日を記録する」
- 日付なので、DATE
- 格納長は、DATEの4バイトに、NOT NULLの1バイトを加えた5バイト
支払番号
- 表1「一般経費申請において、支払完了時に、支払の基になった支払伝票の支払番号(1~99,999)を記録する」
- 最大99999の整数なので、INTEGER
- 格納長は、INTEGERの4バイトに、NOT NULLの1バイトを加えた5バイト
- 「一般経費は、申請ごとに支払伝票を作成し、申請に支払伝票の支払予定日及び支払番号を記録する」
- 「主キー以外で値が一意となる列又は列の組み合わせには、必ずユニーク索引を作成する」
- 外部キー{支払予定日、支払番号}は、支払伝票の主キーを参照する、値が一意となる列の組み合わせ
- 「各索引の構成列には、構成列の定義順に1からの連番を記入する」
- 構成列の定義順は、
一般経費申請(申請番号、社員番号、、、、支払予定日、支払番号)
| 列名 | データ型 | NOT NULL | 格納長 | P | NU | NU | NU | U |
|---|---|---|---|---|---|---|---|---|
| 外貨金額 | DECIMAL(12,2) | N | 8 | |||||
| 支払先 | !NCHAR VARYING(100) | N | 45 | |||||
| 支払目的 | NCHAR VARYING(1000) | Y | 132 | |||||
| 支払予定日 | DATE | N | 5 | 1 | ||||
| 支払番号 | INTEGER | N | 5 | 2 |
問1-設問1-(3)
表6中のウに入れる適切な字句を答えよ
- 表1「申請種別: '1'(立替経費精算)、'2'(経費支払依頼)のいずれか」
- 表1「支払先: 経費支払依頼では必須、立替経費精算では任意である」
- 経費支払依頼の場合は、AND 支払先 IS NOT NULL
申請種別='1' OR (申請種別='2' AND 支払先 IS NOT NULL)
※括弧は無くてもいい
問1-設問1-(4)
表7中のa~dに入れる適切な数値を答えよ
- 表2より、ページサイズは4,000バイト
- 「空き領域率は10%とする」より、有効ページサイズは3,600バイト
- ページ当たりの平均行数=有効サイズ3,600バイト÷平均行長239バイト=15.06行
- 必要データページ数=見積行数1,500,000÷ページ当たり平均行数15=100000
- データ所要量=必要データページ数100,000×ページサイズ4000B=400MB
- a: 4,000
- b: 15
- c: 100,000
- d: 400
問1-設問2
e~iに入れる適切な数値を答えよ
e
- 「CPUの1データページ当たりの処理時間は、0.2ミリ秒である」
- 「トランザクションごとに、平均50データページにアクセスする」
トランザクション当たりの処理時間=0.2×50=10
- e: 10
f
- 「CPUの1トランザクション当たりの処理時間は10ミリ秒」
200トランザクションの処理時間(秒)=10×0.001×200=2
- f: 2
g
- 「一般経費申請では1秒間に200トランザクションを処理することが」
- 「200トランザクションの処理時間は2秒」
- 「CPU使用率を80%とする」
必要なCPU数=\frac{200トランザクション}{処理能力(200÷2)×CPU使用率0.8})=2.5
- g: 3
h
- 「1データページ当たりのストレージへのI/O時間は、20ミリ秒である」
- 「トランザクションごとに、平均50データページにアクセスする」
1トランザクション当たりのI/O時間=20×50=1000ミリ秒
- h: 1
i
- 「CPUの1トランザクション当たりの処理時間は10ミリ秒」
- 「1データページ当たりのストレージへのI/O時間は、20ミリ秒である」
- 「トランザクションごとに、平均50データページにアクセスする」
- 「バッファヒット率が60%」
- CPU処理時間=10ミリ秒
- I/O時間=20×50×(1-0.6)=400ミリ秒
- h: 0.41
問1-設問3-(1)
①
性能見積りによって求められた、経費精算システム全体のDBサーバに必要な仮想CPU数を答えよ。また、表8から、選定条件を満たす専用サーバのクラス名を一つ答えよ
- 「ピーク時に、旅費申請及び交通費申請では、両者を合わせて1秒間に400トランザクションを、一般経費申請では1秒間に200トランザクションを処理する」
- 設問2-gの解法を流用
必要なCPU数=\frac{(400+200)トランザクション}{処理能力(200÷2)×CPU使用率0.8})=7.5
表8より、仮想CPU数が8以上で最小規模のクラスはC4
::: note info
仮想CPU数: 8
専用サーバのクラス名: C4
:::
②
基本サービスで、復元されたデータベースにコミット済みのトランザクションによる更新が反映されていないことがあるのはどのような場合か。具体的に35字以内で述べよ
- 「データベースの更新ログは、5分ごとにバックアップストレージに保存される」
- 更新ログに保存されていなければ復元時に反映されない
最新の更新ログに保存された後にコミットされたトランザクションの場合
問1-設問3-(2)
①
表9中のj~nに入れる適切な数値を答えよ
j
- 「旅費申請、交通費申請、一般経費申請テーブルの処理年月が当月に一致する行を対象に処理を行う」
- 「旅費申請に対応する旅費申請明細テーブルの行ごと、交通費申請に対応する交通費申請明細テーブルの行ごと、一般経費申請テーブルの行ごとに対象行をバッチPGM中に読み込む」
- 「60か月前から現在までのデータが全て保存されている」
| テーブル名 | 見積行数 | 月当たり |
|---|---|---|
| 旅費申請 | 150,000 | 2,500 |
| 交通費申請 | 180,000 | 3,000 |
| 旅費申請明細 | 1,500,000 | 25,000 |
| 交通費申請明細 | 3,600,000 | 60,000 |
| 一般経費申請 | 1,500,000 | 25,000 |
| 計 | 6,930,000 | 115,500 |
j: 115,500
k
- 「サーバ間通信対象台数は、処理ごとに、行の参照、追加のためにDBサーバとAPサーバ間で転送される行数」
- 行の参照時に、結果行数110,000行をDB→AP転送
- 追加時に、結果行数110,000行をAP→DB転送
k: 220,000
l
- 「経費予算テーブルの年月が、当月の12か月前から当月までの行を対象に処理を行う」なので、13か月分
- 「60か月前から現在までのデータが全て保存されている」
| テーブル名 | 見積行数 | 月当たり |
|---|---|---|
| 経費予算 | 12,000 | 2,600 |
| 経費伝票 | 6,600,000 | 1,430,000 |
| 計 | 6,612,000 | 1,432,600 |
l: 1,432,600
m
- 「GROUP BY句を用いて事業部、科目、年月ごとに集計して実績金額を求め」
- 「A社には、10の事業部があり」
- 「旅費交通費、通信費、接待交通費、消耗品費など、20科目がある」
- 集計対象年月は13
- 行の参照時に、結果行数をDB→AP転送
結果行数=10×20×13=2,600
m: 2,600
n: 2,600
②
表9中の処理について、サーバ間通信対象行数の削減対策による効果が最も大きい処理を挙げ、その対策内容を具体的に40字以内で述べよ
- サーバ間通信対象行数が最も多いのはk:220,000の経費伝票作成
- サーバ間通信を削減する場合、APサーバで実施しているバッチPGMの処理をDBサーバで行うことが効果的
処理:経費伝票作成
対策内容: APサーバのバッチPGM処理をDBサーバのストアドプロシジャに置き換える
問1-設問3-(3)
クラウドサービスの利用料金を低減できるジョブスケジュールの設定内容を、具体的に30字以内で述べよ
- 「ジョブスケジューラの機能を利用して、データベースの起動・停止、バックアップなどを、指定した間隔又は指定した日時に実行する」
- 「APサーバには汎用サーバを、DBサーバには専用サーバを利用する」
- 「専用サーバのサービス料金は、データベース利用時間×基本サービス利用料金で課金される」
- 「旅費交通費精算機能の運用時間帯は、平日の8時~23時であり、8時~20時にオンライン処理、20時~23時にバックアップ及びバッチ処理が行われる」
データベースの起動を平日の8時、停止を23時に設定する
問2-設問-(1)
表1中のア、イに適切な字句を入れて、表を完成させよ
- アは「所要量展開の結果、内製ユニットを製造するのに必要な中間仕掛品を全て引き当てできたか」がNのケース
- イは「所要量展開の結果、内製ユニットを製造するのに必要な構成部品を全て引き当てできたか」がNのケース
- 「在庫引き当て後、中間仕掛品が不足する場合には、後述する製造指図を行い、構成部品が不足する場合には、後述する発注を行う」
- ア: 中間仕掛品の製造を指図
- イ: 構成部品を発注
問2-設問-(2)
表2中の太枠内は未完成である。太枠内について、各品目が対応するサブタイプの欄に"◯"印を入れて、表を完成させよ
受注明細には次の分類がある
- 全体設計受注明細
- ユニット受注明細
- すり合わせ部品受注明細
- ソフトウェア受注明細
- 設置試運転受注明細
- 「ユニット受注明細には、、、購買ユニットの場合は仕入先に発注する」
- 「汎用すり合わせ部品を使う場合は仕入先に発注し、専用すり合わせ部品が必要な場合は製造を指図する」
- 「ソフトウェア受注明細には、詳細仕様を記録する。同じ品目であっても、製造部門の要員状況に応じて、製造を指図するか、仕掛先に発注するかを決める」
- 「設置・試運転受注明細を基に設置・試運転指示を行う」
所要量展開とは、製造品目に必要な投入品目とその数量を、品目構成に基づいて求めることである
- 「在庫引き当て後、中間仕掛品が不足する場合には、後述する製造指図を行い、構成部品が不足する場合には後述する発注を行う」
| 品目 | 受注品目 | 投入品目 | 製造品目 | 発注品目 |
|---|---|---|---|---|
| 購買ユニット | ◯ | ◯ | ||
| 中間仕掛品 | ◯ | ◯ | ||
| 構成部品 | ◯ | ◯ | ||
| 専用すり合わせ部品 | ◯ | ◯ | ||
| 汎用すり合わせ部品 | ◯ | ◯ | ||
| ソフトウェア | ◯ | ◯ | ◯ | |
| 設置試運転 | ◯ |
問2-設問-(3)
図1中のあ~うに入れるエンティティタイプ名を答えよ
あ
- 「取引先には、販売相手の得意先と、購買相手の仕入先がある」
い
- 「どの商談に対する受注かが分かるように商談#を記録する」
う
- 「入荷は、入荷#で識別し、入荷年月日、入荷数量、どの発注に該当する入荷であるかを記録する」
- あ: 得意先
- い: 商談
- う: 入荷
図1中で欠落している、リレーションシップ及び発注のサブタイプを補って、概念データモデルを完成させよ
- 「得意先には、契約先と出荷先がある」
- 「一つの得意先が契約先と出荷先を兼ねることもある」
- 「品目には、受注品目、投入品目、製造品目、発注品目がある」
- 表2より、受注品目と投入品目は重複しない
発注には次の分類がある
- ユニット発注
- すり合わせ発注
- ソフトウェア発注
- 構成部品定量発注
- 構成部品都度発注
- 「部門は階層構造であり、下位の部門は上位の一つの部門に所属する」
- 「商談は、商談#で識別し、案件名、案件内容、商談年月日、商談相手の契約先、商談を担当する技術営業社員を記録する」
- 「受注は、受注#で識別し、出荷先、受注年月日を記録する」
- 「受注明細は、受注#と受注明細#で識別し、受注品目コード、受注数量、受注単価、受注金額、出荷予定年月日、納入予定年月日を記録する」
- 「発注品目ごとに、仕入先が一つ決まっているる」
- 「発注品目ごとに、仕入先が一つ決まっているる」
- 「所要量展開とは、製造品目に必要な投入品目とその数量を求めることである」
- 「所要量展開の結果は、受注#、受注明細#、所要量明細#の組み合わせで識別し、必要品目、必要数量、引当済数量を記録する」
問2-設問-(4)
図2中のa~rに適切な一つ又は複数の属性名を入れ、更に図2中の下部の空白部分に、図1中で欠落している発注のサブタイプの関係スキーマを追加して、図を完成させよ
a
- 「部門は階層構造であり、下位の部門は上位の一つの部門に所属する」
a: 上位部門コード(FK)
b
- 「取引先が得意先と仕入先のどちらに該当するかは、取引先区分で分類している」
b: 取引先区分
c
- 「得意先には、契約先と出荷先がある。契約先は契約先フラグで識別し、出荷先は出荷先フラグで識別する」
c: 契約先フラグ、出荷先フラグ
d
- 「商談は、商談#で識別し、案件名、案件内容、商談年月日、商談相手の契約先、商談を担当する技術営業社員を記録する」
d: 案件名、案件内容、商談年月日、商談相手取引先コード(FK)、商談担当技術営業社員コード(FK)
e
- 「全体設計受注明細には、全体設計内容を記録する」
e: 全体設計内容
f
- 「ユニット受注明細には、ユニットが製菓ラインの何番目で使われるのかを表す工程順を記録する」
f: 工程順
g
- 「すり合せ部品受注明細には、すり合せ箇所を記録しておく」
- 「すり合せ部品受注明細ごとに、設計#を一つ割り振る」
- すり合せ設計とすり合せ部品受注明細で1対多になる場合も想定されるので、設計#を外部キーとして追加
g: すり合せ箇所、設計#(FK)
h
- 「ソフトウェア受注明細には、詳細仕様を記録する」
h: 詳細仕様
i
- 「設置・試運転受注明細には、開始予定年月日、終了予定年月日を記録しておく」
i: 開始予定年月日、終了予定年月日
j
- 「すり合せ部品設計には、汎用品を使うか専用品が必要かを区別する専汎区分を記録する」
j: 専汎区分
k
- 「設置・試運転受注明細を基に設置・試運転指示を行う。複数の指示に分かれることもある」
- 設置・試運転受注明細と設置・試運転指示の間に1対多のリレーションシップがあるので、設置・試運転指示に設置・試運転受注明細の主キーを外部キーとして持つ
- 「設置・試運転指示は、設置・試運転指示#で識別し、指示年月日を記録する」
k: 受注#(FK)、受注明細#(FK)、指示年月日
l
- 「内製ユニットの場合は受注明細を基に製造を指図する」
- ユニット製造指図に、ユニット受注明細の主キーを外部キーとして持つ
l: 受注#(FK)、受注明細#(FK)
m
- 「すり合わせ部品設計には、汎用品を使うか専用品が必要かを区別する専汎区分を記録する。汎用すり合わせ部品を使う場合は仕入先に発注し、専用すり合わせ部品が必要な場合は製造を指図する。」
- すり合わせ部品製造指図に、すり合わせ部品設計の主キーを外部キーとして持つ
m: 設計#(FK)
n
- 「ソフトウェア受注明細には、詳細仕様を記録する。同じ品目であっても、製造部門の要因状況に応じて、製造を指図するか、仕入先に発注するカを決める。」
- ソフトウェア製造指図に、ソフトウェア受注明細の主キーを外部キーとして持つ
n: 受注#(FK)、受注明細#(FK)
o
- 「製造部門が、製造する品目、製造指図数量、優先度を決定し、記録する。」
o: 製造品目コード(FK)、製造指図数量、優先度
p
- 「品目、製造指図数量を記録する。」
p: 製造品目コード(FK)、製造指図数量
q
- エンティティタイプう=入荷
- 「入荷は入荷♯で識別し、入荷年月日、入荷数量、どの発注に該当する入荷であるかを記録する」
q: 入荷#、入荷年月日、入荷数量、発注#(FK)
r
- 「所要量展開の結果は、受注♯、受注明細♯、所要量明細♯の組合せで識別し、必要品目、必要数量、引当済数量を記録する」
- 「所要量展開には、どの製造指図にまとめられたかの製造♯を記録する」
- 「所要量展開には、どの発注にまとめられたかの発注♯を記録する」
r: 所要量明細♯、品目コード(FK)、必要数量、引当済数量、製造♯(FK)、発注♯(FK)
欠落している発注サブタイプ
ユニット発注
- 「ユニット発注は、受注明細の受注数量がそのまま発注数量になる。仕入先から出荷先に、直接納入するかどうかの直納区分を記録する」
- 発注数量を記録するために受注明細の主キーを外部キーにもつ
ユニット発注: 発注♯、受注♯(FK)、受注明細♯(FK)、直納区分
すり合わせ部品発注
- 「すり合わせ部品発注は、受注明細の受注数量を基に発注ロットサイズを加味して、発注数量を決定する。どのすり合わせ部品設計に基づくのかの設計♯を記録する」
すり合わせ部品発注: 発注♯、発注数量、設計♯(FK)
ソフトウェア発注
- 「ソフトウェア発注は、受注明細の受注数量がそのまま発注数量となる。瑕疵担保期間を記録する」
- 発注数量を記録するために受注明細の主キーを外部キーにもつ
すり合わせ部品発注: 発注♯、受注♯(FK)、受注明細♯(FK)、瑕疵担保期間
構成部品定量発注
- 「品目、発注数量、発注時在庫数量を記録する」
構成部品定量発注: 発注♯、品目コード(FK)、発注数量、発注時在庫数量
構成部品都度発注
- 「品目、発注数量、希望納入年月日を記録する」
構成部品都度発注: 発注♯、品目コード(FK)、発注数量、希望納入年月日