当前位置: 首页 > 面试题库 >

向数据库中的所有表添加位掩码是否有用?

莘光华
2023-03-14
问题内容

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

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

这是一个好主意吗?还有其他用途可以使这种方法受益吗?

我的喜好是这些属性显然很重要,并且为每个属性设置一个专用列对于使开发人员更清楚地了解正在发生的事情是有道理的。


问题答案:

不是,不是

您只能在其中存储位,并且只能存储很多位。因此,在我看来,以后要跟踪每个应用程序的含义和潜在的滥用情况会引起很多应用程序级的麻烦,因为“嘿,它们无处不在”。每个表上的每个位掩码都将对每个位使用相同的定义吗?每张桌子会有所不同吗?当您用完所有位时会发生什么?加上另一个?

有很多你潜在的东西 可以 用它做,但它引出了一个问题:“为什么这样做的,而不是确定什么,我们将使用这些位为 现在 ,也将让他们适当的列?”
无论如何,您实际上并没有规避模式更改的可能性,因此似乎正在尝试解决您无法真正“解决”的问题,尤其是没有位掩码的问题。

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



 类似资料:
  • 问题内容: 如何将所有从mysql_query的行添加到mysql_fetch_array()?我希望能够尽可能有效地执行此操作,因为它可以处理很多行。 问题答案: 最常见的方式: 如文档中的示例所示。

  • 问题内容: 如何使用查询获取SQL Server数据库中所有表的列表。我的意图是将其动态显示在网页上。 问题答案: 尝试: 这应该给您您想要的。然后,您需要从网页中调用它,以所需格式显示。 您可能要看: 如何使用C#在组合框中从数据库获取所有表的名称 可能会帮助您完成您想做的事情。 另外-您可能想看一下SQL Server:我应该在sys表上使用information_schema表吗? 用于sy

  • 问题内容: 我正在显示此示例产品表。我需要在不使用结果集的情况下将所有表日期合并到一个jsp中。我尝试完成这一部分: 我需要将所有表数据添加到列表或?? 并使用方法将其退回我该怎么办? 问题答案: 使您的方法返回a 而不是单个。 然后,在您的JSP文件中,迭代返回的列表:

  • 这似乎不起作用。 我还尝试在代码生成器使用的xml中添加架构名称,如 http://www.jooq.org/doc/3.5/manual/code-generation/codegen-advanced/

  • 问题内容: 是否有一条SQL命令将列出数据库中的所有表,并且该命令与提供程序无关(可在MSSQLServer,Oracle,MySQL上运行)? 问题答案: 最接近的选项是查询表。 它是标准SQL的一部分,但并非所有供应商都支持它。据我所知,唯一支持它的RDBMS供应商是: 的MySQL PostgreSQL的 微软SQL服务器2000年/ 2005年/ 2008年 一些品牌的数据库,例如Orac

  • 问题内容: 我需要将删除标志列添加到数据库中的所有40个用户表。我可以编写一个脚本来遍历sys.tables,但是我想我会检查是否有人有更好的解决方案,或者针对这种情况预先创建了sql。 问题答案: 有一个未记录但众所周知的存储过程sp_msforeachtable: