我正在制作一个接收和发送图像的机器人,我必须跟踪图像被发送到谁,所以它只发送一次。用户还可以将图像标记为不合适。
我创建了一个包含两个表的数据库:
我只能想到:
a) add viewedBy to imageTable "user1,user213,user9“
或
b) add imageToView to userTable "123,545,21321,654565“
但如果我使用,就会出现这样一个问题:用户查看的图像越多,获取一个随机图像所需的时间就越长。
如果我执行b,我已经有了一个未见图像的列表,所以我可以从这里随机选择一个,然后删除id。但是如果一个用户将其标记为inappropiate,我必须循环/删除db中所有用户的id…
还有更好的办法吗?
发布于 2019-04-29 12:01:54
您需要一个中间表来跟踪哪个用户看到了哪个图像。因此,基本上这个新表,我们称其为imageByUser,将包含一个用户id、一个图像id、不合适的布尔标志、datetime (可选,但在长期运行时会很有用)和一个生成的主键(或者您可以将用户、图像和dateseen的组合作为复合逻辑主键)。
拥有这第三个表将解决您的所有问题,因为当有人看到图像时,您只需添加新行。同样,如果他们将其标记为不适当,那么您所要做的就是将不适当的标志更新为yes。这样,您甚至可以跟踪用户碰巧看到同一图像两次的情况(只需向表中添加另一行)。
https://stackoverflow.com/questions/55892828
复制相似问题