聊天应用的数据库设计

时间:2017-08-08 19:12:02

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

我有一个任务是做什么聊天应用程序,如whats-app,但更简单

要求:

- 仅限2位用户之间 - 为每个联系人获取最后一条消息(与whatsapp相同)。 - 需要刷新每10秒并获取仅向用户收到的新消息。

我正在考虑设计在用户和消息之间进行一对多 对于每个用户,有许多消息,并在消息中仅保存与用户发送的消息

用户和通讯录(朋友)之间的一对多 enter image description here 但问题是在loadMessages中我将检查两个用户表并获取相关消息。

并且还要更新lastMessage以进行联系是个问题。 你的想法

由于

1 个答案:

答案 0 :(得分:0)

我的想法是:

1:N表示1对多关系

N:N表示多对多关系

用户:

  • ID
  • 名称
  • 1:发送N条消息(消息上的发件人ID)
  • 1:收到N条消息(消息上的收件人ID)

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

  • User1 Id
  • User2 Id
  • 关系类型(即朋友)

消息:

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

我们只能把Receiver ID放在这里,因为你说聊天只能在两个人之间。

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

  • 消息ID
  • 收件人ID

然后创建与此消息的收件人一样多的行。

您可以通过创建Message Parties表来使其更加通用:

  • 消息ID
  • 参与方身份
  • 派对类型(即用户)
  • 派对角色(即发件人,收件人等)