コマンド道場

$ cat /exam/db/past/2021-autumn-am2

データベーススペシャリスト 令和3年度 秋期 午前Ⅱ

全 25 問です。各問の「解答と解説を見る」を開くと正解が出ます。まず自分で解いてから開いてください。

問 1

応用技術同じ設問が 令和5年度 秋期 午前Ⅱ 問1 にも出ています

CAP 定理に関する記述として,適切なものはどれか。

  1. ア
    システムの可用性は基本的に高く,サービスは利用可能であるが,整合性については厳密ではない。しかし,最終的には整合性が取れた状態となる。
  2. イ
    トランザクション処理は,データの整合性を保証するので,実行結果が矛盾した状態になることはない。
  3. ウ
    複数のトランザクションを並列に処理したときの実行結果と,直列で逐次処理したときの実行結果は一致する。
  4. エ
    分散システムにおいて,整合性,可用性,分断耐性の三つを同時に満たすことはできない。
解答と解説を見る

正解: エ

結論: 整合性・可用性・分断耐性の 3 つは同時に満たせません。

なぜ: ネットワークが分断されて連絡が取れなくなったとき、選べる道は 2 つしかありません。

  • 返事をしない(可用性を捨てる)… 他のノードとそろっている確信が持てないので答えない
  • 古いかもしれない値を返す(整合性を捨てる)… とにかく答える

分断そのものは避けられない以上、残りの 2 つのどちらかを諦めるしかないというのが CAP 定理です。

アは結果整合性(BASE)の説明、イは ACID の一貫性、ウは直列化可能性の説明で、いずれも CAP 定理そのものではありません。

解説は本サイトが独自に作成したものです。根拠にした一次情報は次のとおりです。

出典: 令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問1(IPA 独立行政法人 情報処理推進機構)/問題冊子・解答例

問 2

データモデル同じ設問が 平成31年度 春期 午前Ⅱ 問3 にも出ています

部,課,係の階層関係から成る組織のデータモデルとして,モデル A ~ C の三つの案が提出された。これらに対する解釈として,適切なものはどれか。組織階層における組織の位置を組織レベルと呼ぶ。組織間の階層関係は,親子として記述している。親と子は循環しないものとする。ここで,モデルの表記には UML を用い,{階層} は組織の親と子の関連が循環しないことを指定する制約記述である。

1*親子1*親子部部コード課課コード係係コード
モデル A
0..1親*子組織組織コード組織レベル
モデル B({階層}:組織の親と子の関連が循環しないことを指定する制約)
1*親1子*組織組織コード組織レベル組織構造親組織コード子組織コード
モデル C
  1. ア
    新しい組織レベルを設ける場合,どのモデルも変更する必要はない。
  2. イ
    どのモデルも,一つの子組織が複数の親組織から管轄される状況を記述できない。
  3. ウ
    モデル B を関係データベース上に実装する場合,親は子の組織コードを外部キーとする。
  4. エ
    モデル C では,組織の親子関係が循環しないように制約を課す必要がある。
解答と解説を見る

正解: エ

結論: モデル C は親子を別の表(組織構造)に自由に書けるので、循環しないことはモデルの外で制約として課す必要があります。

なぜ: モデル C の組織構造は「親組織コード・子組織コード」の組を何行でも持てます。A の親が B、B の親が A、という組も書けてしまいます。モデル B には {階層} という制約が付いていますが、モデル C には付いていないので、別に制約を設けなければ循環を防げません。

  • ア … モデル A は部・課・係を別々のクラスにしているので、組織レベルを 1 つ増やすにはクラスを足す必要があります
  • イ … モデル C の組織構造は、同じ子組織に親を何行でも書けるので、複数の親から管轄される状況を記述できます
  • ウ … モデル B では子 1 つに対して親は 0..1 個です。実装では、子の側が親の組織コードを外部キーとして持ちます(親の側が子を持つと、子の数だけ列が要ってしまいます)

解説は本サイトが独自に作成したものです。根拠にした一次情報は次のとおりです。

出典: 令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問2(IPA 独立行政法人 情報処理推進機構)/問題冊子・解答例

改変: 3 つのクラス図はスキャン画像のため、クラス名・属性・多重度・役割名(親・子)・制約 {階層} を保ったまま SVG で描き直しています。スマホの幅に収めるため、モデル A・C は横並びを縦並びにし、モデル B の {階層} は図の見出しに書いています。(内容は原本のままです)

問 3

正規化

関係 R (A, B, C) の候補キーが {A, B} と {A, C} であり,{A, B} →C 及び C→B の関数従属性があるとき,関係 R はどこまでの正規形の条件を満足しているか。

  1. ア
    第 1 正規形
  2. イ
    第 2 正規形
  3. ウ
    第 3 正規形
  4. エ
    ボイス・コッド正規形
解答と解説を見る

正解: ウ

結論: 第 3 正規形までは満たしますが、ボイス・コッド正規形は満たしません。

なぜ: 候補キーが {A, B} と {A, C} なので、A・B・C はどれもいずれかの候補キーに含まれる属性(キー属性)です。第 2・第 3 正規形の条件は「非キー属性が部分従属・推移従属しない」ことなので、非キー属性が 1 つも無い R は自動的に満たします。

