オーダーと明細のモデル。
明細は、最低一行ないといけない、というのがビジネスルール。(構造ルール)
Java で実装すると、 Order クラスが、 List
明細が最低一行必須、というビジネスルールは、メソッドで実装する。
同じモデルをテーブルで実装する。
参照が逆転しちゃいますね。
Java だと、Order クラスが List
Order テーブルは、Item テーブルへの情報を持たないけど、Item テーブルは、Order Number を参照している。(外部キー参照)
参照の逆転
マーチンファウラーのPoEAA にでてくる外部キーマッピングですね。
もっとも、PoEAA では、このパターン(コレクションへの単方向の参照)は、依存マッピングを推奨している。
このテーブルモデルは、Item の主キーである object_oid の扱い方の問題。
依存マッピングでは、
・object_oid での検索はしない。( Item を単独で検索はしない )
・テーブルの主キーの object_oid は、 Java のオブジェクトでは持たない ( 一意フィールドを持たない)
という実装をする。
同じモデルを、Java で実装するのと、テーブルで実装するのでは、参照関係が逆転。この逆転構造を、マッピングする課題を検討しているのが、PoEAA 12章 O-R 構造パターン、というわけだ。