コマンド道場

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

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

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

1

SQL

SQL のシーケンスに関する説明のうち,適切なものはどれか。

  1. 現在基底値が 0→1→2→0→1→2→0→... のように,周期的に繰り返すシーケンスを定義することはできない。
  2. シーケンスの現在基底値を,最小値と最大値との間の任意の整数値に変更することはできない。
  3. シーケンスの増分を,負の整数値にすることはできない。
  4. トランザクション開始後のシーケンスの値の取得による現在基底値の変更は,トランザクションのロールバックでその変更を取り消すことができない。
解答と解説を見る

正解:

結論: シーケンスから取り出した値は、ロールバックしても戻りません。

なぜ: シーケンスは「番号を配る機械」で、トランザクションの外で動きます。取り消せるようにすると、同じ番号を 2 人が同時に受け取ってしまうためです。結果として、失敗したトランザクションが取った番号は欠番として飛びます。伝票番号などを「連続していること」前提で設計すると、ここで破綻します。

残りはいずれも「できない」と言っていますが、実際にはできます。

  • CYCLE を指定すれば、最大値に達したあと最小値へ戻って繰り返せます
  • ALTER SEQUENCE ... RESTARTsetval で好きな値に置き直せます
  • … 増分は負でもよく、その場合は値が減っていきます

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

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

2

性能設計

クライアントサーバシステムにおけるストアドプロシージャに関する記述のうち,適切でないものはどれか。

  1. 機密性が高いデータに対する処理を特定のプロシージャ呼出しに限定することによって,セキュリティを向上させることができる。
  2. システム全体に共通な処理をプロシージャとして格納しておくことによって,処理の標準化を行うことができる。
  3. データベースへのアクセスを細かい単位でプロシージャ化することによって,処理性能(スループット)を向上させることができる。
  4. 複数の SQL 文から成る手続を 1 回のプロシージャ呼出しで実行することによって,クライアントとサーバの間の通信回数を減らすことができる。
解答と解説を見る

正解:

結論: 細かい単位でプロシージャ化しても速くなりません。むしろ遅くなります。

なぜ: ストアドプロシージャが速い理由は、まとめて 1 回で呼べることにあります(エ)。細かく分けてしまうと呼び出し回数が増え、その利点が消えます。1 回あたりの通信は短くても、回数が増えれば往復の待ち時間が積み上がるからです。

⚠️ 設問は「適切でないもの」を聞いています。ア・イ・エはいずれも正しい説明なので、正しいものを選んでしまわないよう注意してください。

  • … 表を直接触らせず手続き経由に限定できるので、権限を絞れます
  • … 共通処理を 1 か所に置けるので、書き方のばらつきを防げます

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

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

3

性能設計

関係データベースのテーブルにレコードを 1 件追加したところ,インデックスとして使う,B+木のリーフノード C がノード C1 と C2 に分割された。ノード分割後の B+木構造はどれか。ここで,矢印はノードへのポインタとする。また,中間ノード A には十分な空きがあるものとする。

  1. ABC1C2D
  2. ABC1C2D
  3. ABC1DC2
  4. ABC1DC2
解答と解説を見る

正解:

結論: A から C2 へのポインタが増え、リーフは B ⇄ C1 ⇄ C2 ⇄ D の順につながります。

なぜ: リーフが 2 つに割れたので、直さなければならないのは 2 か所です。

1. 親(中間ノード A) … 新しくできた C2 を指すポインタを足す。設問が「A には十分な空きがある」と断っているのは、A 自身は割れずに済むという意味です2. リーフどうしの並び … C1 と C2 は元の C の位置にそのまま入るので、B ⇄ C1 ⇄ C2 ⇄ D の順になります

この 2 つを両方満たしているのはイだけです。

  • … リーフの並びは正しいものの、A から C2 へのポインタがありません。上から C2 に辿り着けず、索引として使えません
  • … 並びが B ⇄ C1 ⇄ D ⇄ C2 になっています。キーの順に並んでいないので、範囲検索でリーフを順にたどる、という B+木の使い方が壊れます
  • … C2 が C1 の下にぶら下がっています。B+木はすべてのリーフが同じ深さでなければならないので、この形にはなりません

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

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

改変: B+木の図はスキャン画像のため、ノード名とポインタの向き・つながりを保ったまま SVG で描き直しています(内容は原本のままです)。

4

性能設計