ボイス・コッド正規形は、さらに「全ての関数従属の左辺が候補キーを含む」ことを求めます。C → B の左辺 C は単独ではどの候補キーも含まないので、ここで外れます。

打って確かめる

解説は本サイトが独自に作成したものです。根拠にした一次情報は次のとおりです。

出典: 令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問3(IPA 独立行政法人 情報処理推進機構)/問題冊子・解答例

問 4

データモデル

四つの表の関係を表す E-R 図として,適切なものはどれか。ここで,実線の下線は主キーを,破線の下線は外部キーを表す。

医師
医師番号
医師名
診療科コード
診療科
診療科コード
診療科名称
診察
診療科コード
患者番号
診察日時
患者
患者番号
患者名
  1. ア
    *1*11*医師診療科診察患者
  2. イ
    *11**1医師診療科診察患者
  3. ウ
    1**11*医師診療科診察患者
  4. エ
    1*1**1医師診療科診察患者
解答と解説を見る

正解: イ

結論: 外部キーを持つ側が「多」(*)、参照される側が「1」です。

なぜ: 表ごとに、どの表を参照しているかを読みます。

  • 医師 は診療科コードを外部キーに持つ → 1 つの診療科に医師は何人もいる。医師 * — 1 診療科
  • 診察 は診療科コードと患者番号を外部キーに持つ → 1 つの診療科・1 人の患者に診察は何回もある。診療科 1 — * 診察、診察 * — 1 患者

この 3 つがそろうのはイだけです。アは診療科と診察の向きが、ウ・エは医師と診療科の向きが逆です。

解説は本サイトが独自に作成したものです。根拠にした一次情報は次のとおりです。

出典: 令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問4(IPA 独立行政法人 情報処理推進機構)/問題冊子・解答例

改変: 4 つの関係スキーマは主キー(実線)と外部キー(破線)の下線を保ったまま組み直し、選択肢の 4 つの E-R 図は多重度を保ったまま SVG で描き直しています。スマホの幅に収めるため、選択肢の図は横並びを縦並び(上から医師・診療科・診察・患者)にしています。(内容は原本のままです)

問 5

正規化同じ設問が 平成31年度 春期 午前Ⅱ 問7 にも出ています

第 1 正規形から第 5 正規形までの正規化に関する記述のうち,適切なものはどれか。

  1. ア
    正規形にする分解は全て関数従属性が保存される。
  2. イ
    正規形にする分解は全て情報無損失の分解である。
  3. ウ
    第 3 正規形への分解では,情報無損失かつ関数従属性が保存される。
  4. エ
    第 4 正規形から第 5 正規形への分解は自明な多値従属性が保存される分解である。
解答と解説を見る

正解: ウ

結論: 第 3 正規形までなら、情報無損失で、しかも関数従属性を保存したまま分解できます。

なぜ: 第 3 正規形への分解には、どんな関係でも「元に戻せる(情報無損失)」かつ「元の関数従属を分解後の表だけで確かめられる(従属性保存)」分解が必ず存在することが知られています。

  • ア … ボイス・コッド正規形への分解では、関数従属性を保存できない場合があります
  • イ … 「正規形にする分解は全て」が言いすぎです。分け方を誤れば、結合しても元に戻らない(情報が失われる)分解もできてしまいます
  • エ … 第 5 正規形への分解は結合従属性を扱うもので、多値従属性の保存を言うものではありません

打って確かめる

解説は本サイトが独自に作成したものです。根拠にした一次情報は次のとおりです。

出典: 令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問5(IPA 独立行政法人 情報処理推進機構)/問題冊子・解答例

問 6

SQL

“商品” 表と “当月商品仕入合計” 表に対して,SQL 文を実行した結果はどれか。

商品
商品コード仕入先コード
S001K01
S002K01
S003K02
S004K02
S005K03
S006K04
当月商品仕入合計
仕入先コード仕入合計金額
K01150,000
K03100,000
K05250,000
〔SQL 文〕
(SELECT 仕入先コード FROM 商品)
    EXCEPT
(SELECT 仕入先コード FROM 当月商品仕入合計)
  1. ア
    仕入先コード
    K01
    K01
    K03
  2. イ
    仕入先コード
    K01
    K03
  3. ウ
    仕入先コード
    K02
    K02
    K04
  4. エ
    仕入先コード
    K02
    K04
解答と解説を見る

正解: エ

結論: K02 と K04 の 2 行です。

なぜ: EXCEPT は「左の結果から、右の結果にあるものを取り除く」演算です。

1. 左(商品の仕入先コード)は K01・K01・K02・K02・K03・K042. 右(当月商品仕入合計)は K01・K03・K053. 左から K01 と K03 を除くと K02・K02・K044. EXCEPT は結果の重複も取り除く(EXCEPT ALL と書かない限り)ので、K02・K04

ウは、右にあるものを取り除いたあと重複をまとめなかった場合の形です。⚠️ EXCEPT ALL とも違います。EXCEPT ALL は個数ごとに引くので、左に 2 つある K01 は右の 1 つぶんだけ減って残り、K01・K02・K02・K04 になります。アは左のうち右にもある行(重複あり)、イはそれをまとめた INTERSECT の結果です。

