通知使用mysql如何存储

功能其实很简单,就是后台往指定用户推送一条通知,可以是一个人,也可以是一群人,推送的通知存在msql,改怎么存呢?
现在俩种方法:

每个用户存一条

id content user_id time
1  'xxxx'    1       123
2  'xxxx'    2       123

每个通知存一条,用户逗号隔开

id content user_ids time
1  'xxxx'    1,2       123

如何设计会更好点?

阅读 3.5k
3 个回答
message(id,content) + message_user(message_id,user_id)

消息单独一个表,然后建一个消息和用户的关系表,这种更符合范式,推荐.

message(id,content,user_ids)

user_ids为条件进行查询时,要用MySQL函数FIND_IN_SET或者MATCH AGAINST全文检索,虽然不需要进行表连接,但查询的性能并不佳.

用户表可以有个通知中心的字段

user_id user_note
1        23,45

通知再单独建表

id content user_ids time
1  'xxxx'    1,2       123

这样做是有一定冗余,但是有一点,如果没有这种冗余的话,要获取一个用户所有通知带来的开销是巨大的

第一种方法,但是把通知内容另外再单独存一个表。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题