2014-12-05 74 views
0

我必須創建一個數據庫架構來管理用戶聯繫人。我解釋...如何管理數據庫中的聯繫人關係

我有一個簡單用戶表的主鍵(名爲ID)。

我有一個聯繫表有兩個外鍵(SenderID到用戶,ReceiverID到用戶)組成主鍵。

我的問題是,如果用戶A發送聯繫人邀請用戶B,我們有如下條目:

聯繫方式(A,B)

在這種情況下,我們可以有一個條目聯繫( B,A)與其他條目類似。

我該如何管理這種情況?

感謝您的幫助。

回答

0

我將創建兩個單獨的表,一個待處理的請求ContactRequests(SenderID, ReceiverID),另一個名爲Contact(user_id,contact_id)聯繫人列表。

像你這樣我會存儲所有聯繫人的請求在ContactRequests並在請求驗證,我會在Contact這樣創建兩個條目:Contact(A,B)Contact(B,A) 並刪除掛起的請求。 通過這樣做,您可以輕鬆地獲取用戶聯繫人列表,而無需發送請求的發件人。

使用谷歌搜索"many to many relationship"也可以幫助您設計您的數據庫。

+0

謝謝你的回答。我會檢查多對多的關係。然而,我想避免「重複」條目(聯繫(A,B)和聯繫人(B,A)),但我不知道是僅可能使用數據庫約束還是需要直接處理我的應用程序源代碼。 – Devatoria 2014-12-06 14:59:17

+0

如果你不想重複的條目,你可能只有每個聯繫人一個條目(A,B)或(B,A),然後當你想要獲取A或B的聯繫人列表時,使用WHERE user_id = xxx或contact_id = xxx',但也許這樣的請求會更慢 – Guillaume 2014-12-08 07:10:04