Я занимаюсь разработкой приложения SaaS, где пользователям требуется лицензия и ежемесячные ограничения основаны на лицензировании. Мой вопрос: какова будет лучшая структура базы данных MySQL для определения того, сколько ресурсов они могут использовать за текущий период?
Например, лицензия 1 имеет ограничение на возможность совершать 10 вызовов в месяц. Допустим, пользователь А покупает лицензию сегодня (10 октября). Это означает, что лицензия действительна с 10 октября по 10 ноября.
Как я сейчас об этом подумал, это приложить лицензию к столу арендатора. В таблице есть 3 столбца: license_term INT, current_license_start DATE, current_license_end DATE. Если они впервые покупают лицензию, то license_term будет равен 1 (первый термин), который начинается с current_license_start и заканчивается на current_license_end.
Как только вызов сделан, он проверит, находится ли он между этими двумя датами, если это так, ваша лицензия действительна, и вызов сделан (если также, в таблице tenant_usage значение call_made нижеограниченное значение для этой лицензии). Как только вызов завершен, он проверит license_term, затем проверит таблицу tenant_usage и добавит +1 к значению call_made, где термин совпадает с текущим термином в БД арендатора.
Когда current_license_endданные передаются, и пользователь покупает новую лицензию, license_term в базе данных арендатора изменится на 2 и автоматически создаст новую строку в базе данных tenant_usage со всеми текущими значениями использования в 0.
Этолучший способ приблизиться к такой функциональности или есть более эффективный способ сделать это?