6

我正在做一些项目,我正在考虑像 twitter 这样的追随者和追随系统。我在数据库上有成员表。我怎么能做追随者系统。逻辑是什么?我做了类似的事情:我创建了一个新表名称如下,我有 3 行。这些行是 id、user_id、follower_id。这对我来说足够了吗?我不知道如何做这个系统?你能帮助我吗?

4

4 回答 4

5

“跟随”(或“被跟随”)是您的表反映的两个用户实体之间的关系。

这意味着除非您打算将同一用户之间的多个关注和取消关注视为单独的条目,否则您甚至不需要id.

使用 a进行user_idfollower_id引用,使它们成为复合主键并在其上创建索引(以快速获取用户列表):userFOREIGN KEYfollower_id

CREATE TABLE
        follows
        (
        user_id INT NOT NULL REFERENCES user (id),
        follower_id INT NOT NULL REFERENCES user (id),
        PRIMARY KEY
                (user_id, follower_id)
        KEY follower_id (follower_id)
        )
ENGINE=InnoDB -- if you want the foreign keys to work

您也可以添加其他属性。

如果要跟踪同一用户之间的关注和取消关注,则需要将其提升为实体,添加代理主键:

CREATE TABLE
        follows
        (
        id INT NOT NULL PRIMARY KEY,
        user_id INT NOT NULL REFERENCES user (id),
        follower_id INT NOT NULL REFERENCES user (id),

        -- These are additional attributes

        follows_from DATETIME NOT NULL,
        follows_till DATETIME,

        --

        KEY follower_id (follower_id),
        KEY user_id (user_id)
        )
ENGINE=InnoDB -- if you want the foreign keys to work
于 2012-04-23T19:19:57.753 回答
5

是的,这种设计对于 Twitter 等简单的追随系统来说已经足够了。当然,一些额外的数据(例如@Ina 建议的时间戳)可能很有用,您并不严格需要id它。

我会推荐类似的东西:

userID INT PRIMARY,
followID INT PRIMARY,
creationTime DATETIME
于 2012-04-23T19:21:35.107 回答
1

假设您已经有一个用户登录的站点,您需要在数据库中添加一个包含两列的表,“friend1”和“friend2”(假设友谊是双向关系)或“领导者”和“追随者” (对于订阅的单向关系)。然后,您需要一个简短的 PHP 脚本,它将friend1 和friend2 作为输入(例如,作为POST 或GET 变量)并将该对输入到数据库中。最后,在您的网站上添加一个按钮,该按钮可以对该 PHP 脚本进行 AJAX 调用,或者作为目标是该 PHP 脚本的 HTML 表单的一部分。

于 2016-07-20T00:14:37.450 回答
0

假设您有一个 的实体,您需要创建一个从到People的多对多关系。在您的关联表中,您将有两列,并且. PeoplePeoplePeopleIDFollowing

Following要查找用户的关注者,请在列中搜索该用户的 ID 。要列出用户正在关注的人,请在PeopleID列中搜索。

于 2012-04-23T19:18:35.727 回答