說我有這樣的結構:外鍵引用許多表的一個
體育:
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