打って確かめる

解説は本サイトが独自に作成したものです。根拠にした一次情報は次のとおりです。

出典: 令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問6(IPA 独立行政法人 情報処理推進機構)/問題冊子・解答例

改変: “商品” 表・“当月商品仕入合計” 表と、選択肢の 4 つの結果は HTML の表として組み直しています。SQL 文は原文のまま等幅で示しています(内容は原本のままです)。

問 7

同時実行制御

次の (1),(2) に該当するトランザクションの隔離性水準はどれか。

(1) 対象の表のダーティリードは回避できる。 (2) 一つのトランザクション中で,対象の表のある行を 2 回以上参照する場合,1 回目の読込みの列値と 2 回目以降の読込みの列値が同じであることが保証されない。
  1. ア
    READ COMMITTED
  2. イ
    READ UNCOMMITTED
  3. ウ
    REPEATABLE READ
  4. エ
    SERIALIZABLE
解答と解説を見る

正解: ア

結論: ダーティリードは防ぐが、反復不能読み取りは防がない水準= READ COMMITTED です。

なぜ: SQL 標準の隔離性水準は、低い順に次のとおりです。

  • READ UNCOMMITTED … ダーティリードも起こりうる → (1) を満たさない
  • READ COMMITTED … ダーティリードは防ぐ。同じ行を 2 回読むと値が変わりうる → (1)(2) の両方に当てはまる
  • REPEATABLE READ … 同じ行を読み直しても値が変わらないことを保証する → (2) に当てはまらない
  • SERIALIZABLE … さらに強い → (2) に当てはまらない

(2) は「同じであることが保証されない」と言っているので、それを保証してしまう REPEATABLE READ 以上は外れます。

解説は本サイトが独自に作成したものです。根拠にした一次情報は次のとおりです。

出典: 令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問7(IPA 独立行政法人 情報処理推進機構)/問題冊子・解答例

問 8

SQL

“社員取得資格” 表に対し,SQL 文を実行して結果を得た。SQL 文の a に入れる字句はどれか。

社員取得資格
社員コード資格
S001FE
S001AP
S001DB
S002FE
S002SM
S003FE
S004AP
S005NULL
〔結果〕
社員コード資格1資格2
S001FEAP
S002FENULL
S003FENULL
〔SQL 文〕
SELECT C1.社員コード, C1.資格 AS 資格1, C2.資格 AS 資格2
    FROM 社員取得資格 C1 LEFT OUTER JOIN 社員取得資格 C2
        [ a ]
  1. ア
    ON C1.社員コード = C2.社員コード
        AND C1.資格 = 'FE' AND C2.資格 = 'AP'
    WHERE C1.資格 = 'FE'
  2. イ
    ON C1.社員コード = C2.社員コード
        AND C1.資格 = 'FE' AND C2.資格 = 'AP'
    WHERE C1.資格 IS NOT NULL
  3. ウ
    ON C1.社員コード = C2.社員コード
        AND C1.資格 = 'FE' AND C2.資格 = 'AP'
    WHERE C2.資格 = 'AP'
  4. エ
    ON C1.社員コード = C2.社員コード
    WHERE C1.資格 = 'FE' AND C2.資格 = 'AP'
解答と解説を見る

正解: ア

結論: 相手の条件(C2.資格 = 'AP')は ON に、残したい行の条件(C1.資格 = 'FE')は WHERE に書きます。

なぜ: 結果は「FE を持つ社員 3 人(S001・S002・S003)全員」と、その人が AP を持っていればその資格、持っていなければ NULL です。外部結合では、ON の条件は結合の前、WHERE の条件は結合の後に効きます。

  • ア … ON で「同じ社員の AP の行」だけを相手にし、相手が無ければ NULL で残す。最後に WHERE で C1 を FE の行に絞る → 結果と一致
  • イ … WHERE が IS NOT NULL なので、C1 の FE 以外の行(AP・DB・SM)も相手 NULL のまま残り、行が多すぎる
  • ウ … WHERE で C2.資格 = 'AP' に絞るので、相手が NULL の S002・S003 が消える
  • エ … AP の条件まで WHERE に書いたので、これも相手の無い S002・S003 が消える(内部結合と同じ結果になる)

解説は本サイトが独自に作成したものです。根拠にした一次情報は次のとおりです。

出典: 令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問8(IPA 独立行政法人 情報処理推進機構)/問題冊子・解答例

改変: “社員取得資格” 表と結果は HTML の表として組み直しています。SQL 文と選択肢は原文のまま等幅で示しています。原本では空欄が四角い枠で囲まれていますが、ここでは [ a ] のように角括弧で示しています。(内容は原本のままです)

問 9

関係データベース理論

属性が n 個ある関係の異なる射影は幾つあるか。ここで,射影の個数には,元の関係と同じ結果となる射影,及び属性を全く含まない射影を含めるものとする。

  1. ア
    log₂n
  2. イ
    n
  3. ウ
    2n
  4. エ
    2ⁿ
解答と解説を見る

正解: エ

結論: 2ⁿ 個です。

