2014-12-05 65 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

相关问题