単一テーブル継承

開発設計

単一テーブル継承とは?

 状態:-  閲覧数:1,652  投稿日:2009-07-09  更新日:2017-07-29  
平仮名表記
・たんいつてーぶるけいしょう

英語表記
・Single Table Inheritance

略称

・STI.

Ruby on Rails(ActiveRecord)が提供している機能
・「オブジェクト指向プログラミング」における継承を、「オブジェクト関係マッピング」において実現するための一手法
・データベーステーブルの一つの属性(フィールド)を用いて、「対応するオブジェクトが継承関係にあるクラス群のうちどのクラスに属しているのか」を識別する方法
・モデルを永続化するときに、どのクラスなのかというメタ情報を含めてデータベースに保存

一つのテーブル内で「継承関係にあるクラスのカラムを全て持つ」方法
・モデルクラスを継承で表現し、永続化部分はスーパークラスのテーブル1枚でまかなう
・継承構造にある全てのクラスの全てのフィールドを、1個のテーブルの中に対応付ける
・クラスの継承ヒエラルキーを、「様々なクラスの全てのフィールドのためのカラムを持つ1個のテーブル」として表現する

前提 / 導入メリット

 閲覧数:337 投稿日:2017-07-29 更新日:2017-07-29 

前提


データベース
・継承をサポートしない

ORマッパー
・1つのモデルと1テーブルが対応する

導入メリット


join をできる限り少なくする
複数のテーブルに置かれた継承構造の処理を速く実行できるようにする


具体例


Model AとModel Aの特例であるModel B, C, Dがあったとき
・B, C, D に対してそれぞれテーブルを作成せず、Aに対応するテーブルで、B, C, Dのモデルのデータを格納する



同義語


シングルテーブル継承


コメント投稿(ログインが必要)