階層データの取り扱い

概要

通常の親子関係の設計であれば、parent_idといった形で親のIDを持つだけで完了する。
一方で、システムに置いて扱う階層構造は、カテゴリ、本支店関係、部署など、階層が明確に定義されていないことが多い。
この時に使えるのが”入れ子集合モデル”である。

詳しい説明

テクノロジー

いろいろな言語プラットフォームで、入れ子集合モデルを取り扱うためのライブラリがある。 私はRuby on RailsではAwesome Nested Setをよく使っている。

注意点

  • 一覧などで気安く階層を遡ったりすると、負荷の低下をまねく
  • よく使うものはきちんと外部キーを持っておいたほうが良い