
162
導
入
編
1
設
計
編
ア
キ
テ
ク
チ
ャ
編
2
3
4
5
6
7
3
●抽象クラスと具象クラスごとにテーブルを作る
●具象クラスごとにテーブルを作る
●クラス階層ごとに汎用テーブルを作り、さらに型を表すカラムを用意する
O/Rマッピングツールによっては、このような処理を自動的にやってく
れるものがあります。例えば、Hibernate でもこれと同等の指定ができます。
それでは、上記の3とおりの方法について説明します。
抽 象クラスと具 象クラスごとにテーブルを作る
継承をテーブル間のリレーションで置き換える方法です(図3-40)。クラ
スごとにテーブルを作成するので、概念モデルを素直に表現でき、正規化が
十分に行われます。
クレジットカード決済 銀行決済
注文決済ID
決済日時
注文決済ID (FK)
クレジットカード種別
有効期限
クレジットカード番号
クレジットカード名義
注文決済ID (FK)
銀行名
支店名
口座種別
口座番号
図
3
-
40
:抽象クラスと具象クラスごとにテーブルを作る
この方法では、具象クラスの数が増えたり、具象クラスが変更された場合
でも、テーブルの変更が容易です。その一方で、この方法はSELECTするの
に具象クラスと抽象クラスにあたるテーブルをJOINして取得するので、パ
フォーマンスに若干の問題があります。