転置インデックスに関する記述として,適切なものはどれか。

  1. SQL 関数を評価した結果の値をインデックスとして使用する。
  2. 最上位のノードから,実データへのポインタを格納したリーフノードへと至るポインタをインデックスとして使用する。
  3. テキストに含まれる単語に対して,その単語を含むテキストへのポインタをインデックスとして使用する。
  4. ヒープ領域を使用せずに実データを物理的に並べ替えたデータをインデックスとして使用する。
解答と解説を見る

正解:

結論: 「単語 → その単語を含む文書」の向きに引ける索引が転置インデックスです。

なぜ: 普通に持っているのは「文書 → その中の単語」の向きです。これをひっくり返して「単語 → 文書」の対応表にしておくと、全文を走査せずに「その単語を含む文書」を一気に引けます。転置という名前はここから来ています。

アは関数インデックス、イは B 木インデックス、エはクラスタ化(実データそのものを並べ替える方式)の説明です。

⚠️ PostgreSQL の全文検索で使う GIN(Generalized Inverted Index)が、まさにこの転置インデックスです。

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

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

5

論理設計

あるエンティティを関係データベース上に実装しようとしたとき,その主キーが多くの属性から構成される複合キーとなることが分かった。主キーとして扱う属性を少なくして扱いやすくしたい。この対応として,適切なものはどれか。

  1. 複合キーを構成する属性のうち,エンティティの性格を最もよく表している一つの属性を主キーとし,残りの属性を外部キー(foreign key)にする。
  2. 複合キーを構成する属性のうち,エンティティの性格を最もよく表している一つの属性を主キーとし,残りの属性を代替キー(alternate key)とする。
  3. 連番などを値としてとる列を新たに設けて主キーとし,複合キーの代理キー(surrogate key)とする。
  4. 連番などを値としてとる列を新たに設けて主キーとし,複合キーを外部キー(foreign key)にする。
解答と解説を見る

正解:

結論: 連番の列を 1 本足して主キーにする、いわゆる代理キー(サロゲートキー)です。

なぜ: 複合キーは、参照する側の表すべてに同じ列を全部持たせる必要があり、結合条件も長くなります。1 列の連番に置き換えれば、参照する側は 1 列で済みます。

ア・イは、複合キーの一部だけを主キーにしています。一部では行を一意に識別できないので、そもそも主キーになりません。エは元の複合キーを外部キーにするとしていますが、外部キーは他の表を参照するためのもので、自分の表の中の話ではありません。

⚠️ 代理キーにしても、元の複合キーには一意性制約を付けておく必要があります。連番だけにすると、中身がまったく同じ行が何行でも入ってしまいます。

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

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

6

データモデル

階層構造をもつ組織と,従業員の組織への所属を表す UML のクラス図のうち,“従業員は組織階層中のどの組織にも所属できるが,兼務はしない” とするものはどれか。

  1. 1..*下位0..1上位1*所属する組織上位組織末端組織従業員
  2. *下位0..1上位*1所属する組織従業員上位組織末端組織
  3. *1所属する組織従業員上位組織末端組織
  4. *下位0..1上位1*所属する組織従業員
解答と解説を見る

正解:

結論: 組織に自己関連があり、従業員から見た組織が 1 つ——これがエです。

なぜ: 設問の条件は 2 つあります。それぞれが図のどこに出るかを見ます。

1. どの組織にも所属できる … 「所属する」の相手が組織そのものであること。上位組織と末端組織に分けて、末端組織にだけつなぐと末端にしか所属できません2. 兼務はしない … 従業員 1 人につき組織は 1 つ。つまり組織側の多重度が 1(1 つの組織に従業員が * 人)

階層は組織どうしの自己関連(上位 0..1 /下位 *)で表せるので、上位組織・末端組織という下位クラスは要りません。

  • … 「所属する」が末端組織につながっています。途中の組織には所属できません
  • … 多重度が逆で、組織側が *・従業員側が 1 です。これは1 人の従業員が複数の組織に所属する=兼務を許す形になります
  • … 自己関連がなく、階層そのものを表せていません。多重度もイと同じく逆です

⚠️ 多重度は、その端に書かれたクラスが何個対応するかを表します。組織の端の 1 は「従業員 1 人に対して組織は 1 つ」という意味で、「組織 1 つに従業員が 1 人」ではありません。ここを取り違えるとイとエが入れ替わります。

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

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

