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