Сообщение Схема базы данных для подписок на платные услуги от 23.11.2016 14:21
Изменено 23.11.2016 14:25 sin_cos
запощу-ка здесь, вроде как для .net тоже актуально:
нужно спроэктировать систему тарифных планов, их покупки, продления, отмены и т.д. то есть, схему базы данных. задача в том, чтобы не дублировать данные там, где можно этого избежать. сейчас у меня так, упрощенная схема
в payments в status может быть pending, canceled, paid, refund, что-то еще.
никак не соображу -- этого достаточно? легко ли будет определить какой сейчас текущий plan у пользователя отфильтровав payments, которые paid, его продолжительно -- когда начинается, когда кончается? или нужно еще что-то ввести? а если пользователь купит 2 плана, чтобы когда один закончился, сразу начал действовать второй?
повторюсь, что не хотелось бы денормализовывать схему путем добавления данных, которые итак могут быть расчитаны.
нужно спроэктировать систему тарифных планов, их покупки, продления, отмены и т.д. то есть, схему базы данных. задача в том, чтобы не дублировать данные там, где можно этого избежать. сейчас у меня так, упрощенная схема
plans(name, price, how_many_months)
orders(name, plan_id, user_id)
payments(order_id, status)в payments в status может быть pending, canceled, paid, refund, что-то еще.
никак не соображу -- этого достаточно? легко ли будет определить какой сейчас текущий plan у пользователя отфильтровав payments, которые paid, его продолжительно -- когда начинается, когда кончается? или нужно еще что-то ввести? а если пользователь купит 2 плана, чтобы когда один закончился, сразу начал действовать второй?
повторюсь, что не хотелось бы денормализовывать схему путем добавления данных, которые итак могут быть расчитаны.
запощу-ка здесь, вроде как для .net тоже актуально:
нужно спроэктировать систему тарифных планов, их покупки, продления, отмены и т.д. то есть, схему базы данных. задача в том, чтобы не дублировать данные там, где можно этого избежать. сейчас у меня так, упрощенная схема
в payments в status может быть pending, canceled, paid, refund, что-то еще.
никак не соображу -- этого достаточно? легко ли будет определить какой сейчас текущий plan у пользователя отфильтровав payments, которые paid, и его характеристики: продолжительность, когда начинается, когда кончается и т.п.?
или нужно еще что-то ввести? а если пользователь купит 2 плана, чтобы когда один закончился, сразу начал действовать второй?
повторюсь, что не хотелось бы денормализовывать схему путем добавления данных, которые итак могут быть расчитаны путем join'ов.
нужно спроэктировать систему тарифных планов, их покупки, продления, отмены и т.д. то есть, схему базы данных. задача в том, чтобы не дублировать данные там, где можно этого избежать. сейчас у меня так, упрощенная схема
plans(name, price, how_many_months)
orders(name, plan_id, user_id)
payments(order_id, status)в payments в status может быть pending, canceled, paid, refund, что-то еще.
никак не соображу -- этого достаточно? легко ли будет определить какой сейчас текущий plan у пользователя отфильтровав payments, которые paid, и его характеристики: продолжительность, когда начинается, когда кончается и т.п.?
или нужно еще что-то ввести? а если пользователь купит 2 плана, чтобы когда один закончился, сразу начал действовать второй?
повторюсь, что не хотелось бы денормализовывать схему путем добавления данных, которые итак могут быть расчитаны путем join'ов.