応用情報技術者SQLとトランザクションの詳細オリジナル・公式資料照合難易度
再帰CTEで循環グラフをたどる。出力列に頂点IDと深さを含め、UNIONを使っている。UNIONだけで必ず循環を止められない理由はどれか。
A
同じ頂点でも深さが変わると別行になるため、訪問経路やCYCLE句などによる循環検出が必要である★ 正解
UNIONは全出力列の重複を除く。深さの異なる行が増え続けるなら、頂点の再訪問をそれだけで排除できない。
B
UNIONはどの列があっても頂点IDだけで必ず比較するから
重複判定は出力行全体であり、頂点IDだけの特別扱いではない。
C
再帰CTEではUNIONの重複除去が常に無効だから
重複除去は行うが、深さが違う行は同一ではない。
D
ORDER BYを付けるだけで循環した辺が自動的に削除されるから
並び替えは循環の排除や訪問済み判定を代行しない。
解説
UNIONは全出力列の重複を除く。深さの異なる行が増え続けるなら、頂点の再訪問をそれだけで排除できない。
根拠資料・確認情報
対応範囲:2026年度 応用情報技術者試験/シラバスVer.7.2・科目A/B表記
資料確認日:2026-11-02
アプリ内の初回回答データ
回答データを読み込んでいます。
同じレッスンの問題
問題 1
関係R(A,B,C,D)の関数従属性はA→B、B→C、C→Aだけで、これらから導けるもの以外の非自明な従属性はない。候補キーの組はどれか。
問題 2
関係R(A,B,C)をR1(A,B)とR2(B,C)へ分解する。B→Cが成立し、共通属性BがR2のキーになる。この分解の説明はどれか。
問題 3
PostgreSQL 16のREAD COMMITTEDで、同じトランザクション内で同じSELECTを2回実行する。間に別トランザクションが対象行を変更してCOMMITした。2回目について適切なのはどれか。
問題 4
当直医A,Bがそれぞれ別行で勤務中である。2トランザクションが同じスナップショットを読み「他方が勤務中」を確認し、自分の別行を非勤務へ更新して両方COMMITした。破られた条件と現象はどれか。