改変: クラス図はスキャン画像のため、クラス名・多重度・役割名(上位/下位)・関連名・汎化を保ったまま SVG で描き直しています(内容は原本のままです)。

7

SQL

“商品” 表と “商品別売上実績” 表に対して,SQL 文を実行して得られる売上平均金額はどれか。

商品
商品コード商品名商品ランク
S001PPPA
S002QQQA
S003RRRA
S004SSSB
S005TTTC
S006UUUC
商品別売上実績
商品コード売上合計金額
S00150
S003250
S004350
S006450
〔SQL 文〕
SELECT AVG(売上合計金額) AS 売上平均金額
    FROM 商品 LEFT OUTER JOIN 商品別売上実績
        ON 商品.商品コード = 商品別売上実績.商品コード
    WHERE 商品ランク = 'A'
  1. 100
  2. 150
  3. 225
  4. 275
解答と解説を見る

正解:

結論: 150 です。

なぜ: 順に絞り込みます。

1. 商品ランクが 'A' なのは S001・S002・S003 の 3 行2. 左外結合なので、売上実績が無い S002 は残り、売上合計金額が NULL になる3. AVGNULL を数に入れません。足すのも数えるのも S001 と S003 の 2 行だけ

したがって (50 + 250) ÷ 2 = 150 です。

⚠️ ここが引っかけです。3 行あるのに割る数は 2 になります。(50 + 250) ÷ 3 = 100(ア)と考えると誤りです。NULL を 0 として扱いたいなら AVG(COALESCE(売上合計金額, 0)) と書く必要があります。

エの 275 は、商品ランクで絞らずに売上実績の 4 行すべてを平均した値((50 + 250 + 350 + 450) ÷ 4)です。絞り込みを忘れるとこうなります。

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

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

改変: 2 つの表はスキャン画像のため、HTML の表として組み直しています(値・列の並びは原本のままです)。

8

SQL

図のツリー構造に対するデータを格納した “隣接リスト” 表から,リーフノードを取得する SQL 文の a に入れる字句はどれか。ここで,図の丸はノードを表し,矢印は親ノードから子ノードへの関係を表す。

ABCDEFG
ツリー構造(矢印は親ノードから子ノードへ)
隣接リスト
親ノード子ノード
NULLA
AB
AC
BD
BE
CF
FG
〔SQL 文〕
SELECT 子ノード FROM 隣接リスト
[ a ]
SELECT 親ノード FROM 隣接リスト
  1. EXCEPT
  2. INTERSECT
  3. UNION
  4. UNION ALL
解答と解説を見る

正解:

結論: EXCEPT です。

なぜ: リーフノード(葉)とは「子をもたないノード」です。言い換えると

  • 子ノードの一覧 … 表に現れるすべてのノード(A を除く全部)
  • 親ノードの一覧 … 誰かの親になっているノード(A・B・C・F)

前者から後者を引けば、親になっていないノードだけが残ります。これがリーフです。実際に引くと D・E・G が残り、図と一致します。

他の演算では求まりません。

  • INTERSECT … 両方に出るもの=リーフ以外(B・C・F)が出てきます
  • ウ・エ UNION / UNION ALL … 足し算なので、絞り込みになりません

⚠️ 「◯◯でないもの」を求めたいとき、全体から該当するものを引くのは集合演算の定番の使い方です。

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

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

改変: ツリー図と隣接リストの表はスキャン画像のため、ノード名・矢印の向き・表の値を保ったまま組み直しています。原本では空欄が四角い枠で囲まれていますが、ここでは [ a ] のように角括弧で示しています(内容は原本のままです)。

9

関係データベース理論

“商品” 表と “納品” 表を商品番号で等結合した結果はどれか。

商品
商品番号商品名価格
S01ボールペン150
S02消しゴム80
S03クリップ200
納品
商品番号顧客番号納品数
S01C0110
S01C0230
S02C0220
S02C0340
S03C0360
  1. 商品番号商品名価格顧客番号納品数
    S01ボールペン150C0110
    S02消しゴム80C0220
    S03クリップ200C0360
  2. 商品番号商品名価格商品番号顧客番号納品数
    S01ボールペン150S01C0110
    S02消しゴム80S02C0220
    S03クリップ200S03C0360
  3. 商品番号商品名価格顧客番号納品数
    S01ボールペン150C0110
    S01ボールペン150C0230
    S02消しゴム80C0220
    S02消しゴム80C0340
    S03クリップ200C0360
  4. 商品番号商品名価格商品番号顧客番号納品数
    S01ボールペン150S01C0110
    S01ボールペン150S01C0230
    S02消しゴム80S02C0220
    S02消しゴム80S02C0340
    S03クリップ200S03C0360
