我需要数据库中的以下bit
字段/列:
IsInbound
IsOutbound
现在,如果IsInbound
为false (0)
,则反之则完全正确,这意味着IsOutbound
为true (1)
。
显然,我可以在数据库中的表格中只使用任一标题创建一个列,并且能够根据true/false
条件提取所需的信息。
然而,正确的设计方法是什么?我是否只是随意选择其中一个字段并知道相反的值表示true/false
或者我是否应该明确并且在表上定义两个字段?多年来我一直都这样做,很好奇创建这些领域的正确设计模式是什么?
答案 0 :(得分:2)
为此设计的正确方法是不要先考虑空间。
相反,请考虑价值观。您描述值的方式只有两种组合:
IsInbound IsOutbound
1 0
0 1
两者都不能是0
。两者都不能是1
。换句话说,您不应该将它们存储在两个不同的列中。如果这样做,则需要向表中添加约束以确保值不同。呸!
如果你想要两个变量,那么存储IsInbound
并添加一个计算列:
alter table t
add IsOutbound as (IsInbound = 0);
答案 1 :(得分:1)
即使只是一个简单的位字段,只需一列就需要更少的空间。查询也会更简单,因为您只需要检查一个字段而不是两个字段。