说我有这样的结构:外键引用许多表的一个
体育:
reference int identity not null, primary key (ID),
Duration int, --e.g. football is 90 minutes
Players int,
SportID int,
SportType int --0 for football and 1 for tennis
网球
Reference int IDENTITY NOT NULL,
TurfType int,
-- + more fields related to Tennis
足球:
等我能想到这样做的唯一的办法就是在Sport
表有个
Reference int IDENTITY NOT NULL,
-- + more fields related to Football
Sport.SportID
引用无论是网球或足球或体操说什么表Sport.SportID
引用。
虽然这看起来不正确。这是最好的方法吗?
这是一个可怕的方法。由于你“引用”了几个表中的一个,你基本上**不能**引用任何东西。你应该改变这种关系:'Tennis'应该参考'Sport','Football'应该参考'Sport'--那么你将拥有**真实的**,可执行的参考完整性约束! – 2014-10-19 13:04:55
@marc_s,那就意味着Sport有FootballID,TennisID等等。会有很多的空值。 – w0051977 2014-10-19 13:07:41
是的 - 那又怎样? Null的不会伤害....至少这样,你有**真正的**完整性 - 不仅仅是一个*看起来像*完整,这是没有价值的... – 2014-10-19 13:08:15