私はデータベースに精通していませんが、この設定がある場合:
Payment -> Advances -> Advance Payments
そのため、未払いの合計金額が不足しているpayment可能性があります。advance顧客ごとに、あなたがしたいときは、自分の会計目的のために、advance paymentを「偽装」する必要があります. どうすればそれについて行くでしょうか。advance paymentpayment
今、advancesへの外部キーを持ち、 への外部キーをpayments持っadvance paymentsていますadvances。
簡単なシナリオ:
合計100ドルの注文があります。顧客は 80 ドルを支払い、20 ドルが前払いされます。advanceそのため、これ (支払い 1) に添付 (fk'd)される (前払い 1) を作成しましたpayment。顧客は再び注文し、今回は合計が $50 で、$40 しか支払わないため、別のadvance(前払い 2) がその新しいpayment(支払い 2) に関連付けられて作成されます。
顧客が支払いを決定すると、advancesapaymentが作成され (支払い 3)、(前払いadvances1 と前払い 2) がそれに追加されpaymentます (支払い 3)。advanceこれは、システムに表示されたときに、従業員が支払い先を選択できるようにするためです。合計を取得してから金額を差し引くほど単純ではありませんpayment。
したがって、彼らが金額を入力すると、advance paymentが作成され、それに接続さadvanceれadvance paymentsますadvances。
ここで質問ですが、支払いによって作成された前払いを確認したい場合、どうすればよいですか?
私は自分の構造を壊したくありませんpayment - advance - advance payment-それともそうですか? 私はちょうどテーブルにいることを考えpaymentidsましたが、それは中間者であるとを無視advance paymentする関係を生み出します. 私はこれについて間違って考えているかもしれませんが、よくわかりません。paymentsadvance paymentsadvance
いくつかの詳細情報:
Payment Table
-------------
id : pk
amount
Advance Table
-------------
id
amount
paymentId // payment that created the advance
Advance Payment Table
---------------------
id
amount
advanceId
私が間違っていると思う提案は次のとおりです。
Payment Table
-------------
id : pk
amount
Advance Table
-------------
id
amount
paymentId // payment that created the advance
Advance Payment Table
---------------------
id
amount
advanceId
paymentId <---- add paymentid
これは構造/フローを壊し、支払いには前払いのある前払いがなくなります。
もう少し情報 - 私たちは linq と SQL Server 2008 を使用しています。それが違いを生むかどうかはわかりません。
これは非常に紛らわしいかもしれませんが、可能な限り最善の方法で説明しようとしました。