2016-05-31 6 views
0

私は、顧客が各納品の完了時に支払うことができる請求ポリシーのテーブルを設計するために、また、残高全額の月額請求書を受け取ることができます。これは...私はどこへ行くかわからない...残高が全額で1つの月額請求書の支払い時に支払うためのテーブルの正規化

Delivery Request Tables

私はすでに持っているものの小さなビットである私は完全かつ毎月の請求書で支払わ用のテーブルを作成し、それらを関連付ける必要があります請求書の表...または私はそれらを支払テーブルに関連付ける必要がありますか...または私は全部の場所に....

答えて

0

それはあなたが考えるよりもはるかに複雑です。あなたはまた、部分的な支払い、過払い、口座への支払い、払い戻し、およびその他の現実世界の合併症を考慮する必要があります。

現実世界の醜さを反映する唯一の方法は、個々の料金を1つのもの(配達)、要約文書(毎月の請求書/明細書)を別のものとして扱い、支払い/返金を別物。

そこから、これら3つの別々のものを関係と一緒に参加させる必要があります。誘惑は毎月の請求書を直接支払に結びつけることですが、それは間違いでしょう。少なくとも、あなたの人生は必要以上に複雑になります。

料金と請求書との関係は比較的簡単です。お客様が毎月の請求書を受け取った場合、その月のすべてのパッケージはその請求書を指しています。これにより、パッケージから請求書への多対1の関係が形成されます。

より複雑な部分は、支払いと料金の関係です。このためには、新しいテーブルPayment_Applicationが必要です。これは料金(Packages)とPaymentsの多対多の交差です。この交差するエンティティには、各パッケージに対して支払った金額もあります。これは、支払った金額があまりにも多かったのか、少なかったのか、正しい金額であったのかをここに記録できるので、重要です。

さらに洗練されたものにしたい場合は、お支払い情報を正規化して、お支払いヘッダーと詳細を作成することができます。これにより、受け取った支払いに関する情報を、その支払いの適用方法に関する情報とは別に保持することができます。

は、次の点を考慮

ここ

ERD

あなたは、(オプション)請求書のヘッダや請求書の詳細(パッケージ)と同様に支払いヘッダ(オプション)支払いの詳細を持っているかもしれませんか請求書の詳細に関連していない可能性があります。このような構成は、お金のために交換用のものを追跡する必要があるときに発生する様々な醜い事をカバーします。

+0

私はそれが私が思っていたより深いと感じました。説明のために1トンありがとう...非常に感謝します。 – Dunnage

関連する問題