СУБД не указали.
В общем случае, по-моему, будет примерно так:
Таблица пользователей (с id активного сейчас тарифа). По умолчанию все пользователи бесплатные.
Таблица тарифов.
Поскольку у одного юзера может быть много тарифов, связь N-M, нужна таблица связи:
юзер_тариф (id юзера, id тарифа, датавремя начала действия, датавремя окончания действия, признак is_active)
Джобами проверяем пользователей на активные тарифы, если время вышло - меняем тариф на тот, у которого осталось время, ставим признак is_active в 0, меняем активный тариф в таблице пользователей. Тут же можно вести лог, какого пользователя, когда, с какого на какой тариф перевели.