使用外键 - 只有2条记录?

时间:2011-10-17 04:32:51

标签: sql-server database sql-server-2008 database-design

我是否应该使用外键作为“balanceimpact”,只有两个选项“CREDIT”或“DEBIT”?

它是否有意义,这里只有两个选项?

3 个答案:

答案 0 :(得分:1)

并不是因为有多少选项,而是什么样的rel(1:1; 1:n;等等)。

在这种特殊情况下,我不会使用外键,只需将其保留为列。

另外,正如Marc_S在评论中建议的那样,添加一个CHECK约束以确保只输入其中一个值。

ALTER TABLE your_table
ADD CONSTRAINT chk_balanceimpact CHECK (balanceimpact in ('C','D'))
GO

答案 1 :(得分:1)

名言“只有两种选择”

不要将头发分开20种方式,但是在看到这种方法时,我的方法略有不同。我说创建一个带有fk的查找表。只是因为当他们想要添加第3,第4和......选项时,您将拥有所有结构。很显然,在这种情况下,你可以选择其中任何一种方式并且没问题。我只是不明白为什么在开始时将其标准化并且避免在将来进行任何返工是非常糟糕的,即使它有轻微的可能性。只是我深夜的两头深处。

答案 2 :(得分:0)

如果您只有两个选项,那么似乎更好的解决方案就是拥有一个真/假的列。除非它映射到其他表。