Разработка базы данных для повторяющихся штрафов

У меня есть стол отлично

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. Чтобы проверить, был ли уплачен штраф, я проверяю таблицу платежей, существует ли запись там или нет. Это нормально?

EDIT-1

Прекрасный Мастер

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

хорошо

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 ответ

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

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

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

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

Другие вопросы по тегам