這是我的表怎麼看:如何防止外鍵混亂?
tableMembers | memberID as primary key
tableAddress | addressID as primary key references memberID
tableSubscription | subsID as primary key references memberID
這個數據庫是訂閱網站的。基本上,如果將一行插入到tableMembers中,則將相應的行插入到其他每個表中。
我爲最後兩個表設置了外鍵,因此我可以通過tableMembers訪問它們。基本上,如果我從tableAddress訪問行我做的:
SELECT * FROM tableAddress WHERE addressID = (SELECT memberID FROM tableMembers WHERE uname = 'John');
我設置的問題是,當ID的同步得到弄糟,外鍵將不再工作。說,當我插入一行到tableMembers然後tableSubscription由於一些奇怪的原因變得功能失效了幾秒鐘?或者在用戶註冊的情況下(最新的memberID變成= 2),假定他/她沒有訂閱哪個離開subsID(,仍然= 1,),與memberID同步。並且稍後,新用戶註冊(最新的memberID變成= 3)並訂閱(subsID變成= 2)。這使得我的查詢變得比較流行。我如何防止這種情況?或者,如果您認爲我不瞭解外鍵的概念,請賜教。
'tableAddress'和'tableSubscription'設置爲與'tableMembers'具有一對一的關係。一般來說,一對一的關係合併成一張表... – 2010-08-18 19:48:11