我有一个laravel应用程序,我想为我的应用程序构建一个即时聊天模块。
我使用Eloquent关系的逻辑(hasMany,BelongsTo)建立了数据库结构。
这是结构:
关于它的问题是每个用户之间的每次聊天都有一行。
这意味着:(太糟糕了):(
对于50个用户, 50•((50-1)/ 2)= 1225行
表示100 - > 4950
并且对于250个可能的用户 - >通道表上的31125行,将在每条消息中查询。
我需要建议才能以某种方式制作这个游戏
谢谢!
答案 0 :(得分:0)
我会像这样创建我的数据库
**Users**
user_id
username
etc
**Chats**
chat_id
chat_name
etc
**Messages**
message_id
message_user_id ->foreighn key to users table field user_id
message_text
chat_id ->foreighn key to chats field chat_id
行数
1(独特聊天)+消息数量
您不必将用户保存在聊天表中,您可以通过查看消息表字段chat_id
找到它们。如果要保存加入聊天的用户(不发布消息),可以添加表格
**Chat_Users**
chat_id ->foreighn key to chats table field chat_id
user_id ->foreighn key to users table field user_id
行数
1(独特聊天)+消息数量+聊天中的用户数量