# 継承関係の物理データモデル設計

論理データモデル において継承関係がある場合に、 物理データモデル をどの様に設計するかについて。

UML による一気通貫 DB システム設計(細川努)|翔泳社の本 を読んで、 わからなかったところを調べながらまとめました。

# データモデリング

システムが扱うデータ構造をモデルで表現すること。

# ER モデル

データモデリング手法のひとつ。

データ構造を実体 Entity と関連 Relationshop の 2 つの概念で表現したもの。

# 論理データモデル と 物理データモデル

# 論理データモデル

  • 特定のデータベースに依存しないデータモデルのこと。
  • 日本語での項目名や項目に関する説明などを定義することで、業務においてどのようなデータが必要なのかを詳細に定義する。
  • オブジェクト指向開発における分析モデルのエンティティにほぼ対応する。

# 物理データモデル

  • 特定のデータベース(Oracle, DB2, SQL Server)を前提とした物理的なデータ仕様を定義したモデルのこと。
  • 実際のデータベース構築に必要な詳細情報を定義する。

# 継承関係の物理モデル設計

# オブジェクト指向設計

スーパークラスとサブクラスとの間で継承関係を定義できる。

サブクラスは、スーパークラスに定義した型や属性、メソッドなどをサブクラスが継承できる。 また、サブクラスで属性やメソッドなどを拡張できる。

スーパークラス: 親クラス。

サブクラス: 子クラス。スーパークラスを継承したクラス。

# 3 つのパターン

# 1. Single Table Inheritance Pattern(単一テーブル継承)

スーパークラス、サブクラスの属性をすべて 1 つのテーブル上に持たせる。

# メリット

サブクラスがいくつあっても、すべて 1 つのテーブルで定義できる。

# デメリット

サブクラスの種類によっては、利用されない項目に Null が入る。

# 2. Class Table Inheritance Pattern(クラステーブル継承)

スーパークラス、サブクラスそれぞれにテーブルを定義する。

サブクラスに対応するテーブルには、主キーとサブクラス独自の項目だけを保持する。

# メリット

データ格納効率が良い。

# デメリット

アプリケーションの実装が複雑になる。

# 3. Concreate Table Inheritance Pattern(具象テーブル継承、具象クラス継承)

サブクラスごとにテーブルを作る。

スーパークラスの項目はすべて共通項目として各テーブルに保持される。

具象クラス: インスタンス化できるクラス

# メリット

シンプルに実装できる。

# デメリット

スーパークラスに仕様変更があった時、それぞれのテーブルを修正しなければならない。

# どれが適切か

23 がよく使われる。 パフォーマンスは 3 のほうが優れている。

# 感想

大学のとき、なんとなく学んだ気がするのできちんと勉強しておけばよかったと思った。

# 参考