解答と解説を見る

正解:

結論: 5 行・6 列になります。

なぜ: 等結合の結果は、次の 2 つで決まります。

1. 行数 … 納品表の 5 行それぞれに、商品番号が一致する商品が 1 つずつあるので 5 行。S01 は納品が 2 件あるので、商品の S01 の行が 2 回現れます2. 列数 … 等結合は両方の表の列をすべて並べます。結合に使った商品番号も両方とも残るので、3 + 3 = 6 列

この 2 つを満たすのはエだけです。

  • … 3 行しかありません。S01 と S02 の 2 件目が落ちています
  • … 列は 6 列で正しいものの、行が 3 行しかありません
  • … 行は 5 行で正しいものの、商品番号が 1 列しかありません

⚠️ 商品番号が 2 列並ぶのは等結合だからです。重複する列を 1 つにまとめたものは自然結合といい、そちらならウの形になります。SQL では JOIN ... ON が等結合、NATURAL JOIN が自然結合にあたります。

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

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

改変: “商品” “納品” 表と 4 つの結果表はスキャン画像のため、HTML の表として組み直しています(値・列の並びは原本のままです)。

10

SQL

“従業員” 表から,男女それぞれの最年長従業員を除く全ての従業員を取り出す SQL 文とするために,a に入れる字句はどれか。ここで,“従業員” 表の構造は次のとおりであり,実線の下線は主キーを表す。

従業員
従業員番号
従業員名
性別
生年月日
〔SQL 文〕
SELECT 従業員番号, 従業員名 FROM 従業員 AS S1
    WHERE 生年月日 > ( [ a ] )
  1. SELECT MIN(生年月日) FROM 従業員 AS S2
        GROUP BY S2.性別
  2. SELECT MIN(生年月日) FROM 従業員 AS S2
        WHERE S1.生年月日 > S2.生年月日
        OR S1.性別 = S2.性別
  3. SELECT MIN(生年月日) FROM 従業員 AS S2
        WHERE S1.性別 = S2.性別
  4. SELECT MIN(生年月日) FROM 従業員
        GROUP BY S2.性別
解答と解説を見る

正解:

結論: 同じ性別の中の最小の生年月日を返す相関副問合せです。

なぜ: 最年長=生年月日がいちばん古い(小さい)人です。その人を除くには「自分の生年月日 > 同性の最小の生年月日」を条件にします。

ここで大事なのは、副問合せが外側の 1 行ごとに違う値を返さなければならないことです。ウは WHERE S1.性別 = S2.性別 で外側の行(S1)を参照しているので、男性の行を見ているときは男性の最小、女性の行なら女性の最小を返します。これを相関副問合せといいます。

  • ア・エGROUP BY を使うと男女 2 行返ってきます。> の右側は 1 つの値でなければならないので、実行時にエラーになります
  • OR でつないでいるため、条件が緩すぎて同性に絞れません。また外側の生年月日そのものを条件に入れており、意図した比較になりません
  • … さらに FROM 従業員 に別名 S2 を付けていないのに S2.性別 と書いており、その時点で解決できません

⚠️ 「グループごとの最大・最小と比べる」は相関副問合せの典型です。ウィンドウ関数(MIN(生年月日) OVER (PARTITION BY 性別))でも同じことが書けます。

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

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

改変: 関係スキーマと 4 つの SQL 文はスキャン画像のため、字句を変えずに組み直しています。原本では空欄が四角い枠で囲まれていますが、ここでは [ a ] のように角括弧で示しています(内容は原本のままです)。

11

関係データベース理論

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

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

正解:

結論: 直積です。

なぜ: 和両立とは「列の数が同じで、対応する列の型も同じ」という条件です。和・差・共通集合は、2 つの表の行を同じ表の行として足したり引いたりする演算なので、形が揃っていなければ成り立ちません。

直積はまったく別で、R の各行と S の各行を横につないで 1 行にする演算です。列の数は R と S の合計になります。形が違っていても構わないので、和両立は要りません。

