聊天应用数据库中的行太多

时间:2014-12-11 08:15:16

标签: php mysql laravel

我有一个laravel应用程序,我想为我的应用程序构建一个即时聊天模块。

我使用Eloquent关系的逻辑(hasMany,BelongsTo)建立了数据库结构。

这是结构:

http://s17.postimg.org/3knkv55lr/IMG_1648.jpg

关于它的问题是每个用户之间的每次聊天都有一行。

这意味着:(太糟糕了):(

对于50个用户, 50•((50-1)/ 2)= 1225行

表示100 - > 4950

并且对于250个可能的用户 - >通道表上的31125行,将在每条消息中查询。

我需要建议才能以某种方式制作这个游戏

谢谢!

1 个答案:

答案 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(独特聊天)+消息数量+聊天中的用户数量