データベーススペシャリスト試験 令和6年度 秋期 午前II 問3
関係データベースのテーブルにレコードを1件追加したところ、インデックスとして使う、B⁺木のリーフノードCがノードC1とC2に分割された。ノード分割後のB⁺木構造はどれか。ここで、矢印はノードへのポインタとする。また、中間ノードAには十分な空きがあるものとする。

選択肢を押すと答え合わせができます。
正解と解説を見る
【正解】イ
B⁺木では、実データ又は実データへのポインタをもつリーフノードが同じ階層に並び、キーの順序に従って相互に連結されます。分割前の図では、AがリーフノードB、C、Dを指し、リーフはB、C、Dの順に双方向で連結されています。CがC1とC2に分割された後は、C1とC2を隣接させ、リーフの順序をB、C1、C2、Dとする必要があります。また、親Aには空きがあるので、C2を指すポインタと境界となるキーをAに追加でき、A自体を分割する必要はありません。これらを満たす構造はイです。
アの構造は誤りです。リーフの並びはB、C1、C2、Dですが、AからC2へのポインタがありません。リーフ分割時には、新しくできたリーフを指すエントリを親ノードにも追加します。
ウの構造は誤りです。C2がDの後ろに配置され、リーフがB、C1、D、C2の順になっています。Cから分割されたC1とC2はキー範囲が連続するため、元のCの位置で隣接し、その後ろにDが続きます。
エの構造は誤りです。C2がC1の下位ノードのように配置されており、リーフの階層がそろっていません。B⁺木は全てのリーフが同じ深さにある平衡木です。
【ポイント】 リーフ分割では、キーを二つのリーフへ分配し、新しい右側リーフへのポインタを親に追加します。 リーフ同士の連結順序も更新するため、範囲検索をキー順に継続できます。 親に空きがなければ親の分割が連鎖しますが、本問ではAに空きがあるので連鎖しません。
出典:令和6年度 秋期 データベーススペシャリスト試験 午前II 問3
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。
この回の25問を、アプリで通しで解く
- 本番と同じ問題数・制限時間で通し演習(模試モード)
- 間違えた問題は自動で「復習すべき問題」に回る
- 解説で分からない点はAIに質問できる