使用整数作为位域的缺点?

mpe*_*pen 1 django database-design bit-manipulation

我有一堆布尔选项,比如"可接受的支付类型",可以包括现金,信用卡,支票,贝宝等等,而不是在我的数据库中有半打布尔,我只能使用整数并分配每个付款方式都是一个整数,就像这样

PAYMENT_METHODS = (
    (1<<0, 'Cash'),
    (1<<1, 'Credit Card'),
    (1<<2, 'Cheque'),
    (1<<3, 'Other'),
)
Run Code Online (Sandbox Code Playgroud)

然后查询python中的特定位以检索标志.我知道这意味着数据库无法通过特定标志进行索引,但是还有其他缺点吗?

为什么我这样做:我已经有大约15个布尔值,分成3个不同的逻辑"集合".这已经是很多领域,并且使用3个多对多表来保存很少变化的数据似乎效率低下.使用整数允许我为每个字段添加多达32个标志,而不必修改DB.

btr*_*eat 6

我能想到的主要缺点是可维护性.对数据库编写查询的人必须理解位约定,而不是能够追求更易读的一组列.此外,如果删除了"已接受的付款类型"之一,则必须迁移数据本身而不是仅删除表中的列.