【问题标题】:Two different users with different accounts follow same person on twitter and DB stores same feeds twice. How to avoid?具有不同帐户的两个不同用户在 twitter 上关注同一个人,DB 存储相同的提要两次。如何避免?
【发布时间】:2014-02-05 12:38:40
【问题描述】:

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

【问题讨论】:

  • 你指的数据库的数据结构是什么?
  • 您的系统应该在存储之前检查 TweetId。如果您已经在数据库中拥有它,则没有理由再次保存它。
  • 你能检查一下 tweet_id 是否已经存在并存储/更新用户列表吗?
  • 我检查了 tweetID 并尝试加入。它有效!

标签: php mysql twitter feed


【解决方案1】:

一个解决方案是有两个表:一个存储推文,一个连接表,将用户和他们的推文链接起来。

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

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

非常原始的例子:

Table user
user_id

Table user_tweet_stream
user_id
tweet_id

Table tweets
tweet_id
twitter_id
tweet_created
tweet

这样,一个用户可以链接到在他们的信息流中拥有多条推文,并且一条推文可以链接到多个用户看到。

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

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

【讨论】:

    猜你喜欢
    • 2018-03-22
    • 1970-01-01
    • 2012-08-08
    • 2021-07-29
    • 2018-05-04
    • 2023-03-25
    • 1970-01-01
    • 2019-07-10
    • 2012-11-18
    相关资源
    最近更新 更多