一位同事正在为我们所有的数据库表添加一个掩码.从理论上讲,我们可以跟踪整个系统中每行的某些属性.例如...
这是一个好主意吗?这种方法有益于其他用途吗?
我的偏好是这些属性显然很重要,并且为每个属性设置专用列是合理的,以使其他开发人员更清楚地了解其中的内容.
Dan*_*olo 10
不是,不是.
您只能在其中存储位,而且只能存储位数.因此,在我看来,它似乎要求很多应用程序级别的麻烦,以后跟踪每个人的意思和后来的潜在滥用,因为"嘿,他们无处不在".每个表上的每个位掩码是否会对每个位使用相同的定义?每张桌子都不一样吗?当你用完比特时会发生什么?加上另一个?
有很多你潜在的东西可以用它做,但它引出了一个问题:"为什么这样做的,而不是确定什么,我们将使用这些位为现在,也将让他们适当的列?" 无论如何,你并没有真正规避架构更改的可能性,因此它似乎正试图解决一个你无法真正"解决"的问题,特别是没有使用位掩码.
你提到的每一件事都可以(并且应该)用数据库中的真实列来解决,而且这些事情比"第5 BitMaskOptions场" 更加自我记录.
专用柱是更好,因为它无疑更加明显,不易出错.SQL Server 已经BIT有效地存储了列,因此性能不是问题.
我可以看到的唯一一个用于位掩码的参数不是每次添加新标志时都必须更改数据库模式,但实际上,如果要添加新标记,那么通常会出现问题.