什么应该是朋友/好友系统的数据库结构

时间:2013-12-12 13:55:53

标签: database-design

我正在构建一个朋友/好友系统,其中一个用户可以发送好友请求,接受,拒绝或阻止他人。

最初我使用的是一个简单的两列表:

user (BIGINT)
friend (BIGINT)

我的想法是,如果user1有一位朋友user2,那么就会有两行{} {}} user1成为user2的朋友,并且另一排,恰恰相反,意味着他们是共同的朋友。另一方面,如果只有一个这样的行,那就意味着,另一个用户还没有接受用户作为朋友。

但是,这个结构似乎没有处理rejectedblocked状态,所以我想知道什么是更好的数据库结构。有任何想法吗?

1 个答案:

答案 0 :(得分:2)

我会有以下结构:

User
 id    name

Status
 id    name

Frienship
 idUser    idUserFriend   idStatus
  ^Fk to user               ^fk to status
              ^FK to user

此模型可以很好地处理您的问题。