功能其实很简单,就是后台往指定用户推送一条通知,可以是一个人,也可以是一群人,推送的通知存在msql,改怎么存呢?
现在俩种方法:
每个用户存一条
id content user_id time
1 'xxxx' 1 123
2 'xxxx' 2 123
每个通知存一条,用户逗号隔开
id content user_ids time
1 'xxxx' 1,2 123
如何设计会更好点?
功能其实很简单,就是后台往指定用户推送一条通知,可以是一个人,也可以是一群人,推送的通知存在msql,改怎么存呢?
现在俩种方法:
每个用户存一条
id content user_id time
1 'xxxx' 1 123
2 'xxxx' 2 123
每个通知存一条,用户逗号隔开
id content user_ids time
1 'xxxx' 1,2 123
如何设计会更好点?
用户表可以有个通知中心的字段
user_id user_note
1 23,45
通知再单独建表
id content user_ids time
1 'xxxx' 1,2 123
这样做是有一定冗余,但是有一点,如果没有这种冗余的话,要获取一个用户所有通知带来的开销是巨大的
4 回答1.8k 阅读✓ 已解决
8 回答1.4k 阅读
3 回答1.4k 阅读✓ 已解决
4 回答2.4k 阅读
3 回答1.2k 阅读✓ 已解决
2 回答1.9k 阅读
1 回答985 阅读✓ 已解决
消息单独一个表,然后建一个消息和用户的关系表,这种更符合范式,推荐.
以
user_ids
为条件进行查询时,要用MySQL函数FIND_IN_SET
或者MATCH AGAINST
全文检索,虽然不需要进行表连接,但查询的性能并不佳.