sql - 向数据库中的所有表添加位掩码有用吗?

标签 sql sql-server

一位同事正在向我们所有的数据库表添加位掩码。理论上,这样我们就可以跟踪整个系统中每一行的某些属性。例如...

  • 该行是系统附带的还是客户开始使用系统后添加的
  • 该行是否已从表中删除(软删除)
  • 该行是一组行中的默认值

这是个好主意吗?这种方法还有其他用途吗?

我的偏好是这些属性显然很重要,并且为每个属性设置一个专门的专栏是合理的,可以让其他开发人员更清楚地了解正在发生的事情。

最佳答案

不完全是,不。

你只能在其中存储位,而且只能存储这么多。因此,在我看来,这会在跟踪每个应用程序级别的含义以及随后潜在的滥用方面带来很多应用程序级别的麻烦,因为“嘿,它们无处不在”。每个表上的每个位掩码是否会对每个位使用相同的定义?每张 table 都会不一样吗?当你用完位时会发生什么?添加另一个?

您可以用它做很多潜在的事情,但它引出了一个问题“为什么要这样做,而不是确定我们现在将使用这些位来做什么” em> 并让它们成为正确的列?”无论如何,您并没有真正以这种方式规避架构更改的可能性,因此它似乎试图解决您无法真正“解决”的问题,尤其是使用位掩码时。

您提到的每一件事都可以(并且应该)通过数据库中的真实列来解决,并且这些比“BitMaskOptions 字段的第 5 位”更具自记录性。

关于sql - 向数据库中的所有表添加位掩码有用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2815987/

相关文章:

c# - 如何通过代码将表值加载到 datagridview 中,并使用 rowheader click 事件对其进行编辑?

sql - 在全局表中存储 WHERE 子句

mysql - 将 SQL Server 2005 与 MySQL 同步

sql - 除以零 - 不明白为什么会失败

SQL INSERT 但避免重复

sql - 将database.bak从本地机器恢复到服务器

mysql - 查询MySQL数据库

mysql - #1292 - 日期值不正确 : '0000-00-00'

c# - 如何使用 dateTimePicker 将日期插入 SQL 数据库日期列?

sql-server - SSMS 错误 - “Attempted to read or write protected memory” - 访问本地主机 - 编辑 200 行