2017-08-08 86 views
0

我有任務做聊天應用程序像什麼,應用程序,但更簡單的數據庫設計聊天應用

要求:

- 聊天只有2用戶 之間 - 對於每一個接觸得到的最後消息(與whatsapp相同)。 - 需要每10秒刷新一次,並獲取僅收到他用戶的新消息。

我想設計,使一個一對多的用戶和消息 對於每個用戶有許多消息,之間並在消息中只保存該相關用戶發送

而且一個一對多的消息用戶和聯繫人之間(朋友) enter image description here 但問題是,在loadMessages中,我將不得不檢查兩個用戶表並獲取相關消息。

並且還要更新lastMessage來聯繫是問題。 你認爲什麼

感謝

回答

0

我的想法是:

1:N是指1對多的關係

N:N意味着許多一對多的關係

用戶:

  • ID
  • 名稱
  • 1:N消息中發送(在消息發件人ID)
  • 1:N接收消息(接收者ID上消息)

用戶關係(N:N鏈接表)

  • 用戶1 Id
  • 用戶2 Id
  • 關係類型(即朋友)

消息:

  • 消息標識
  • 發件人ID
  • 接收者ID
  • 內容
  • 時間戳

我們只能把接收機ID在這裏因爲你說的是​​ch只能在兩個人之間。

如果需要多個收件人,你會想創建一個郵件的收件人表:

  • 消息標識
  • 接收者ID

然後創建的這是很多行,因爲有消息的收件人。

你可以使其更加通用的通過創建一個消息締約方表:

  • 消息標識
  • 方ID
  • 方類型(即用戶)
  • 黨的角色(即發件人,收件人等)
+0

但是然後每個加載消息的用戶將不得不通過所有的消息表,這是性能問題 – Zakk

+0

嗯......好的。也許讓每個實時聊天都有自己的非規範化臨時表,並在其結束時保存到「主」表中。 – Aron