MySQLの閉包テーブル(Closure Table)でルートを取得したい
親子関係のあるカテゴリー階層を categories テーブルと、ancestor, descendant, depth を持つ閉包テーブルで表現しようとしています。
depth は ancestor と descendant の距離を表していて、ancestor == descendant のとき 0(自分自身)で、子は 1 、孫は 2 です。
この設計で親を持たないルートカテゴリーを取得したいのですが表し方がわかりません。
言葉で表すなら、depth が 0 のカテゴリーのうち descendant ととして参照されている数が ancestor == descendant の1つしか無いカテゴリーになると思います。
無理にSQLで抽出せず、アプリケーションからの登録段階で「is_root」のようなカラムを用意してその値で判断する形にも出来ますがそうしたほうが良いのでしょうか?
RDB は MySQL を想定しています。