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

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

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

16 ответов

4 просмотра

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

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

@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,

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

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

А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Где в Астане можно купить мясо для шашлыков?
Dancing Іңұқәһүғө
21
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Добрый день подскажите пожалуйста может кто то сталкивался с ошибками Sentry 22.10.0 развернутым из helm чарт в Kubernetes? Изначально 3 дня назад очень стало много событий ух...
Tire4 Finist Devops
1
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
почому оно не работает?
Vi Chapmann Chapmann
19
всем привет почти закончил курс После него можно писать свою операционку? Какие библиотеки надо использовать и куда дальше копать для изучения
Linus
19
Так а кто может спарсить всех участников чата? Идишники
Magic
18
Карта сайта