一位同事正在为我们所有的数据库表添加一个掩码.从理论上讲,我们可以跟踪整个系统中每行的某些属性.例如…
>该行是随系统一起提供的,还是客户在开始使用系统后添加的
>是否已从表中删除该行(软删除)
>该行是一组行中的默认值
这是一个好主意吗?这种方法有益于其他用途吗?
解决方法
不是,不是.
您只能在其中存储位,而且只能存储很多位.因此,在我看来,它似乎要求在以后跟踪每个人的意思和潜在的滥用之后会有很多应用程序级别的麻烦,因为“嘿,他们无处不在”.每个表上的每个位掩码是否会对每个位使用相同的定义?每张桌子都不一样吗?当你用完比特时会发生什么?加上另一个?
你可以用它做很多潜在的事情,但它引出了一个问题:“为什么这样做而不是确定我们现在将使用这些比特,只是让它们成为合适的列?”无论如何,你并没有真正规避架构更改的可能性,因此它似乎正在尝试解决一个你无法真正“解决”的问题,特别是不能使用位掩码.
你提到的每一件事都可以(并且应该)用数据库上的真实列来解决,而且这些事物比“BitMaskOptions字段的第5位”更加自我记录.