なぜ: 射影は「どの属性を残すか」を選ぶ演算です。n 個の属性それぞれについて「残す・残さない」の 2 通りがあるので、選び方は 2 × 2 × … × 2(n 回)= 2ⁿ 通りです。

問題文が「全部残す(元と同じ)」と「1 つも残さない」も数えると断っているので、両端を引く必要はありません。例えば属性が A・B の 2 つなら、{A, B}・{A}・{B}・{ } の 4 = 2² 通りです。

解説は本サイトが独自に作成したものです。根拠にした一次情報は次のとおりです。

出典: 令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問9(IPA 独立行政法人 情報処理推進機構)/問題冊子・解答例

改変: 選択肢の添字と指数(log の 2、2 の n 乗)は、上付き・下付きの文字で 1 行に書いています(内容は原本のままです)。

問 10

SQL同じ設問が 平成31年度 春期 午前Ⅱ 問14 にも出ています

ある電子商取引サイトでは,会員の属性を柔軟に変更できるように,“会員項目” 表で管理することにした。“会員項目” 表に対し,次の条件で SQL 文を実行して結果を得る場合,SQL 文の a に入れる字句はどれか。ここで,実線の下線は主キーを,NULL は値がないことを表す。

〔条件〕 (1) 同一 “会員番号” をもつ複数の行によって,1 人の会員の属性を表す。 (2) 新規に追加する行の行番号は,最後に追加された行の行番号に 1 を加えた値とする。 (3) 同一 “会員番号” で同一 “項目名” の行が複数ある場合,より大きい行番号の項目値を採用する。
会員項目
行番号会員番号項目名項目値
10111会員名情報太郎
20111最終購入年月日2021-02-05
30112会員名情報花子
40112最終購入年月日2021-01-30
50112最終購入年月日2021-02-01
60113会員名情報次郎
〔結果〕
会員番号会員名最終購入年月日
0111情報太郎2021-02-05
0112情報花子2021-02-01
0113情報次郎NULL
〔SQL 文〕
SELECT 会員番号,
    [ a ] (CASE WHEN 項目名='会員名' THEN 項目値 END) AS 会員名,
    [ a ] (CASE WHEN 項目名='最終購入年月日' THEN 項目値 END)
        AS 最終購入年月日
  FROM ( SELECT 会員番号, 項目名, 項目値 FROM 会員項目
           WHERE 行番号 IN ( SELECT [ a ] (行番号) FROM 会員項目
                               GROUP BY 会員番号, 項目名 )
       ) T
  GROUP BY 会員番号
  ORDER BY 会員番号
  1. ア
    COUNT
  2. イ
    DISTINCT
  3. ウ
    MAX
  4. エ
    MIN
解答と解説を見る

正解: ウ

結論: 3 か所の a はすべて MAX です。

なぜ: 3 か所それぞれで役割が違いますが、MAX ならどれも成り立ちます。

  • 副問い合わせの MAX(行番号) … 会員番号と項目名ごとにいちばん大きい行番号を選ぶ。条件 (3)「より大きい行番号の値を採用」そのものです。0112 の最終購入年月日は行番号 4 と 5 があり、5(2021-02-01)が残ります
  • 外側の MAX(CASE …) … 会員ごとにまとめると、CASE は該当する項目の行だけ値を返し、他の行は NULL になります。集約関数は NULL を無視するので、MAX で唯一の値が取り出せます。0113 は最終購入年月日の行が無いので NULL になります

ほかの選択肢では結果が合いません。

  • エ MIN … 副問い合わせで小さい行番号(古い値)が選ばれ、0112 の最終購入年月日が 2021-01-30 になってしまいます
  • ア COUNT … 件数(数)を返すので、副問い合わせは行番号ではなく件数を返し、外側も名前ではなく数になります
  • イ DISTINCT … 関数ではないので、この位置には書けず構文エラーになります

解説は本サイトが独自に作成したものです。根拠にした一次情報は次のとおりです。

出典: 令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問10(IPA 独立行政法人 情報処理推進機構)/問題冊子・解答例

改変: “会員項目” 表と結果は HTML の表として組み直しています。主キーの下線も再現しています。SQL 文は原文のまま等幅で示しています。原本では空欄が四角い枠で囲まれていますが、ここでは [ a ] のように角括弧で示しています。(内容は原本のままです)

問 11

関係データベース理論同じ設問が 令和6年度 秋期 午前Ⅱ 問11 にも出ています

関係 R,S に次の演算を行うとき,R と S が和両立である必要のないものはどれか。

  1. ア
    共通集合
  2. イ
    差集合
  3. ウ
    直積
  4. エ
    和集合
解答と解説を見る

正解: ウ

結論: 直積は和両立でなくても計算できます。

なぜ: 和両立とは「属性の数が同じで、対応する属性の定義域も同じ」ことです。共通集合・差集合・和集合は同じ形の行どうしを比べたり、まとめたりする演算なので、形がそろっていないと意味を持ちません。

直積は、R の各行と S の各行を横につないだ組をすべて作る演算です。行を比べないので、R と S の列の数や種類がまったく違っても計算できます(結果の列は R の列 + S の列)。

解説は本サイトが独自に作成したものです。根拠にした一次情報は次のとおりです。