⚠️ SQL では、和両立が要る側が UNION / EXCEPT / INTERSECT、要らない側が CROSS JOIN にあたります。

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

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

12

同時実行制御

二つのトランザクションが,同じデータに対して,更新,参照を行うときに発生し得るダーティリードの事象を記述したものはどれか。

  1. トランザクション A がある検索条件を満たす,ある表の行の集合を参照した。次に,トランザクション B がトランザクション A と同じ検索条件を満たす新しい行を挿入しコミットした。その後,トランザクション A が同じ検索条件で再度参照すると,以前には存在しなかった行が出現した。
  2. トランザクション A がある表の行の列を参照した。次に,トランザクション B がその列の値を更新しコミットした。その後,トランザクション A がその列を再度参照すると,以前の値と異なった。
  3. 二つのトランザクションがそれぞれ 2 相ロックをかけ,デッドロックを起こした。
  4. まだコミットしていないトランザクション A の更新後データをトランザクション B が参照した。その後,更新後データはロールバックされた。
解答と解説を見る

正解:

結論: まだコミットされていない値を読んでしまうのがダーティリードです。

なぜ: エでは、A が書いた途中の値を B が読み、そのあと A がロールバックしています。B が読んだ値は、最終的にどこにも存在しない値になります。これがダーティ(汚れた)読取りです。

他は別の異状です。

  • … 2 回目の検索で行が増えている = ファントムリード
  • … 同じ行を 2 回読んだら値が変わっていた = 反復不能読取り
  • … デッドロックであって、読取りの異状ではありません

⚠️ ダーティリードは READ UNCOMMITTED でだけ起こります。PostgreSQL はこの水準を内部的に READ COMMITTED として扱うので、そもそも起こりません。

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

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

13

同時実行制御

トランザクション A〜G の待ちグラフにおいて,永久待ちの状態になっているトランザクション全てを列挙したものはどれか。ここで,待ちグラフの X→Y は,トランザクション X はトランザクション Y がロックしている資源のアンロックを待っていることを表す。

ABCDEFG
〔トランザクション A〜G の待ちグラフ〕
  1. A, B, C, D
  2. B, C, D
  3. B, C, D, F
  4. C, D, E, F, G
解答と解説を見る

正解:

結論: B, C, D, F です。

なぜ: 永久待ちになるのは、閉路(ぐるりと一周する待ち)に入っているか、閉路の中の誰かを待っているトランザクションです。

まず閉路を探します。B → D → C → B が一周しています(B は D を、D は C を、C は B を待つ)。この 3 つは互いに待ち合っていて、どれも永久に進めません。

次に、この 3 つを待っている人を探します。F → D なので F も永久に待ちます。

残りは進めます。

  • A … A → C ではなく C → A です。A は誰も待っていないので、自分は動けます
  • E … E → G だけです。G は誰も待っていないので、G が終われば E も進めます
  • G … 誰も待っていません

⚠️ 矢印の向きを取り違えるとアやエになります。X → Y は「X が Y を待つ」——待たれている側は止まりません。

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

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

改変: 待ちグラフはスキャン画像のため、ノード名と矢印の向きを保ったまま SVG で描き直しています(内容は原本のままです)。

14

同時実行制御

トランザクション P が資源 X の値を 4 から 5 に更新した後にトランザクション Q が開始し,P がコミットする前に Q が資源 X を参照しようとした。Q の挙動の a,b に入れる字句の組みはどれか。ただし,隔離性水準は READ COMMITTED とする。

  1. a = P がコミット完了するまで待機した後,X の値 5 を得る/b = P のコミット完了を待機することなく,X の値 4 を得る
  2. a = P がコミット完了するまで待機した後,X の値 5 を得る/b = P のコミット完了を待機することなく,X の値 5 を得る
  3. a = P のコミット完了を待機することなく,X の値 4 を得る/b = P のコミット完了を待機することなく,X の値 5 を得る
  4. a = P のコミット完了を待機することなく,X の値 5 を得る/b = P のコミット完了を待機することなく,X の値 4 を得る
解答と解説を見る

正解:

結論: 単版なら待たされて 5、多版(MVCC)なら待たずに 4 です。

なぜ: 資源 X の値が 1 つしか無い(単版)場合、P が書き換えている最中は読む側もロックの解放を待つしかありません。P がコミットして初めて読めるので、得られるのは新しい値 5 です。

