【发布时间】:2009-09-11 01:20:16
【问题描述】:
我有一个表需要链接三个单独的表之一,但它应该只链接到其中一个,例如
Main_Table
id UNIQUEIDENTIFIER
t1_id UNIQUEIDENTIFIER
t2_id INT
t3_id INT
T1
id UNIQUEIDENTIFIER
name VARCHAR(255)
T2
id INT
name VARCHAR(255)
T3
id INT
name VARCHAR(255)
是否有可能有一个约束条件,即任何时候 t1、t2 或 t3 中的一个都不为空?
这只是糟糕的设计吗?如果是,您对设计有何建议?
编辑:
有人要求我详细说明这种特殊设计背后的原因。
Main_Table 试图成为付款人表,它可以引用单个用户 (T1)、一组个人用户 (T2) 或一组组 (T3)。
这是我继承的数据库设计,很遗憾,它不会真正改变。
我最大的问题是我需要在不同类型之间进行关联,所以类型字段在这里不起作用,因为索引不同。
【问题讨论】:
-
它闻起来很糟糕。您能否更坦率地了解数据是什么以及为什么要以这种方式关联数据?
-
看起来您正在尝试创建某种条件外键。正如 spender 所说,了解您想要完成的工作将有助于我们确定最佳方法。
标签: tsql database-design constraints