出典: 令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問11(IPA 独立行政法人 情報処理推進機構)/問題冊子・解答例

問 12

応用技術

分散データベースのトランザクションが複数のサブトランザクションに分割され,複数のサイトで実行されるとき,トランザクションのコミット制御に関する記述のうち,適切なものはどれか。

  1. ア
    2 相コミットでは,サブトランザクションが実行される全てのサイトからコミット了承応答が主サイトに届いても,主サイトはサブトランザクションごとにコミット又はロールバックの異なる指示を出す場合がある。
  2. イ
    2 相コミットを用いても,サブトランザクションが実行されるサイトに主サイトの指示が届かず,サブトランザクションをコミットすべきかロールバックすべきか分からない場合がある。
  3. ウ
    2 相コミットを用いると,サブトランザクションがロールバックされてもトランザクションがコミットされる場合がある。
  4. エ
    集中型データベースのコミット制御である 1 相コミットで,分散データベースを構成する個々のサイトが独自にコミットを行っても,サイト間のデータベースの一貫性は保証できる。
解答と解説を見る

正解: イ

結論: 2 相コミットにも決着がつかない状態(ブロッキング)があります。

なぜ: 2 相コミットは「準備できたか」を全サイトに聞き(第 1 相)、全員が了承したらコミット、1 つでも駄目ならロールバックを指示します(第 2 相)。各サイトは「了承」と返したあと、主サイトの指示が来るまでコミットもロールバックも自分では決められません。その間に主サイトが止まったり通信が切れたりすると、指示を待ったまま宙に浮いてしまいます。

  • ア … 全員が了承したら、主サイトは全員に同じ指示(コミット)を出します。サイトごとに違う指示は出しません
  • ウ … 1 つでもロールバックされれば全体をロールバックします。それが 2 相コミットの目的です
  • エ … 各サイトが勝手にコミットすると、あるサイトはコミット・別のサイトは失敗、という食い違いが起こりえます

解説は本サイトが独自に作成したものです。根拠にした一次情報は次のとおりです。

出典: 令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問12(IPA 独立行政法人 情報処理推進機構)/問題冊子・解答例

問 13

同時実行制御

2 相ロック方式を用いたトランザクションの同時実行制御に関する記述のうち,適切なものはどれか。

  1. ア
    全てのトランザクションが直列に制御され,デッドロックが発生することはない。
  2. イ
    トランザクションのコミット順序は,トランザクション開始の時刻順となるように制御される。
  3. ウ
    トランザクションは,自分が獲得したロックを全て解除した後にだけ,コミット操作を実行できる。
  4. エ
    トランザクションは,必要な全てのロックを獲得した後にだけ,ロックを解除できる。
解答と解説を見る

正解: エ

結論: ロックを掛け終わってから、外し始める。 これが 2 相の意味です。

なぜ: トランザクションを、ロックを増やすだけの前半と減らすだけの後半の 2 つの相に分けます。いったん外し始めたら、もう新しくは掛けません。この規則だけで直列化可能性が保証されます。

  • ア … 2 相ロックでもデッドロックは起こります(互いに相手のロックを待つ形になりうる)
  • イ … コミットの順番は開始時刻とは関係ありません
  • ウ … 順序が逆です。コミットするまでロックを持ち続けるのが普通の運用(厳密 2 相ロック)で、先に外すと他のトランザクションが未コミットの値を読めてしまいます

⚠️ 「2 相」という同じ言葉が 2 相コミット(問 12)にも出てきますが、別のものです。

解説は本サイトが独自に作成したものです。根拠にした一次情報は次のとおりです。

出典: 令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問13(IPA 独立行政法人 情報処理推進機構)/問題冊子・解答例

問 14

同時実行制御

RDBMS のロックに関する記述のうち,適切なものはどれか。ここで,X,Y はトランザクションとする。

  1. ア
    X が A 表内の特定行 a に対して共有ロックを獲得しているときは,Y は A 表内の別の特定行 b に対して専有ロックを獲得することができない。
  2. イ
    X が A 表内の特定行 a に対して共有ロックを獲得しているときは,Y は A 表に対して専有ロックを獲得することができない。
  3. ウ
    X が A 表に対して共有ロックを獲得しているときでも,Y は A 表に対して専有ロックを獲得することができる。
  4. エ
    X が A 表に対して専有ロックを獲得しているときでも,Y は A 表内の特定行 a に対して専有ロックを獲得することができる。
解答と解説を見る

正解: イ

結論: 表全体の専有ロックは、その表のどこか 1 行にでも他人のロックがあれば取れません。

なぜ: 表への専有ロックは「表のすべての行を自分だけが使う」という宣言です。X が行 a に共有ロック(読んでいる最中)を持っているのに Y が表全体を専有できたら、Y が行 a を書き換えられてしまいます。

  • ア … 別の行 b なら衝突しません。行単位のロックは、同じ行どうしでだけぶつかります
  • ウ … 共有ロックと専有ロックは、同じ対象(ここでは A 表)の上では両立しません
  • エ … 表全体が X に専有されている間は、その表のどの行も Y はロックできません

解説は本サイトが独自に作成したものです。根拠にした一次情報は次のとおりです。

出典: 令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問14(IPA 独立行政法人 情報処理推進機構)/問題冊子・解答例

