【问题标题】:How to manage a contact relation in database如何管理数据库中的联系关系
【发布时间】:2014-12-06 06:58:22
【问题描述】:

我必须创建一个数据库模式来管理用户联系人。我解释...

我有一个简单的 User 表,其中包含一个主键(名为 Id)。

我有一个 Contact 表,其中有两个外键(SenderID 到 User,ReceiverID 到 User)构成主键。

我的问题是,如果用户 A 向用户 B 发送联系邀请,我们有以下条目:

联系方式(A,B)

在这种情况下,我们可以有一个与其他条目相似的条目 Contact(B,A)。

我该如何处理这个案子?

感谢您的帮助。

【问题讨论】:

    标签: sql database schema


    【解决方案1】:

    我将创建两个单独的表,一个用于待处理的请求ContactRequests(SenderID, ReceiverID),另一个用于名为Contact(user_id,contact_id) 的联系人列表。

    我会像您一样将所有联系请求存储在ContactRequests 中,并且在请求验证后,我会在Contact 中创建两个条目,如下所示:Contact(A,B)Contact(B,A) 并删除待处理的请求。 通过这样做,您可以轻松地获得独立于发送请求的用户联系人列表。

    搜索"many to many relationship" 也可以帮助您设计数据库。

    【讨论】:

    • 感谢您的回答。我会检查多对多的关系。但是,我想避免“重复”条目(Contact(A,B)和Contact(B,A)),但我不知道是否可以仅使用数据库约束,或者我是否需要直接处理它我的应用程序源代码。
    • 如果您不想重复条目,您可以每个联系人只有一个条目,(A,B) 或 (B,A),然后当您想要获取 A 或 B 的联系人列表时,使用WHERE user_id=xxx OR contact_id=xxx 但也许这样的请求会更慢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 1970-01-01
    相关资源
    最近更新 更多