多版(MVCC)では、更新前の値を別の版として残しておくので、Q は待たずに済みます。READ COMMITTED は「コミット済みの値だけを読む」水準なので、Q が読むのはまだコミットされていない 5 ではなく、コミット済みの 4 です。

⚠️ ここが MVCC の要点です。読む側が書く側を待たない。 PostgreSQL はこの方式で、既定の READ COMMITTED がまさにこの挙動になります。

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

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

改変: 選択肢は原本では a・b の 2 列の表ですが、1 行の組として書き下しています(内容は原本のままです)。

15

同時実行制御

トランザクション T1 と T2 の並行実行における不整合検索異状(inconsistent retrieval anomaly)の説明はどれか。

  1. T1 が x を更新した後コミットする前に,T2 も x を更新すること
  2. T1 と T2 が同時にデータ x を読み,T1 は x を更新する。T2 は更新前の x の値に基づいてデータ y を更新することによって,y の値が x の値に基づかなくなること
  3. 先行する T1 が更新したデータ x を,後続の T2 が読んで処理を行うとき,T1 がロールバックすると,T2 もロールバックしなければならなくなること
  4. 先行する T1 が更新したデータ x を,後続の T2 が読んで処理を行った後に,T1 がロールバックすることによって,T2 は結果的に誤った処理になること
解答と解説を見る

正解:

結論: 古い値のまま計算してしまい、データどうしのつじつまが合わなくなるのが不整合検索異状です。

なぜ: イでは、T2 が読んだ時点の x はまだ更新前です。そのあと T1 が x を新しくしたのに、T2 は古い x を根拠に y を書いてしまいます。結果として、データベースの中で x と y が食い違った状態になります。

他は別の問題です。

  • … 2 つが同じデータを上書きし合う = 更新消失
  • … 巻き添えで取り消すことになる = 連鎖ロールバック
  • … 取り消される値を読んでしまった = ダーティリードの結果

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

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

16

応用技術

ビッグデータの処理に使用される CEP(複合イベント処理)に関する記述として,適切なものはどれか。

  1. 多次元データベースを構築することによって,集計及び分析を行う方式である。
  2. データ更新時に更新前のデータを保持することによって,同時実行制御を行う方式である。
  3. 分散データベースシステムにおけるトランザクションを実現する方式である。
  4. 連続して発生するデータに対し,あらかじめ規定した条件に合致する場合に実行される処理を実装する方式である。
解答と解説を見る

正解:

結論: 流れてくるデータをその場で判定して処理するのが CEP です。

なぜ: 普通のデータベースは「貯めてから問い合わせる」順番ですが、CEP は逆に「条件を先に置いておいて、流れてくるデータを通す」形をとります。株価の急変やセンサーの異常のように、遅れて分かっても手遅れなものに使います。

アは OLAP、イは多版同時実行制御(MVCC)、ウは 2 相コミットなどの説明です。

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

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

17

応用技術

スタースキーマでモデル化し,一定期間内に発生した取引などを分析対象データとして格納するテーブルはどれか。

  1. ディメンションテーブル
  2. デシジョンテーブル
  3. ハッシュテーブル
  4. ファクトテーブル
解答と解説を見る

正解:

結論: ファクトテーブルです。

なぜ: スタースキーマは、中心に 1 つの大きな表を置き、そのまわりに説明用の表を放射状に並べた形です。中心にあたるのがファクト(事実)テーブルで、「いつ・どの店で・何を・いくつ売った」という起きたことそのものを、期間ぶん貯めていきます。

まわりのディメンションテーブルは、店・商品・日付といった切り口を持ちます。分析はこの切り口でファクトを集計する形になります。

デシジョンテーブルは条件と動作の対応を整理した表、ハッシュテーブルはデータ構造で、どちらもスタースキーマの話ではありません。

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

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

18

応用技術

データウェアハウスのメタデータに関する記述のうち,データリネージはどれか。

  1. 誰がどのデータを見てよいかを示す情報であり,適切なアクセス制御を目的として設定される。
  2. データが誰によって作られ管理されているかを示す情報であり,データ構造やデータ辞書を見ても意味が分からないときの問合せ先を表す。
  3. データがどこから発生し,どのような変換及び加工を経て,現在の形になったかを示す情報であり,データの生成源の特定又は障害時の影響調査に利用できる。
  4. データ構造がどのように定義されているかを示す情報であり,Web サイトなどに公開して検索できるようにする。
解答と解説を見る

正解:

