令和6年度 秋期 データベーススペシャリスト試験 午前II 問8

テクノロジデータベース

この問題は2024(R6)秋 データベーススペシャリスト 午前IIに出題されたものです。出題時点の法令・制度に基づく内容のため、現行の内容と一致しない場合があります。

本ページの問題文・選択肢は、原本の体裁を Web 表示用に正規化しています(改行・記号・数式・図表参照の調整)。設問の趣旨および正解に影響する変更は加えていません。

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

ツリー構造
図の説明テキスト

木構造の図。最上位にノードAがある。AからBとCへ矢印が伸びている。BからはDとEへ矢印が伸びている。CからはFへ矢印が伸びている。FからはGへ矢印が伸びている。

隣接リスト
図の説明テキスト

隣接リスト

親ノード 子ノード
NULL A
A B
A C
B D
B E
C F
F G
SQL文
図の説明テキスト

〔SQL文〕
SELECT 子ノード FROM 隣接リスト
a
SELECT 親ノード FROM 隣接リスト

解答・解説を読む

正解: 選択肢

リーフノードとは、木構造(ツリー構造)において子を持たないノードのことです。

隣接リスト表は、通常「ノード」と「親ノード」などの関係を保持します。すべてのノードの集合から、他のノードの親として登場するノード(親ノード)を除外すれば、子を持たないリーフノードを抽出できます。

SQLにおける EXCEPT は、左側のSELECT結果から右側のSELECT結果を差し引いた 差集合 を取得する演算子です。したがって、すべてのノードの集合から、親ノードの集合を EXCEPT で引くことでリーフノードを取得できます。

各選択肢の解説

  • : EXCEPT差集合 を求める演算子であり、すべてのノードから親ノードを除外してリーフノードを抽出できるため、正解です。
  • : INTERSECT積集合(両方に共通するデータ)を求める演算子です。
  • : UNION和集合(両方のデータを合わせる、重複は排除する)を求める演算子です。
  • : UNION ALL は重複を含む 和集合 を求める演算子です。