Предполагая, что система похожа на Netflix, где участники создают список желаний фильмов и, в зависимости от их типа плана, одно, два или более из этих фильмов в их списке превращаются в заказы, которые одна из следующих схем делает больше смысл?
Таблица элементов управления, в которой хранятся следующие столбцы:
элементы управления (memberid, currentMoviesAtHome, moviesAtHomeLimit, currentMonthlyMovies, ежемесячноMoviesLimit)
Пользователь фактически не определяет, когда создается заказ, поскольку это зависит от их элементов управления учетной записью. Ежедневная функция будет проходить через клиентов и их элементы управления и выбирать те, где currentMoviesAtHome < moviesAtHomeLimit AND currentMonthlyMovies < monthlyMoviesLimit
...
Отдельная таблица accounts
, связанная с таблицей планов plans
:
учетные записи (memberid, planid, currentMoviesAtHome, currentMonthlyMovies)
планы (planid, moviesAtHomeLimit, ежемесячноMoviesLimit)
Второй вариант, имеющий таблицы ACCOUNTS
и PLANS
, нормализуется, поэтому это будет моя рекомендация.
Кроме того, эти таблицы:
MOVIES
WISHLIST
MOVIES.movie_id
)ACCOUNTS.account_id
)is_onsite будет логическим, чтобы определить, был ли фильм отправлен клиенту. Если это так, значение должно быть установлено в 1. Используйте это, чтобы узнать, находится ли учетная запись на пределе плана или ниже. Когда видео возвращаются, удалите только строки, для которых is_onsite установлен в 1.
Ежедневная функция будет проходить через клиентов и их элементы управления и выберите
Это не отвечает на ваш вопрос, но я подумал, что я бы сказал, что ваш дизайн субоптимален. Вместо опроса, как вы описали выше, вам гораздо лучше решать, что делать по требованию; то есть, очевидно, будет время в вашем приложении, где будут обновляться предельные значения. То, что вам нужно сделать, это запустить какое-то событие в это время и использовать событие, которое решит, отправлять или нет другой фильм.
Опрос на ежедневной основе не будет масштабироваться.
Увольнение и обработка события будут не только быстрее, но и в будущем будет легче поддерживать. Удачи.
SELECT COUNT(*) WHERE ...
в этой таблице, чтобы определитьcurrentMoviesAtHome
иcurrentMonthlyMovies
а не хранить отдельные значения, которые могут быть не синхронизированы?