- 政党モデルの背後にある核となる原則と原動力は何ですか?
私が使用した範囲では、主にコードの再利用と柔軟性に関するものです。以前にゲスト/ユーザー/管理モデルで使用したことがあり、ユーザーをあるグループから別のグループに移動する必要がある場合に、その価値が確かに証明されています. これを拡張して、組織や企業をその下のユーザーで表現すると、SQL に特に固有ではない抽象化の形式が実際に提供されます。
- データモデルに対して何をするように規定していますか? (上記の私のビットはかなり高レベルであり、いくつかの点で間違っている可能性があります。私はそれを使用するプロジェクトに参加していましたが、他の問題に焦点を当てた別のチームと協力していました)。
もう少し詳細が必要ですが、上記のビットはかなり正しいです。データベース内のエンティティ (当事者と呼びます) が別の当事者と契約し、それが下請け契約を結ぶ状況を想像することができます。パーティーは、従業員、請負業者、または会社である可能性があり、すべてパーティーのサブクラスです。私の理解では、Party テーブルがあり、次に各サブクラスのより具体的なテーブルがあり、さらにサブクラス化できます (Party -> Person -> Contractor)。
- あなたの経験は、あなたがそれについて感じるように導きましたか? 使用しましたか。使用した場合、もう一度使用しますか。長所と短所は何でしたか?
システムに新しいタイプを柔軟に追加し、最初は予想もしていなかったタイプ間の関係を作成し、設計する必要がある場合 (ユーザーが新しいレベルに移行する、企業が他の企業を雇用するなど)、これには利点があります。また、単一のクエリを実行して、複数のタイプの関係者 (会社、従業員、請負業者) のデータを取得できるという利点もあります。反対に、実際に必要なデータを取得するために抽象化のレイヤーを追加し、特定の型をクエリするときにデータベースの負荷 (または少なくとも結合の数) を増やしています。抽象化が行き過ぎた場合、複雑さが可読性とデータベースの負荷に悪影響を及ぼし始めるため、データを取得するために複数のクエリを実行する必要が生じる可能性があります。
- パーティ モデルによって ORM の選択が制限されましたか? たとえば、特定の ORM を排除する必要があったのは、ドメイン オブジェクトと物理データ モデルの間に十分な「抽象化レイヤー」を確保できなかったからですか?
これは確かに私が少し苦手な領域ですが、アプリケーション層でビューとミラー化された抽象化を使用しても、それほど大きな問題にはならないことがわかりました。私にとっての本当の問題は、データソースを直接読みたいときの「データXの一部はどこにあるのか」ということでした(システムの新しい開発者にとっても常に直感的であるとは限りません)。