問 15

性能設計

関係データベースにおいて,タプル数 n の表二つに対する結合操作を,入れ子ループ法によって実行する場合の計算量はどれか。

  1. ア
    O(log n)
  2. イ
    O(n)
  3. ウ
    O(n log n)
  4. エ
    O(n²)
解答と解説を見る

正解: エ

結論: O(n²) です。

なぜ: 入れ子ループ法は、外側の表の 1 行ごとに、内側の表を最初から最後まで読む方式です。外側が n 行、内側も n 行なので、比べる回数は n × n = n² 回になります。

内側の表に索引があれば、1 行ごとの探索が速くなり O(n log n) 程度まで下がります(ウ)。並べ替えてから突き合わせるマージ結合も、並べ替えの分で O(n log n) です。何の工夫も無い入れ子ループが、いちばん素直で、いちばん遅い方式です。

解説は本サイトが独自に作成したものです。根拠にした一次情報は次のとおりです。

出典: 令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問15(IPA 独立行政法人 情報処理推進機構)/問題冊子・解答例

改変: 選択肢の 2 乗は上付きの文字で書いています(内容は原本のままです)。

問 16

同時実行制御

多版同時実行制御(MVCC)の特徴のうち,適切なものはどれか。

  1. ア
    アプリケーションプログラムからデータに対する明示的なロックをかけることができない。
  2. イ
    データアクセスの対象となる版をアプリケーションプログラムが指定する必要がある。
  3. ウ
    データ書込みに対して新しい版を生成し,同時にデータ読取りが実行されるときの排他制御による待ちを回避する。
  4. エ
    デッドロックは発生しない。
解答と解説を見る

正解: ウ

結論: MVCC は、書き込むたびに新しい版を作り、読む側には古い版を見せることで、読みと書きが互いを待たないようにする方式です。

なぜ: ロックだけで制御すると、誰かが書いている行を読む人は、書き終わるまで待たされます。MVCC では書き込みが新しい版を作り、読む側はその時点で確定している版を読むので、待たずに済みます。

  • ア … MVCC を採るデータベースでも、明示的なロック(SELECT … FOR UPDATE など)は掛けられます
  • イ … どの版を見せるかはデータベースが決めます。アプリケーションが版を指定する必要はありません
  • エ … 書き込みどうしは依然としてロックで制御するので、デッドロックは起こりえます

解説は本サイトが独自に作成したものです。根拠にした一次情報は次のとおりです。

出典: 令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問16(IPA 独立行政法人 情報処理推進機構)/問題冊子・解答例

問 17

応用技術

W3C で勧告されている,Indexed Database API に関する記述として,適切なものはどれか。

  1. ア
    Java のアプリケーションプログラムからデータベースにアクセスするための標準的な API が定義されている。
  2. イ
    SQL 文をホストプログラムに埋め込むための API が定義されている。
  3. ウ
    Web ブラウザ用のストレージの機能として,トランザクション処理の API が定義されている。
  4. エ
    データベースに対する一連の手続きを DBMS に格納し,呼び出す API が定義されている。
解答と解説を見る

正解: ウ

結論: Indexed Database API(IndexedDB)は、Web ブラウザの中にデータを保存する仕組みで、読み書きはトランザクションを通して行います。

なぜ: W3C の仕様は、ブラウザの中にキーと値の組を保存し、索引で探せるようにする API を定めています。データへのアクセスは必ずトランザクションの中で行い、その寿命(いつ始まり、いつ終わるか)も仕様で決められています。

ほかの選択肢は別の技術です。

  • ア … JDBC
  • イ … 埋込み SQL
  • エ … ストアドプロシージャ

解説は本サイトが独自に作成したものです。根拠にした一次情報は次のとおりです。

出典: 令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問17(IPA 独立行政法人 情報処理推進機構)/問題冊子・解答例

問 18

応用技術

ビッグデータ処理基盤に利用され,オープンソースソフトウェアの一つである Apache Spark の特徴はどれか。

  1. ア
    MapReduce の考え方に基づいたバッチ処理に特化している。
  2. イ
    RDD(Resilient Distributed Dataset)と呼ばれるデータ集合に対して変換を行う。
  3. ウ
    パブリッシュ/サブスクライブ(Publish / Subscribe)型のメッセージングモデルを採用している。
  4. エ
    マスタノードをもたないキーバリューストアである。
解答と解説を見る

正解: イ

結論: Apache Spark は、RDD という分散したデータ集合に変換を重ねて処理します。

なぜ: RDD は、複数のマシンに分けて置かれた、書き換えずに変換だけを重ねるデータの集まりです。ある RDD に「絞り込む」「対応づける」といった変換をかけると、新しい RDD ができます。途中の結果をメモリに置いたまま次の処理へ渡せるので、ディスクを何度も読み書きする方式より速く動きます。

  • ア … バッチ処理だけでなく、流れてくるデータの処理や機械学習なども扱えます。「MapReduce に特化」は Spark 以前の Hadoop MapReduce の説明に近いものです
  • ウ … メッセージングの仕組み(メッセージブローカ)の説明です
  • エ … マスタの無い分散データベースの説明です

