我正在创建一个消息传递应用程序,并且无法提供可扩展的数据库设计。
我在网上找到了以下数据库设计但有几个问题。
黄色,您将看到我将使用的表格
我是从这个网站https://github.com/yoosuf/Messenger
获得的我的问题是:
我没有看到任何跟踪未读邮件的方法。我是否应该添加一个名为unread_conversations
的表,其中每次用户发送消息时,都会将记录插入到与会话的每个参与者的conversation_id
和user_id
的unread_conversations中?
当我获取用户对话时,查询将是
select (whatever columns I need)
from conversations
inner join messages on messages.id = conversations.last_message_id
where user_id = {user_id}
AND conversations.id not in (
select conversation_id from deleted_conversations where user_id = {user_id}
)
ORDER by conversations.update_at DESC
LIMIT 50
(我会将最后一条消息ID存储在conversations
表中以显示预览)
我主要担心的是,随着数据库的扩展,由于所有表格而导致的所有这些连接都不会使其成为可扩展的设计。
虽然从设计的角度来看,感觉还不错。
思想?