単一テーブル継承とは?
状態:-
閲覧数:1,730
投稿日:2009-07-09
更新日:2017-07-29
平仮名表記
・たんいつてーぶるけいしょう
英語表記
・Single Table Inheritance
略称
・STI.
Ruby on Rails(ActiveRecord)が提供している機能
・「オブジェクト指向プログラミング」における継承を、「オブジェクト関係マッピング」において実現するための一手法
・データベーステーブルの一つの属性(フィールド)を用いて、「対応するオブジェクトが継承関係にあるクラス群のうちどのクラスに属しているのか」を識別する方法
・モデルを永続化するときに、どのクラスなのかというメタ情報を含めてデータベースに保存
一つのテーブル内で「継承関係にあるクラスのカラムを全て持つ」方法
・モデルクラスを継承で表現し、永続化部分はスーパークラスのテーブル1枚でまかなう
・継承構造にある全てのクラスの全てのフィールドを、1個のテーブルの中に対応付ける
・クラスの継承ヒエラルキーを、「様々なクラスの全てのフィールドのためのカラムを持つ1個のテーブル」として表現する
・たんいつてーぶるけいしょう
英語表記
・Single Table Inheritance
略称
・STI.
Ruby on Rails(ActiveRecord)が提供している機能
・「オブジェクト指向プログラミング」における継承を、「オブジェクト関係マッピング」において実現するための一手法
・データベーステーブルの一つの属性(フィールド)を用いて、「対応するオブジェクトが継承関係にあるクラス群のうちどのクラスに属しているのか」を識別する方法
・モデルを永続化するときに、どのクラスなのかというメタ情報を含めてデータベースに保存
一つのテーブル内で「継承関係にあるクラスのカラムを全て持つ」方法
・モデルクラスを継承で表現し、永続化部分はスーパークラスのテーブル1枚でまかなう
・継承構造にある全てのクラスの全てのフィールドを、1個のテーブルの中に対応付ける
・クラスの継承ヒエラルキーを、「様々なクラスの全てのフィールドのためのカラムを持つ1個のテーブル」として表現する
前提 / 導入メリット
前提
データベース
・継承をサポートしない
ORマッパー
・1つのモデルと1テーブルが対応する
導入メリット
join をできる限り少なくする
複数のテーブルに置かれた継承構造の処理を速く実行できるようにする
具体例
Model AとModel Aの特例であるModel B, C, Dがあったとき
・B, C, D に対してそれぞれテーブルを作成せず、Aに対応するテーブルで、B, C, Dのモデルのデータを格納する
同義語
シングルテーブル継承