結論: データがどこから来て、どう加工されて今の形になったかの記録がデータリネージです。

なぜ: リネージ(lineage)は「血統・来歴」という意味です。分析結果の数字がおかしいとき、どの元データのどの加工でずれたのかを遡れます。逆向きにも使えて、ある元データが壊れたときにどの結果まで影響が及ぶかを洗い出せます。

アはアクセス制御の情報、イはデータの管理責任者(オーナーシップ)、エはスキーマの公開の話で、いずれも来歴ではありません。

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

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

19

セキュリティ

システムで利用できるパスワードの仕様を,数字 16 桁から,英数字記号及び空白文字(計 95 種の文字とする)から成る決まった長さのものに変更する。このとき,利用できるパスワードの総数を変更前よりも多くするために必要な新しいパスワードの最小桁数はどれか。ここで,log10 95 = 1.98 とする。

  1. 6
  2. 7
  3. 8
  4. 9
解答と解説を見る

正解:

結論: 9 桁です。

なぜ: 変更前の総数は 10 の 16 乗です。変更後を n 桁とすると 95 の n 乗なので、95 の n 乗 > 10 の 16 乗となる最小の n を求めます。

両辺の常用対数をとると n × 1.98 > 16、つまり n > 8.08… です。n は整数なので 9 になります。

⚠️ 8 桁では足りません。8 × 1.98 = 15.84 で 16 に届かないためです。文字の種類が 10 から 95 へ 9 倍以上になっても、桁数は半分強までしか減らせない——ここが指数の効き方の勘どころです。

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

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

20

セキュリティ

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

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

正解:

結論: 利用者の振り分けを学習して、統計で判定するのがベイジアンフィルターです。

なぜ: 「この単語が入っているメールは迷惑メールである確率が高い」という確率を、利用者が実際に振り分けた実績から計算します。使うほど、その人宛のメールの傾向に合っていきます。ベイズの定理を使うのでこの名前です。

アは許可リスト、イは送信ドメイン認証(SPF など)、ウはブラックリスト(DNSBL)で、いずれもあらかじめ決めた名簿による判定であり、学習はしません。

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

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

21

応用技術

ブロックチェーンに関する記述のうち,適切なものはどれか。

  1. RADIUS を必須の技術として,参加者の利用者認証を一元管理するために利用する。
  2. SPF を必須の技術として,参加者間で電子メールを送受信するときに送信元の真正性を確認するために利用する。
  3. 楕円曲線暗号を必須の技術として,参加者間の P2P(Peer to Peer)通信を暗号化するために利用する。
  4. ハッシュ関数を必須の技術として,参加者がデータの改ざんを検出するために利用する。
解答と解説を見る

正解:

結論: ハッシュ関数が欠かせません。

なぜ: 各ブロックが直前のブロックのハッシュ値を持つことで、鎖のようにつながります。途中を書き換えるとハッシュ値が変わり、後ろのブロックが記録している値と食い違うので、改ざんが必ず露見します。この性質がブロックチェーンの土台です。

ア・イ・ウはいずれも「必須」ではありません。RADIUS は認証サーバの規格、SPF はメールの送信ドメイン認証、楕円曲線暗号は署名などに使われることはありますが、どれもブロックチェーンの成立条件ではありません

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

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

22

システム構成要素

複数組の RAID5 をストライピング動作させることによって,一組の RAID5 と比べて性能を改善させたものを RAID5+0 と呼ぶ。この RAID5+0 を一組の RAID5 と比較した記述として,適切なものはどれか。

  1. RAID5+0 の実効容量は一組の RAID5 と同様に,全体の HDD 台数より 1 台少ない台数分になる。
  2. RAID5+0 の耐障害性は一組の RAID5 よりも高く,故障台数が全体の HDD 台数の半分までならデータを復旧できる。
  3. 一組の RAID5 には最小 3 台,二組の RAID5 には最小 6 台の HDD が必要だが,二組の RAID5 をストライピング動作させる RAID5+0 にすれば最小 5 台の HDD でシステムを構成できる。
  4. 一組の RAID5 の転送速度に比べて,複数組の RAID5 をストライピング動作させた RAID5+0 は転送速度を高速にできる。
解答と解説を見る

正解:

結論: 速くなる——これが RAID5+0 の目的です。

なぜ: 読み書きを複数の組に分散して同時に走らせるので、一組だけのときよりまとめて流せる量が増えます。設問自身が「性能を改善させたもの」と言っています。

