状态列的所有表上的FK

时间:2011-01-02 05:12:35

标签: database schema

我的数据库中的每个表都有一列:“状态”。它的目的是显示给定行是否正在使用或是否已被停用。因此值可以是(0 =无效且1 =有效)。我看到这两种方式:我可以有枚举或者我在想是否最好将此列保留为FK,它引用主系统数据字典表,其中包含系统上使用的所有代码。 (网站)

每个表的好处是,每一行都可以通过这个FK集中。因此,如果我想检查所有在我的系统上处于非活动状态的行,我可以从此表中查看,因为所有子表都具有status = ID 233,其中233 =在数据字典表中是deactive。

任何好处还是我应该坚持旧的枚举方式?此外,我在想是否需要再删除一个状态或与停用状态相同?

1 个答案:

答案 0 :(得分:0)

如果您只有两种状态(活动/非活动),则不需要对单独的状态表使用foriegn密钥。如果您的数据库支持,您可以使用位列。

如果您要获得更多状态,那么是可能最好有一个单独的状态表,但它不是真正的必要除非你想要编写友好且易于阅读的查询(where status = 'inactive'where status = 0更容易理解,或者您打算更改值的含义(在这种情况下,您只需更改描述) status表格。

至于引入deleted的新值 - 我本人会考虑将其作为一个单独的列,因为它具有不同的含义或无效,您可能不想覆盖行的状态当它被删除时(例如,您保留列被激活或删除时非活动的信息)。