0

I am having difficulty designing the database for the following requirement, your suggestions / advice is highly appreciated

There is a Collector Table which illustrates the People who collect the payments for the respective invoices from the Customers.

Problem: There are three ways a debtor invoice is cleared / collected.

  1. Cash Payments
  2. Check Payments
  3. Credit Notes

  4. Cash Payments: are pretty straight forward, its a matter of settling an invoice with the cash received

  5. Check payments: if made then the following details of the checks should be recorded.

    a) Check 'Post Date'

    b) Check Number

    c) Check Value

  6. Credit Notes: will be raised against an invoice if they return some item against a specific invoice or if they overpaid a sum beyond an invoice value (trust me people do this)

What i cannot get my head around is how do i normalize a table which can store all three:

should i have one table for all the three types of transactions?

when the customer pays by check how do i go about recording the check attributes (ex: post date, check number, value etc)

Please advice

philipxy
  • 14,867
  • 6
  • 39
  • 83
  • 1
    Welcome to StackOverflow. Please visit the [help center](https://stackoverflow.com/help), take the [tour](https://stackoverflow.com/tour) to see what and [How to Ask](https://stackoverflow.com/help/how-to-ask). Do some research, search for related topics on SO; if you get stuck, post a [Minimal, Complete, and Verifiable example](https://stackoverflow.com/help/mcve) of your attempt, noting input and expected output. – Alexandre Elshobokshy Oct 08 '18 at 09:27
  • Possible duplicate of [How can you represent inheritance in a database?](https://stackoverflow.com/questions/3579079/how-can-you-represent-inheritance-in-a-database) – philipxy Oct 08 '18 at 09:48
  • Hi. This is a faq. Please always google many clear, concise & specific versions/phrasings of your question/problem/goal with & without your particular strings/names & read many answers. Add relevant keywords you discover to your searches. If you don't find an answer then post, using 1 variant search as title & keywords for tags. See the downvote arrow mouseover text. When you do have a non-duplicate code question to post please read & act on [mcve]. PS Why do you say "normalize"? We normalize by normalizing. It doesn't mean "make a good design". – philipxy Oct 08 '18 at 09:48
  • oh.. Thank you.. and am sorry if i have not followed protocol.. – Prem Mohandas Oct 08 '18 at 10:25

0 Answers0