我们正在为我们的应用设置推送通知,并且发现如果我们将用户设备令牌存储在用户表中,我们会遇到几个问题。< / p>
我们的用户表:
| id (user pk) | ... other fields | device_token (for push notifs) |
其他两个解决方案是:
我想知道别人怎么做这个&amp;这些解决方案能否以任何方式得到改善?
答案 0 :(得分:0)
我认为你应该尝试:在用户表中存储一个JSON数组 这种方式很明确,最适合优化 Json文件如下:
std::getline
答案 1 :(得分:0)
尚不清楚您使用的是哪个数据库,但是如果它是关系数据库(如MySQL),则比JSON数组会违反良好数据库设计的first normal form。在我看来,这是个不起眼的人。
考虑到您说过只向一个设备发送推送通知,在用户表中存储单个设备ID是一个不错的解决方案。但是在我看来,此方法有两个缺点(并不是说这是错误的,而是要考虑的事情):
app_version
用户表再增加至少一列。进一步扩展(date_last_notified
?device_type
?等等),您突然在用户表中添加了很多额外的列,这些列可能与用户实体显然不相关。这将违反关系数据库设计的2nd normal form,因为您的新用户列将不再描述用户实体。指向用户的设备ID的额外表确实增加了 some 的复杂性,但这就是关系数据库的设计目的。
我的建议是现在给它一个单独的表,但是如果您要在users表上使用一列来构建它,也很好-在重构的时候就做好准备(并且毫不畏惧)。