假设我有一个名为Product
的表,并且该表中的行应按逻辑删除。
表示表必须具有IsDeleted
列。
假设我要存储行的删除日期和时间(逻辑上),因此,该表必须具有另一个名为“ DeletedOn
”的(可空)列。
我的问题是:以这种方式,我需要填写“ IsDeleted
”列吗?什么时候有“ DeletedOn
”列? (当'DeletedOn
列为null时,则不删除该行,而当它不为null时,则删除该行。因此,我认为我们不需要'IsDeleted
'列)
答案 0 :(得分:3)
使用DeletedOn IS NULL
或IsDeleted=0
几乎可以提供与您类似的性能,bit
可能有一个很小的优势,如本question (Performance of query on indexed Boolean column vs Datetime column)在stackoverflow上所述。但这不会那么重要。
如果增加了bit
列,则必须考虑通过触发器或计算列来维护完整性,这将导致代码中的更多复杂化。
以这种样式,我是否需要具有“ IsDeleted”列?当我有 “ DeletedOn”列?
根据我的建议,如果要保留已删除的日期,则不需要多余的列。