Разработка базы данных для повторяющихся штрафов - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть таблица Fine

fine_id  amount  date           fine_type  is_rec  rec_status 
F001     100     2018-12-01     1          TRUE    INCOMPLETE
F002     10000   2018-12-02     4          FALSE   NULL

и таблица платежей

id   fine_id    amount   paymode   txn_id   txn_status
1    F002       10000    ONLINE    TXN001   1

Штраф может повторяться, т.е. пользователь должен платить сумму штрафа каждый месяц, пока его rec_status не будет обновленкак "выполнено" администратором.

  1. В таблице платежей хранятся только успешные платежи, для неудачных платежей я создал отдельную таблицу (все нормально)?
  2. Как я могу справиться с повторяющимисяштрафы в этом сценарии?
  3. Чтобы проверить, был ли уплачен штраф, я проверяю таблицу платежей, существует ли запись там или нет.Это нормально?

РЕДАКТИРОВАТЬ-1

Fine Master

fine_id  amount  entry_date     fine_type  is_rec  rec_status    rec_type
F001     100     2018-12-01     1          TRUE    INCOMPLETE    Monthly
F002     10000   2018-12-02     4          FALSE   NULL
F003     10000   2018-12-02     4          TRUE    INCOMPLETE    Yearly

Fine

rec_fine_id    fine_id  amount  for_month  for_year  is_paid
RF001          F001     100     022018     NULL      TRUE
RF002          F003     10000   NULL       2018      TRUE
RF003          F002     10000   NULL       NULL      TRUE
RF004          F001     100     032018     NULL      FALSE

Платежи

id   rec_fine_id  amount paymode  txn_id   txn_status  is_successful pay_date
 1   RF001        100    ONLINE   TXN001   1           true         2018-02-10
 2   RF003        10000  ONLINE   TXN010   1           true         2018-10-10
 3   RF002        10000  ONLINE   TXN011   1           true         2018-07-11

1 Ответ

0 голосов
/ 04 декабря 2018

Я бы предложил вам иметь три таблицы: FineMaster (содержит основную информацию о штрафе, независимо от того, завершено ли rec_status или нет. Будет только одна запись для штрафа), Fine (содержит повторяющиеся детали штрафа иродительская ссылка на FineMaster), Payment (содержит информацию о платеже за каждое повторение штрафа).

  1. Нет необходимости в отдельных таблицах.Просто есть одна таблица для оплаты.Есть флаг, IssuccessfulPayment.Этот флаг сообщит, был ли платеж успешным или нет.

  2. Повторяющиеся штрафы могут быть обработаны с помощью FineMaster.Обратитесь к первому абзацу в ответе.

  3. Я бы посоветовал вам сохранить информацию о повторяющихся штрафах в таблице штрафов.Иметь флаг IsPaymentCompleted в таблице Fine.Если для повторяющегося штрафа платеж выполнен успешно, обновите таблицу штрафов, если платеж выполнен успешно.Для одного штрафа также может быть несколько платежей.Я бы посоветовал вам сохранить информацию о регулярных платежах в таблице штрафов.

...