令和6年度 秋期 データベーススペシャリスト試験 午前II 問8
【問題8】
図のツリー構造に対するデータを格納した“隣接リスト”表から、リーフノードを取得するSQL文のaに入れる字句はどれか。ここで、図の丸はノードを表し、矢印は親ノードから子ノードへの関係を表す。
【解説】
リーフノードはツリー構造において子ノードとして存在するが、親ノードとしては登場しないノードを指します。このため、以下の手順でリーフノードを取得します:
1. 隣接リスト表の構造:
隣接リストには親ノードと子ノードの情報が含まれています。
親ノード |
子ノード |
NULL |
A |
A |
B |
A |
C |
B |
D |
B |
E |
C |
F |
F |
G |
2. リーフノードの条件:
子ノードの中で親ノードとして登場しないノードを取得します。この操作は以下のSQL文で行います:
子ノードのリストから親ノードのリストを差し引きます。
SQL文:
SELECT 子ノード FROM 隣接リスト
EXCEPT
SELECT 親ノード FROM 隣接リスト;
3. EXCEPTの役割:
EXCEPT句は、最初のクエリ結果から次のクエリ結果を差し引きます。この操作により、親ノードとして登場しない子ノード、つまりリーフノードを抽出できます。
4. リーフノードの結果:
リーフノードは、D, E, G です。
出典:令和6年度 秋期 データベーススペシャリスト試験 午前II 問8