令和6年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問8
テクノロジ/データベース図のツリー構造に対するデータを格納した“隣接リスト”表から,リーフノードを取得する SQL 文の a に入れる字句はどれか。ここで,図の丸はノードを表し,矢印は親ノードから子ノードへの関係を表す。 〔SQL 文〕 SELECT 子ノード FROM 隣接リスト [ a ] SELECT 親ノード FROM 隣接リスト

出典:令和6年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問8
- アEXCEPT
- イINTERSECT
- ウUNION
- エUNION ALL
正解:ア
解説
リーフノードとは,子ノードを一つも持たないノードのことです。“隣接リスト”表において,子ノード列に現れる値の集合が「木の中に存在する全てのノード」,親ノード列に現れる値の集合が「子を持つ(親になっている)ノード」を表すため,子ノード列の値から親ノード列の値を EXCEPT で除いた集合が,子を持たないノード,すなわちリーフノードの集合になります。
選択肢ごとの解説
- ア正しい。子ノード集合から親ノード集合を EXCEPT(差演算)で取り除くことによって,子を持たないノード(D,E,G)だけが残り,リーフノードを取得できます。
- イ誤り。INTERSECT(共通集合)では,子ノードであり,かつ親ノードでもあるノード(内部ノード)が得られてしまい,リーフノードは得られません。
- ウ誤り。UNION(和集合,重複除去あり)では,子ノードと親ノードの両方の値を合わせた集合が得られ,全てのノードが対象になってしまいます。
- エ誤り。UNION ALL(和集合,重複除去なし)でも同様に,子ノードと親ノードの両方の値がそのまま合わせられるだけで,リーフノードだけを取得することはできません。