169 похожих чатов

Народ, хочу посоветовать по архитектуре таблиц в бд, нужно написать

конфигуратор программ лояльности, гибкий что капец, может быть индивидуальная программа, может быть для определенной группы пользователей (например с общий статусом), может действовать как постоянная программа (применяется на каждый заказ если выполнены необходимые условия лояльности), может быть одноразовая программа (если пользователь получил награду, второй раз получить не может), программа может действовать по времени (с 12 до 17), может в определенные дни (8 марта) или периоды (с понедельника по четверг), может быть как награда за определенное достижение (общая сумма заказов превысила какую-то «цифру»), условия могут по разному суммироваться
например: (А или Б) И (С или Д)
и тд…
и это только часть кейсов, как бы писали подобное ?

16 ответов

17 просмотров

слона нужно есть потихоньку, маленькими кусочками

Михаил-Харченко Автор вопроса
Михаил-Харченко Автор вопроса

@psytrgles @zmurf @oleksandr_moik что думаете ? может кто-то делал что-то подобное ?

Слишком абстрактно, сомневаюсь, что кто-то возьмется советовать что-то, ибо это разрабатывать надо. Вопрос в чем? Хранишь даты... Если периодичность есть, можно у крона синтаксис взять.

Михаил-Харченко Автор вопроса
PSYTRGLES
Слишком абстрактно, сомневаюсь, что кто-то возьмет...

да тут скорее вопрос как это в базу укладывать лучше, видишь ситуация в том, что сами условия разные могут быть, я думаю либо в сторону json-а либо в сторону полиморфных связей, по типу: table loyalti_program_rule: — loyalti_program_id — rule_type — rule_id а дальше уже фигачить истории по типу: date_rules: — start — end time_rules: — start — end status_rules: — status_id и тд и в зависимости от типу правила подкидывать стратегию его проверки

Михаил-Харченко Автор вопроса
PSYTRGLES
Слишком абстрактно, сомневаюсь, что кто-то возьмет...

или вообще скомбинировать эту историю, что-то выносить в типы, и в каких-то типах заводить json-ы

Михаил-Харченко Автор вопроса
PSYTRGLES
Слишком абстрактно, сомневаюсь, что кто-то возьмет...

да, наверное лучше всего комбинацию сделать, для расширения функционала будет сразу два направления, и так и так можно будет сделать.

Михаил Харченко
да тут скорее вопрос как это в базу укладывать луч...

Если в выборке не нужно работать по json, то вполне можно и так хранить. Сложно сказать, от ситуации отталкиваться надо. Обычно, если непонятно как лучше, то выбираю один вариант, потом если надо будет уже переделать. Json выглядит пока что проще

Я бы полиморфно сделал. У меня схожая задача была, только адаптивные поля для нескольких типов моделей(пользователь и ещё несколько). Самое сложное что может быть из этого - писать условия по этим полям, мне пришлось некоторые поля делать системными (запрет на удаление) и подписывать в бд

Михаил Харченко
Что значит адаптивные поля?

Список полей в бд, которые админ может добавлять/изменять/удалять и которые отображаются всем/только избранным типам пользователей в том или ином месте

Михаил-Харченко Автор вопроса
Ратмир Диронин
Список полей в бд, которые админ может добавлять/и...

Хм… звучит как задача с permissions не совсем понимаю зачем вам для этого понадобились полиморфные связи

Михаил-Харченко Автор вопроса
Ратмир Диронин
fields users pages field_entity

приведенная вами схема и есть частный случай задачи с permissions, только названия чуть-чуть поменялись: roles, permissons, model_roles, model_permissions, roles_permissions,

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта