更新時にリンクされたデータ エンティティの整合性を維持するためのベスト プラクティスは何ですか?
私のシナリオ
- 「クライアントと請求書」という 2 つのエンティティがあります。[クライアントは定義であり、請求書はトランザクションです]。
- 多くの請求書をクライアントに発行した後、クライアント情報を変更する必要がある場合があります。たとえば、「請求先住所/場所が変更された、または会社名が変更された...など」などです。
- システム内のデータの整合性を保つために、ユーザーがクライアント情報を更新できる必要があるのは普通のことです。
- 請求書の「トランザクション エンティティ」には、クライアント ID だけでなく、「クライアント名、住所、連絡先」などの請求書に関連するすべてのクライアント情報も保存します。これは、トランザクション エンティティにデータを保存するためのよく知られた方法です。
- ユーザーが新しい請求書を作成した場合、新しいクライアント情報は、同じクライアント ID とともに請求書レコードに保存されます (非常に明白です!)。
私の質問
- 挿入と更新のために異なる場所からデータ エンティティ "クライアント" をバインドしても問題ありませんか? [説明: ステップ 1 ~ 4 のアプローチに従った場合、新しい請求書を作成する場合はクライアント テーブルからクライアント エンティティをバインドする必要がありますが、請求書を更新/印刷する場合は、請求書テーブルからクライアント エンティティをバインドする必要があります。そうしないと、データは一貫性がなく、整数にもなりません...では、データ バインディングのこのカスタム要件を処理するために、DAL でスパゲッティ コードを作成せずにデータの整合性を維持するにはどうすればよいでしょうか??]
- 「すべてのバージョンの履歴を保持する」更新前にエンティティ データの以前のバージョンをすべて保存していたシステムを通過しました。カスタムバインディングを回避するために同じ方法を使用したい場合、データベース設計「MySQL の使用」に関してこれを行うにはどうすればよいですか? [説明: 一部の請求書はバージョン 1.0 のクライアントで作成され、その後クライアント情報が更新され、バージョンが 1.1 になり、新しい請求書は最新のバージョンで作成されました...では、この方法に従ってよいのでしょうか? また、エンティティのバージョン管理とバインディングの要件を満たすには、エンティティ/テーブルをどのように設計すればよいですか?
- 私を正しい方向に導くことができる本や参考文献を提供してください。
ありがとう、