ORマッパーの場合、1つのモデルと1テーブルが対応する。このとき、Model AとModel Aの特例であるModel B, C, Dがあったとき、B, C, D に対してそれぞれテーブルを作成せず、Aに対応するテーブルで、B, C, Dのモデルのデータを格納するのが単一テーブル継承。Ruby on Rails(ActiveRecord)で提供している機能。Martin Fowler: Pattern of EAA Catalog, Class Table Inheritanceを解決するための実装。
- en.wikipedia:Single Table Inheritance
- Active Record: Single table inheritance
- SAMURAILS: Single Table Inheritance with Rails 4 (Part 1)
- kidachi_:STI(単一テーブル継承)とメタプログラミングでDRY
とても便利そう。でも、単一テーブル継承は便利だけど、フィールドの肥大および使用しないフィールドを増やす恐れがあるのでできるだけ使うなという意見もある。