跟随者和追随者系统的逻辑是什么?

时间:2012-04-23 19:13:06

标签: mysql database-design twitter

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

4 个答案:

答案 0 :(得分:5)

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

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

使用user_id制作follower_iduser引用FOREIGN KEY,将它们作为复合主键并在follower_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

答案 1 :(得分:5)

是的,这种设计足以用于简单的跟随系统,例如Twitter的系统。当然,一些额外的数据(例如@Ina建议的时间戳)可能很有用,你并不需要id

我建议像:

userID INT PRIMARY,
followID INT PRIMARY,
creationTime DATETIME

答案 2 :(得分:0)

假设您拥有People的单个实体,则需要创建从PeoplePeople的多对多关系。在关联表格中,您将有两列PeopleIDFollowing

要查找用户的关注者,请在Following列中搜索该用户的ID。 要列出用户关注的对象,请在PeopleID列中进行搜索。

答案 3 :(得分:0)

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