解説は本サイトが独自に作成したものです。根拠にした一次情報は次のとおりです。

出典: 令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問18(IPA 独立行政法人 情報処理推進機構)/問題冊子・解答例

問 19

セキュリティ

インシデントハンドリングの順序のうち,JPCERT コーディネーションセンター “インシデントハンドリングマニュアル(2015 年 11 月 26 日)” に照らして,適切なものはどれか。

  1. ア
    インシデントレスポンス(対応) → 検知/連絡受付 → トリアージ
  2. イ
    インシデントレスポンス(対応) → トリアージ → 検知/連絡受付
  3. ウ
    検知/連絡受付 → インシデントレスポンス(対応) → トリアージ
  4. エ
    検知/連絡受付 → トリアージ → インシデントレスポンス(対応)
解答と解説を見る

正解: エ

結論: 検知/連絡受付 → トリアージ → インシデントレスポンスの順です。

なぜ: まず気づく/報告を受ける(検知・連絡受付)。次にそれが本当にインシデントか、どれくらい急ぐかを選り分ける(トリアージ)。そのうえで実際に対応する(インシデントレスポンス)。

トリアージが真ん中にあるのが要点です。報告のすべてが本物の事故とは限らず、限られた人手をどこに向けるかを先に決めないと、重大なものが後回しになります。

⚠️ 設問が挙げているのは 2015 年版のマニュアルです。根拠には現行の 2021 年版を載せています。この順序は 2021 年版でも同じです。

解説は本サイトが独自に作成したものです。根拠にした一次情報は次のとおりです。

出典: 令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問19(IPA 独立行政法人 情報処理推進機構)/問題冊子・解答例

問 20

セキュリティ同じ設問が 平成31年度 春期 午前Ⅱ 問21 にも出ています

迷惑メールの検知手法であるベイジアンフィルタの説明はどれか。

  1. ア
    信頼できるメール送信元を許可リストに登録しておき,許可リストにないメール送信元からの電子メールは迷惑メールと判定する。
  2. イ
    電子メールが正規のメールサーバから送信されていることを検証し,迷惑メールであるかどうかを判定する。
  3. ウ
    電子メールの第三者中継を許可しているメールサーバを登録したデータベースの掲載情報を基に,迷惑メールであるかどうかを判定する。
  4. エ
    利用者が振り分けた迷惑メールと正規のメールから特徴を学習し,迷惑メールであるかどうかを統計的に判定する。
解答と解説を見る

正解: エ

結論: ベイジアンフィルタは、利用者が仕分けたメールから特徴を学び、確率で判定する方式です。

なぜ: 「迷惑メールに出やすい語」「正規のメールに出やすい語」を、利用者が振り分けた実例から数えておきます。新しいメールが届いたら、含まれる語からベイズの定理で迷惑メールである確率を計算し、高ければ迷惑メールと判定します。使うほど利用者の傾向に合っていくのが特徴です。

  • ア … 許可リスト(ホワイトリスト)方式
  • イ … 送信ドメイン認証(SPF や DKIM など)
  • ウ … 第三者中継を許すサーバの一覧(ブラックリスト)を使う方式

解説は本サイトが独自に作成したものです。根拠にした一次情報は次のとおりです。

出典: 令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問20(IPA 独立行政法人 情報処理推進機構)/問題冊子・解答例

問 21

セキュリティ

パケットフィルタリング型ファイアウォールが,通信パケットの通過を許可するかどうかを判断するときに用いるものはどれか。

  1. ア
    Web アプリケーションに渡される POST データ
  2. イ
    送信元と宛先の IP アドレスとポート番号
  3. ウ
    送信元の MAC アドレス
  4. エ
    利用者の PC から送信された URL
解答と解説を見る

正解: イ

結論: パケットフィルタリングは、パケットの見出し(ヘッダ)にある IP アドレスとポート番号で通すかどうかを決めます。

なぜ: パケットフィルタリング型は、パケットの中身(アプリケーションのデータ)までは読まず、送信元・宛先の IP アドレス、ポート番号、プロトコルといったヘッダの情報を規則と照らし合わせます。中身を見ないぶん速く、仕組みも単純です。

  • ア・エ … POST データや URL は通信の中身で、これを見て判断するのは WAF やプロキシ(アプリケーションゲートウェイ)の役目です
  • ウ … MAC アドレスは同じネットワークの中でしか意味を持たず、ルータを越えると書き換わるので、ファイアウォールの判断材料には向きません

解説は本サイトが独自に作成したものです。根拠にした一次情報は次のとおりです。

出典: 令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問21(IPA 独立行政法人 情報処理推進機構)/問題冊子・解答例

問 22

コンピュータ構成要素

ECC メモリで,2 ビットの誤りを検出し,1 ビットの誤りを訂正するために用いるものはどれか。

  1. ア
    偶数パリティ
  2. イ
    垂直パリティ
  3. ウ
    チェックサム
  4. エ
    ハミング符号
解答と解説を見る

正解: エ

結論: 1 ビットの訂正と 2 ビットの検出ができるのはハミング符号です。

