次のように定義されたデータベーススキーマがあるとします。
Person.mail_address_key ----- Address.address_key
Person.billing_address_key ----- Address.address_key
A Person
には郵送先住所と請求先住所があります。非正規化手法として、別のAddress
テーブルを作成します。時間のほとんどは、mail_address_key
およびbilling_address_key
単一のはPerson
同じ値になります(例:自分の郵送や請求先住所のキーが同じになります)。
私のデータベースでAddress
は、IDがあります(アドレスキー)。しかし、私のドメインモデルではAddress
、がエンティティになる説得力のある理由はわかりません。値オブジェクトにしたいのですが。
- DDDでは、これはオプションですか?または、値オブジェクトは通常、(テーブルではなく)列のグループですか?データベースがドメインモデルの構造を指示するべきではないと思うので、ここでは悪魔の擁護者を演じています。
- もしそうなら、アドレスはどこで/いつ/どのようにデータベースのアイデンティティを失うので、ドメインレイヤーの値オブジェクトとして使用できますか?または、データベース識別子を値オブジェクトに保持することになっていますか?
- モデルをデータベースに永続化する必要がある場合、プロセスは何ですか?私はa)これらのフィールドでアドレスを検索し、b)存在しない場合は新しいアドレスを作成しますc)存在する場合はフィールドを更新しますか?