我的数据库中的每个表都有一列:“状态”。它的目的是显示给定行是否正在使用或是否已被停用。因此值可以是(0 =无效且1 =有效)。我看到这两种方式:我可以有枚举或者我在想是否最好将此列保留为FK,它引用主系统数据字典表,其中包含系统上使用的所有代码。 (网站)
每个表的好处是,每一行都可以通过这个FK集中。因此,如果我想检查所有在我的系统上处于非活动状态的行,我可以从此表中查看,因为所有子表都具有status = ID 233,其中233 =在数据字典表中是deactive。
任何好处还是我应该坚持旧的枚举方式?此外,我在想是否需要再删除一个状态或与停用状态相同?
答案 0 :(得分:0)
如果您只有两种状态(活动/非活动),则不需要对单独的状态表使用foriegn密钥。如果您的数据库支持,您可以使用位列。
如果您要获得更多状态,那么是可能最好有一个单独的状态表,但它不是真正的必要除非你想要编写友好且易于阅读的查询(where status = 'inactive'
比where status = 0
更容易理解,或者您打算更改值的含义(在这种情况下,您只需更改描述) status
表格。
至于引入deleted
的新值 - 我本人会考虑将其作为一个单独的列,因为它具有不同的含义或无效,您可能不想覆盖行的状态当它被删除时(例如,您保留列被激活或删除时非活动的信息)。