如何将SQL数据库中的记录与没有列表的另一条记录相关联?

时间:2017-08-28 22:10:03

标签: python mysql relational-database

因为创建一个在SQL中存储列表的列是不好的做法,所以我对如何将user表中的用户名与其他用户的关注者联系起来感到困惑。为每个用户创建一个表似乎有点过分,所以我该怎么做?我当时的数据库模型如下

TABLE - USERS
id - (int) auto-increment and primary key
ip - (varchar) records the users ip on message , will be used to recognize aliases
su - (int) used to assign permissions
username - (varchar) 

1 个答案:

答案 0 :(得分:2)

正如杨瑜在评论中所建议的,你需要创建新表

followers有两列

  • userIdToFollow整数
  • userIdFollower整数

您可以将两者作为一个复合主键(userIdToFollow, userIdFollower)。另一个唯一索引为(userIdFollower, userIdToFollow)

使用用户名“abc”

查找用户的关注者列表
SELECT users.id FROM users
INNER JOIN followers
ON users.id = followers.userIdFollower
WHERE followers.userIdToFollow = users.id AND 
users.username = 'abc'

要查找'abc'所关注的用户列表,只需将其切换

即可
SELECT users.id FROM users
INNER JOIN followers
ON users.id = followers.userIdToFollow
WHERE followers.userIdFollower = users.id AND 
users.username = 'abc'