他はいずれも数が合いません。

  • … パリティは組ごとに 1 台分要ります。二組なら 2 台分減るので「全体より 1 台少ない」にはなりません
  • … RAID5 は一組につき 1 台までしか壊れても平気ではありません。同じ組で 2 台壊れればその時点で復旧できないので、「全体の半分まで」は成り立ちません
  • … 組み合わせても各組に最小 3 台ずつ要るので、二組なら 6 台必要です

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

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

23

システム構成要素

Web アプリケーションサーバの可用性設計方式のうち,セッションを共有する負荷分散方式の説明はどれか。

  1. CPU やメモリなどの各装置を二重化した 1 台のサーバを使用し,各装置が処理を分担する。故障時には故障が発生していない装置がセッションを処理するので,サービスは継続される。
  2. 稼働しているサーバと同一機能をもつサーバを待機系として用意し,故障時には待機系に手動で切り替えることによってセッションを引き継ぎ,サービスを復旧させる。
  3. 同一機能と共通のディスク領域をもつ複数台のサーバでクラスタを構成することによって処理を分担し,故障時には故障が発生していない他のサーバがセッションを引き継ぎ,サービスを継続させる。
  4. 同一機能をもつ複数台のサーバで処理を分担し,故障時には故障が発生したサーバを切り離す。故障時に行っていた処理は消失するが,新規にセッションを開始して,サービスを復旧させる。
解答と解説を見る

正解:

結論: 共通のディスクにセッションを置き、他のサーバが引き継ぐ方式です。

なぜ: 設問の要点は「セッションを共有する」ことです。セッションを各サーバの中だけに持つと、そのサーバが落ちた時点で失われます。共通の置き場に持てば、別のサーバが続きから処理できます

エも複数台で分担しますが、故障時の処理は消失すると書いてあります。これは共有していない形なので、設問の方式ではありません。

アは 1 台のサーバの中での二重化、イは待機系への手動切替えで、どちらも負荷分散ではありません。

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

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

24

開発技術

組込み機器のソフトウェア開発にプラットフォーム開発を適用する利点として,適切なものはどれか。

  1. 機器ごとにソフトウェアを新規に設計するので,最小のコードサイズで最大の性能を実現できる。
  2. 機器ごとのハードウェアとソフトウェアの結合テストを不要にできる。
  3. ソフトウェアを複数の異なる機器に共通して利用することが可能になるので,ソフトウェア開発効率を向上できる。
  4. 複数の機器に共通のバグが発生したとき,ソフトウェアのプラットフォーム部分をバグの原因から除外できる。
解答と解説を見る

正解:

結論: 共通の土台を作って使い回すことで、開発効率が上がります。

なぜ: プラットフォーム開発は、機器ごとに毎回ゼロから作るのをやめ、共通の土台を 1 つ作って各機種で使い回すやり方です。機種が増えるほど、作らずに済む部分が増えます。

アは逆で、機器ごとに作り込む場合の利点です(共通化すると、その機種では使わない機能も載るのでコードは大きくなりがちです)。イについて、ハードウェアは機器ごとに違うので結合テストは省けません。エも逆で、共通部分だからこそ複数機種に同じ不具合が出ます——むしろプラットフォームを真っ先に疑うべき場面です。

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

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

25

開発技術

エクストリームプログラミング(XP: Extreme Programming)における “テスト駆動開発” の特徴はどれか。

  1. 最初のテストで,なるべく多くのバグを摘出する。
  2. テストケースの改善を繰り返す。
  3. テストでのカバレージを高めることを目的とする。
  4. プログラムコードを書く前にテストコードを書く。
解答と解説を見る

正解:

結論: テストを先に書く——これがテスト駆動開発です。

なぜ: 先にテストを書くと、そのコードが何を満たすべきかが、実行できる形で決まります。書き終わったコードを後から確かめるのではなく、「失敗するテストを書く → 通るコードを書く → 整理する」を小さく繰り返します。

残りはテストそのものの話であって、書く順番の話ではありません。

  • … バグを多く見つけることが目的ではありません(何を作るかを先に決めるのが目的です)
  • … テストケースを改善するのではなく、テストを先に書くのが特徴です
  • … カバレージは結果として上がることはありますが、目的ではありません

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

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

出典と改変について

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

← 過去問の一覧へ戻る