PoEAA ch12 Association Table Mapping

PoEAA勉強メモ

出典: 


Association Table Mapping

Saves an association as a table with foreign keys to the tables that are linked by the association.

  • 多対多ではForeign Key Mappingを適用できない

    • single-valuedな関連端がないため
  • RDBで多対多を表現するには、関連テーブルが必要

    • 数十年来の定番の手法
  • Association Table Mappingは、多値のフィールドと関連テーブルとのマッピングを行う

How It Works

  • 関連テーブルには、対応するメモリ上オブジェクトがない
  • したがってIDもない

    • 主キーはFKの複合主キー
  • データの読み込み方

    • 2クエリ

      • 簡単だがコスト高い
    • JOINして1クエリ

      • コスト低いが、オブジェクトとのマッピングが少し複雑
  • 関連の更新

    • 本来、多値フィールドの更新は、多くの問題をはらむ厄介なものである
    • 幸いにして、関連テーブルは多くの場合Dependency Mappingとして扱えるため、難なく生成・破棄できる

When to Use It

  • 多対多の関連の表現

    • 他にすべはなし
  • 他の関連にも適用できるが、普通は正しい選択ではない

    • Foreign Key Mappingよりも複雑
    • 余計なJOINを要する
  • DBを自由できないために、本来不要だが適用することがある

    • 既存のテーブルを関連付けたいが、カラムを追加する権限がない場合

      • 新たに関連テーブルを作る
    • 本来不要な関連テーブルがすでにある場合

      • DBリファクタリングするより楽

関連テーブルには、対応するメモリ上オブジェクトがない

  • 関連テーブルが情報をもつ場合はこの限りではない

    • 例: 従業員-会社関連テーブルが雇用情報も保持している
    • 対応するドメインオブジェクトが存在する

      • 【補】この場合「雇用」か