なぜ: ハミング符号は、データに複数の検査ビットを足し、どのビットが誤ったかの位置まで分かるようにした符号です。位置が分かれば、そのビットを反転させて直せます。ECC メモリは、これにもう 1 ビットを足して 1 ビット訂正・2 ビット検出にした方式を使います。

ア・イのパリティは、誤りがあることは分かってもどのビットかは分かりません(しかも 2 ビット同時に誤ると気づけません)。ウのチェックサムも、誤りの検出に使うもので、訂正はできません。

解説は本サイトが独自に作成したものです。根拠にした一次情報は次のとおりです。

出典: 令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問22(IPA 独立行政法人 情報処理推進機構)/問題冊子・解答例

問 23

システム構成要素

複数台の物理サーバで多数の仮想サーバを提供しているシステムがある。次の条件で運用する場合,物理サーバが 8 台停止してもリソースの消費を平均 80% 以内にするには,物理サーバが 1 台も停止していないときは最低何台必要か。ここで,各物理サーバは同一の性能と同一のリソースを有しているものとする。

〔条件〕 (1) ある物理サーバが停止すると,その物理サーバ内の全ての仮想サーバを,稼働中の物理サーバに,リソースの消費が均等になるように再配分する。 (2) 物理サーバが 1 台も停止していないときのリソースの消費は,平均 60% である。 (3) その他の条件は考慮しない。
  1. ア
    32
  2. イ
    34
  3. ウ
    36
  4. エ
    40
解答と解説を見る

正解: ア

結論: 32 台です。

なぜ: 全体で使っているリソースの量は、物理サーバが止まっても変わりません(条件 (1) で残りのサーバに配り直すだけ)。台数を N とすると:

1. 全台稼働のとき、使っている量は 0.6N 台分(条件 (2))2. 8 台止まると、それを N − 8 台で受け持つ3. 1 台あたりの消費は 0.6N ÷ (N − 8)。これを 0.8 以下にしたい

0.6N ≦ 0.8(N − 8) → 0.6N ≦ 0.8N − 6.4 → 6.4 ≦ 0.2N → N ≧ 32。

確かめると、32 台なら 0.6 × 32 = 19.2 台分を 24 台で受け持ち、19.2 ÷ 24 = ちょうど 80% です。

解説は本サイトが独自に作成したものです。根拠にした一次情報は次のとおりです。

出典: 令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問23(IPA 独立行政法人 情報処理推進機構)/問題冊子・解答例

問 24

開発技術

ソフトウェアの使用性を向上させる施策として,適切なものはどれか。

  1. ア
    オンラインヘルプを充実させ,利用方法を理解しやすくする。
  2. イ
    外部インタフェースを見直し,連携できる他システムを増やす。
  3. ウ
    機能を追加し,業務の遂行においてシステムを利用できる範囲を拡大する。
  4. エ
    データの複製を分散して配置し,装置の故障によるデータ損失のリスクを減らす。
解答と解説を見る

正解: ア

結論: 使用性は「使いやすさ」です。使い方を理解しやすくするオンラインヘルプの充実は、そのまま使用性の向上です。

なぜ: 使用性は、利用者が迷わず、覚えやすく、効率よく使えるかを表す品質です。説明が見つけやすく分かりやすいことは、その大事な要素です。

ほかの選択肢は別の品質を高める施策です。

  • イ … 他システムとの連携(相互運用性)
  • ウ … 使える範囲を広げる(機能性・機能の充足)
  • エ … 故障に備える(信頼性)

解説は本サイトが独自に作成したものです。根拠にした一次情報は次のとおりです。

出典: 令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問24(IPA 独立行政法人 情報処理推進機構)/問題冊子・解答例

問 25

開発技術

マッシュアップの説明はどれか。

  1. ア
    既存のプログラムから,そのプログラムの仕様を導き出す。
  2. イ
    既存のプログラムを部品化し,それらの部品を組み合わせて,新規プログラムを開発する。
  3. ウ
    クラスライブラリを利用して,新規プログラムを開発する。
  4. エ
    公開されている複数のサービスを利用して,新たなサービスを提供する。
解答と解説を見る

正解: エ

結論: マッシュアップは、公開されている複数のサービスを組み合わせて、新しいサービスを作ることです。

なぜ: 例えば、地図のサービスと店舗情報のサービスを組み合わせて「地図の上に店を表示する」サービスを作る、といった使い方です。それぞれのサービスが公開している API などを呼び出して組み合わせるので、すべてを自分で作るより少ない手間で新しいものを作れます。

  • ア … リバースエンジニアリング
  • イ … 部品化による再利用(コンポーネント指向の開発)
  • ウ … ライブラリを使った開発

解説は本サイトが独自に作成したものです。根拠にした一次情報は次のとおりです。

出典: 令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問25(IPA 独立行政法人 情報処理推進機構)/問題冊子・解答例

出典と改変について

設問と選択肢は IPA(独立行政法人 情報処理推進機構)が公開している問題冊子からの引用です。正解は同じく IPA が公開している解答例で確認しています。原本の図表はスキャン画像のため、内容を変えずに読みやすく組み直しました。何を組み直したかは各問に書いています。解説は本サイトが独自に作成したもので、IPA の見解ではありません。本サイトは IPA とは関係のない非公式のサイトです。

← 過去問の一覧へ戻る