具有不同帐户的两个不同用户在推特上跟随同一个人并且数据库存储相同的两次。怎么避免?

时间:2014-02-05 12:38:41

标签: php mysql twitter feeds

我有一个Web应用程序,可以为用户帐户提取Twitter提要。当两个人关注同一个人时,推文会在数据库中存储两次。我想存储的Feed只向两个用户显示。解决办法是什么? Web应用程序具有PHP和MySQL

1 个答案:

答案 0 :(得分:0)

解决方案是拥有两个表:一个用于存储推文,一个用于链接用户和他们在Feed上的推文的连接表。

要打破这种情况,您希望一个用户可以访问许多推文,并且许多用户都可以看到一条推文。这在关系术语中称为many-to-many relationship,典型的解决方案是使用连接表来连接两个实体(在本例中为用户和推文)

推文表可以有一个索引来存储推文的官方ID,然后你可以检查它以测试它是否已经存在于数据库中。

非常原始的例子:

Table user
user_id

Table user_tweet_stream
user_id
tweet_id

Table tweets
tweet_id
twitter_id
tweet_created
tweet

这样,一个用户可以链接到他们的流上有多条推文,并且可以链接推文以供多个用户看到。

然而,有一个反对的论点。从本质上讲,如果在大多数情况下,您的用户不会有重叠的推文,那么每收到一条推文,您仍然会在两个表中添加一行。

基本上,如果重叠会发生很多,那就很好了,如果你想保持数据库的完整性,这通常是有意义的。但是,如果考虑数据库大小,那么您可能希望研究另一种解决方案。