Задать вопрос
@darksladen

Как правильно сделать статусы для заказа в бд?

Подскажите, как лучше будет сделать разные статусы в бд (оплачен, доставка, не оплачен)? Есть много вариантов, но не знаю все же как будет лучше..

1) Присвоить каждому статусу свой код (1, 2, 3) и записывать его в одно поле
2) Сделать для каждого статуса свое булеан поле и когда статус меняется, обнулять другие поля
3) Как в 1 варианте, но только идентификатор не числовой сделать, а строковый (delivery, paid и т.д..)

Склоняюсь к 1 варианту, но так можно и запутаться потом какой статус что значит.. Как вы бы сделали?
  • Вопрос задан
  • 1343 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
tsklab
@tsklab
Здесь отвечаю на вопросы.
сделать разные статусы в бд (оплачен, доставка, не оплачен)
По связи таблицы заказ с документами в указанных выше таблица оплаты, доставки. Статус указывать в представлении (если есть оплата — оплачен и так далее).
Ответ написан
Комментировать
@d-stream
Готовые решения - не подаю, но...
Вариант 2 ближе к реальности.
Только по факту некоторые статусы могут быть не совсем чтобы bool
Например та же доставка может оказаться как "комплектация", "сборка", "упаковка", "передача курьеру/тк", "доставка"
Да и оплаченность по большому счету может быть разной "предоплачен", "есть копия пп","деньги поступили"
Ответ написан
Комментировать
@aynur_safin
(оплачен, доставка, не оплачен)

2) Сделать для каждого статуса свое булеан поле и когда статус меняется, обнулять другие поля


Зачем обнулять другие поля, разве они противоречат друг другу?
(ну кроме "не_оплачен/оплачен", но это должно быть одно поле).
Итого два булевых поля: оплачен и доставка.
Если нужен один статус для интерфейса из этих (не оплачен -> оплачен -> доставка),
то можно сделать дополнительное динамическое поле (без записи в БД):

статус = !оплачен_ст ? "Не оплачен" :  !доставка_ст ? "Оплачен" : "Доставка";


Ну или сложнее, если возможны статусы типа "Не оплачен / Доставка", например при постоплате.
Т.е. при этом, Вы сможете гибко менять логику программы впоследствии, комбинируя условия статусов, сколько бы их не было.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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