我在 SQL Server 2008 数据库中有以下表:
tblItem,它有一个ItemID字段;
tblGoodItem,它也有一个 ItemID 字段,并且有一个指向 tblItem 的外键;
tblBadItem,它也有一个 ItemID 字段,还有一个指向 tblItem 的外键。
一个项目不能既是好项目又是坏项目;它必须是一个或另一个。但是,无论物品是好是坏,它都必须是一个物品。
我的问题是:如何在 tblGoodItem 和 tblBadItem 的 ItemID 字段中添加约束,以便两个表中都不能存在 ItemID 值?
我已经阅读了 Stack Overflow 中关于类似问题的一些回复,我正在考虑这个解决方案:
创建一个视图vwItem,它在 ItemID 上连接 tblGoodItem 上的 tblBadItem。
编写一个 UDF fnItem,它对 vwItem 进行查询以查看视图中存在多少条记录。
有一个调用 fnItem 并验证返回值是否为 0 的约束。
这是最好的主意吗?有没有人有更好的主意?