У меня есть модель подписки в моей базе данных, которая подписывает пользователей на курсы в течение определенных месяцев. Существует несколько типов присвоений. Пользователь может:Схема базы данных - Подписки пользователей
- Покупка курс х месяцев подписки с кредитной картой
- Покупка курса х месяцев подписки путем ввода ключа активации некоторых
- Системный администратор назначить пользователю месяц подписки х.
Если пользователь обновляет свою подписку, я не удаляю старую, я создаю новую запись в таблице подписки и сохраняю старую как историю, также если одна и та же подписка обновляется администратором Я снова создаю новую запись. Текущая подписка пользователя идентифицируется последней записью. Конечная дата для курса пользователя - это дата, которая отображается в последней записи. Например, если вы отметите прикрепленный снимок экрана.
Пользователь 1 имеет три подписки и один из них говорит, что курс должен быть истек 15 июня, однако реальная дата истечения срока действия 14 июня, потому что это последняя запись для этого пользователя - сочетания курса.
Причина, по которой я сохраняю все эти записи (а не только обновление существующей даты истечения срока действия пользователя), заключается в том, что мне нужна эта история. Если что-то пойдет не так, я всегда смогу восстановить место, где была ошибка.
Я думаю, у вас есть моя идея, мой вопрос, если это хорошее решение и как может выглядеть идея реализации.
Спасибо за ваше время.
* «однако реальная дата истечения срока действия - 16 июня, потому что это последняя запись для этой комбинации пользовательского курса». * Нет, последняя отметка времени для пользователя 1 - 15 июня. Храните реальные данные. Если у вас есть столбец для дат истечения срока действия, сохраните даты истечения срока действия в этом столбце. Не храните «день до истечения срока действия» в этой колонке. –
Мне очень жаль, что моя ошибка в типографии, она должна сказать, 14 июня, а не 16. Отредактировано в сообщении –