因为创建一个在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)
答案 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'