一位同事正在向我们所有的数据库表添加位掩码。理论上,这样我们就可以跟踪整个系统中每一行的某些属性。例如...
- 该行是系统附带的还是客户开始使用系统后添加的
- 该行是否已从表中删除(软删除)
- 该行是一组行中的默认值
这是个好主意吗?这种方法还有其他用途吗?
我的偏好是这些属性显然很重要,并且为每个属性设置一个专门的专栏是合理的,可以让其他开发人员更清楚地了解正在发生的事情。
最佳答案
不完全是,不。
你只能在其中存储位,而且只能存储这么多。因此,在我看来,这会在跟踪每个应用程序级别的含义以及随后潜在的滥用方面带来很多应用程序级别的麻烦,因为“嘿,它们无处不在”。每个表上的每个位掩码是否会对每个位使用相同的定义?每张 table 都会不一样吗?当你用完位时会发生什么?添加另一个?
您可以用它做很多潜在的事情,但它引出了一个问题“为什么要这样做,而不是确定我们现在将使用这些位来做什么” em> 并让它们成为正确的列?”无论如何,您并没有真正以这种方式规避架构更改的可能性,因此它似乎试图解决您无法真正“解决”的问题,尤其是使用位掩码时。
您提到的每一件事都可以(并且应该)通过数据库中的真实列来解决,并且这些比“BitMaskOptions 字段的第 5 位”更具自记录性。
关于sql - 向数据库中的所有表添加位掩码有用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2815987/