eugene_leshchinskiy
@eugene_leshchinskiy

Лучше 1 int поле status или 2 boolean?

Всем привет. Как более правильно спроектировать таблицу заказа? лучше сделать поле status(INT) с значениями 0 (not submited), 1(submited), 2(canceled) или boolean поля is_sibmited и is_canceled? А что если таких полей будет например 4? Как более правильно? Кажется более удобным завести 1 поле, однако более читабельным для тех, кто будет использовать приложение, представляется вариант 2. Но опять же с 1 полем запросы будут короче и данных будет храниться меньше.
  • Вопрос задан
  • 254 просмотра
Решения вопроса 2
al_gon
@al_gon
одно поле ENUM

При этом историю заказа ни кто не отменял. Но это отдельная таблица.
Ответ написан
Ivanq
@Ivanq
Знаю php, js, html, css
Если есть полностью "отдельные" варианты, как в вашем случае:
1. not submited
2. submited
3. canceled
то лучше использовать enum. Если же состояния могут переключаться отдельно, например:
1. nothing
2. submited
3. checked
4. submited and checked
то нужно 2 boolean, в данном случае is_submited и is_checked.

В Вашем случае enum лучше int, но в крайнем случае int.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Но опять же с 1 полем запросы будут короче и данных будет храниться меньше.
Эти причины по важности стоят сразу за мнением офисного клининг-менеджера.

А ответ прост - может ли заказ быть не is_sibmited, но is_canceled? Если да и это важно, то нужно делать отдельные биты для этих значений. Если бизнес-процесс обработки линейный, то хватит и одного поля.
Ответ написан
Комментировать
@d-stream
Готовые решения - не подаю, но...
Как вариант: int как референс на таблицу статусов с вариантами их названий (полно, кратко) флагами - это позволит в будущем при необходимости менее кроваво расширить эти статусы и т.п. и в определенных случаях "регулировать" доступность промежуточных статусов.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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