階層データの取り扱い
概要
通常の親子関係の設計であれば、parent_idといった形で親のIDを持つだけで完了する。
一方で、システムに置いて扱う階層構造は、カテゴリ、本支店関係、部署など、階層が明確に定義されていないことが多い。
この時に使えるのが”入れ子集合モデル”である。
詳しい説明
テクノロジー
いろいろな言語プラットフォームで、入れ子集合モデルを取り扱うためのライブラリがある。 私はRuby on RailsではAwesome Nested Setをよく使っている。
注意点
- 一覧などで気安く階層を遡ったりすると、負荷の低下をまねく
- よく使うものはきちんと外部キーを持っておいたほうが良い