У меня есть куча булевых опций для таких вещей, как «приемлемые типы платежей», которые могут включать в себя такие вещи, как наличные, кредитные карты, чеки, PayPal и т. Д. Вместо того, чтобы иметь полдюжины логических значений в моей БД, я могу просто целое число и присваивайте каждому методу оплаты целое число, например
PAYMENT_METHODS = (
(1<<0, 'Cash'),
(1<<1, 'Credit Card'),
(1<<2, 'Cheque'),
(1<<3, 'Other'),
)
и затем запросить определенный бит в python, чтобы получить флаг. Я знаю, что это означает, что база данных не может индексироваться определенными флагами, но есть ли другие недостатки?
Почему я делаю это: у меня уже около 15 логических значений, разделенных на 3 разных логических "набора". Это уже много полей, и использование трех таблиц «многие ко многим» для сохранения группы данных, которые редко изменяются, кажется неэффективным. Использование целых чисел позволяет мне добавлять до 32 флагов в каждое поле без необходимости изменять БД.