- パーティ モデルの背後にある基本原則とやる気力は何ですか?私はそれを使用しました程度に
が、それは主にコードの再利用性と柔軟性についてです。以前はguest/user/adminモデルで使用していましたが、ユーザーをあるグループから別のグループに移動させる必要がある場合には、その価値が確かに証明されます。これをユーザーの下にいる組織や企業にまで広げてください。これは実際にSQLに特有の抽象概念を提供しています。
- データモデルにはどのような処理が行われますか? (私の上のビットは かなり高いレベルで、おそらく はいくつかの点で間違っています。私は プロジェクトを使っていましたが、 は別のチームで作業していました )。
あなたのビットはかなり正しいですが、詳細はもう少し必要です。データベースのエンティティ(党と呼んでいる)が別の党に契約を結ぶ状況を想像することができます。この状況では、作業を外注することができます。当事者は、従業員、契約者、または会社、すべてのサブクラスの党であるかもしれません。私の理解から、あなたはPartyテーブルと、各サブクラスのためのより具体的なテーブルを持っています。さらにサブクラス化することができます(Party - > Person - > Contractor)。
- あなたの経験から、あなたはそれについて気づかれましたか?あなたはそれを使用しましたか?もし なら、もう一度やりますか?賛否両論は でしたか?
、あなたのシステムに新しいタイプを追加し、新しいレベルに移動する(ユーザーに始まり、建築家に期待していなかったタイプの間の関係を作成するために柔軟に必要がある場合には、雇用企業、その利点を持っています他の会社など)。また、単一のクエリを実行し、複数のタイプのパーティ(企業、従業員、請負業者)のデータを取得する利点があります。一方で、必要なデータにアクセスするための抽象レイヤーを追加し、特定のタイプのクエリを実行するときにデータベースの負荷(または少なくとも結合数)を増やしています。抽象度が高すぎると、複雑さが読みやすさとデータベースの負荷に悪影響を及ぼし始めるため、データを取得するために複数のクエリを実行する必要があります。
- パーティモデルがORMの選択を制限しましたか?たとえば、 ドメインオブジェクトと物理データ モデルの間に「抽象レイヤー」が十分にありませんでしたので、特定のORMを削除する必要がありましたか?
これは、私は確かでは少し弱いですエリアですが、私は、アプリケーション層でのビューとミラーリング抽象化を使用すると、この問題のあまりなされていないことがわかりました。私にとって本当の問題は、データソースを直接読みたいときに、常に「データXの部分がどこにあるか」ということでした(システム上の新しい開発者にとっても直感的なことではありません)。
素晴らしい返答です。ありがとう。 「アプリケーションレイヤーで鏡面化された抽象」と言えば、ドメインオブジェクトもパーティモデルパターンに従っているということですか? –
はい、論理的に2つの場所に書き込む必要があり、明らかに同期の問題が発生します。しかし、サードパーティのORMの使用量は非常に限られています(私は社内のORMツールを頻繁に使用しています) –