Sql 向数据库中的所有表添加位掩码有用吗?
一位同事正在为我们所有的数据库表添加位掩码。理论上,我们可以跟踪整个系统中每一行的某些属性。例如Sql 向数据库中的所有表添加位掩码有用吗?,sql,sql-server,Sql,Sql Server,一位同事正在为我们所有的数据库表添加位掩码。理论上,我们可以跟踪整个系统中每一行的某些属性。例如 行是随系统附带的还是在客户机开始使用系统后由客户机添加的 行是否已从表中删除(软删除) 行是一组行中的默认值吗 这是个好主意吗?这种方法是否还有其他有益的用途 我的偏好是,这些属性显然很重要,为每个属性设置一个专用列是合理的,这样可以让其他开发人员更清楚地了解正在发生的事情。不是真的,不是 你只能在里面储存一些,而且只能储存这么多。因此,在我看来,它要求在以后跟踪每一个应用程序的含义和潜在的滥用
- 行是随系统附带的还是在客户机开始使用系统后由客户机添加的
- 行是否已从表中删除(软删除)
- 行是一组行中的默认值吗
我能看到的关于位掩码的唯一理由是,不必在每次添加新标志时都更改DB模式,但实际上,如果您添加新标志,那么通常会出现一些错误。不,在我看来,这根本不是一个好主意。每一列都应该表示一个概念和值。位掩码有各种各样的性能和维护问题。新开发人员如何理解每个位的含义?如何防止有人意外地混淆了位的顺序的含义
最好使用多对多关系或单独的列,而不是位掩码。您将能够在其上建立索引、启用引用完整性(取决于方法)、轻松添加新项以及更改结果顺序以适应不同的报告等等 为了进一步说明这一点:位字段正在改变模式,只是在某种程度上DBM完全看不见,用户也几乎看不见。在这里添加回复没有意义,因为Evgeny已经很好地总结了它。对于位掩码,我能想到的唯一原因是,与单独的标志相比,可以节省存储空间,但在SQL Server中,8位列被压缩到一个字节中。你只是为了虚幻的利益而对这些字段的每一个查询都变得复杂。因此,向埃夫根尼强调+1。