IPA過去問ドリル

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

テクノロジ/データベース

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

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

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

正解:ア

解説

リーフノードとは,子ノードを一つも持たないノードのことです。“隣接リスト”表において,子ノード列に現れる値の集合が「木の中に存在する全てのノード」,親ノード列に現れる値の集合が「子を持つ(親になっている)ノード」を表すため,子ノード列の値から親ノード列の値を EXCEPT で除いた集合が,子を持たないノード,すなわちリーフノードの集合になります。

選択肢ごとの解説

  • 正しい。子ノード集合から親ノード集合を EXCEPT(差演算)で取り除くことによって,子を持たないノード(D,E,G)だけが残り,リーフノードを取得できます。
  • 誤り。INTERSECT(共通集合)では,子ノードであり,かつ親ノードでもあるノード(内部ノード)が得られてしまい,リーフノードは得られません。
  • 誤り。UNION(和集合,重複除去あり)では,子ノードと親ノードの両方の値を合わせた集合が得られ,全てのノードが対象になってしまいます。
  • 誤り。UNION ALL(和集合,重複除去なし)でも同様に,子ノードと親ノードの両方の値がそのまま合わせられるだけで,リーフノードだけを取得することはできません。
データベーススペシャリストの過去問を演習モードで解く