【问题标题】:database design for chat application [closed]聊天应用程序的数据库设计[关闭]
【发布时间】:2018-01-16 11:55:52
【问题描述】:

我有一个任务是做whats-app之类的聊天应用程序,但更简单

要求:

-只能在 2 个用户之间聊天 - 为每个联系人获取最后一条消息(与whatsapp 相同)。 - 需要每 10 秒刷新一次,并且只获取用户收到的新消息。

我正在考虑在用户和消息之间进行一对多的设计 每个用户都有很多消息,并且在消息中只保存相关用户发送的消息

以及用户和联系人(朋友)之间的一对多 但问题是在 loadMessages 中我必须检查两个用户表并获取相关消息。

并且更新 lastMessage 以联系是问题。 你的想法

谢谢

【问题讨论】:

    标签: entity-framework database-design linq-to-entities


    【解决方案1】:

    我的想法是:

    1:N 表示一对多关系

    N:N 表示多对多关系

    用户:

    • 身份证
    • 姓名
    • 已发送 1:N 条消息(消息中的发件人 ID)
    • 收到 1:N 条消息(消息中的收件人 ID)

    用户关系(N:N 链接表)

    • 用户 1 ID
    • 用户 2 ID
    • 关系类型(即朋友)

    消息:

    • 消息 ID
    • 发件人 ID
    • 收件人 ID
    • 内容
    • 时间戳

    我们只能在此处输入 Receiver ID,因为您说聊天只能在两个人之间进行。

    如果您需要多个收件人,您需要创建一个邮件收件人表:

    • 消息 ID
    • 收件人 ID

    然后根据邮件的收件人创建尽可能多的行。

    您可以通过创建消息方表使其更加通用:

    • 消息 ID
    • 派对 ID
    • 派对类型(即用户)
    • 当事方角色(即发件人、收件人等)

    【讨论】:

    • 但是用户的每个加载消息都必须传递所有消息表,这是性能问题
    • 嗯...好的。也许让每个实时聊天都有自己的非规范化临时表,并在结束时保留到“主”表。
    猜你喜欢
    • 1970-01-01
    • 2019-09-22
    • 2014-10-01
    • 1970-01-01
    • 2020-08-28
    • 1970-01-01
    • 1970-01-01
    • 2016-04-21
    • 1970-01-01
    相关资源
    最近更新 更多