我有下一个架构:
用户表:
| id | name | ... | created_at | updated_at |
分组表:
| id | name | ... | created_at | updated_at |
消息表:
| id | text | ... | created_at | updated_at |
user_messages表(Pivot):
| user_id | message_id | sent_at |
user_groups表(Pivot):
| user_id | group_id | joined_at |
现在项目只使用MySQL数据库。
存储多对多是传统方式,它很有用。但在这种情况下,我有点困惑。
群组可以包含无限用户,群组每天可以发送10-1000封(或更多)消息。例如,让我们采取一些基本数字(不是现实生活中的数百万):1组,10000名用户,每天100条消息。每天的关系行数:10000 x 100 = 1000000
。一组每天一百万行,但组数也可以是数千。
一个可以同时出现的想法:为什么你需要Pivot来发送消息?答案是:需要“目标”发送选项(仅用于为x用户发送消息,而不是为所有用户发送消息)。
我的问题是:“存储此类数据的正确方法是什么?”
也许我需要使用其他数据库系统,或者这个数字对MySQL来说不是问题。