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

Database design 朋友/好友系统的数据库结构应该是什么,database-design,Database Design,我正在构建一个朋友/好友系统,其中一个用户可以发送朋友请求、接受、拒绝或阻止某人 最初我使用的是一个简单的两列表: user (BIGINT) friend (BIGINT) 这个想法是,如果user1有一个朋友user2,那么会有两行,其中一行user1是user2的朋友,另一行正好相反,这意味着他们是共同的朋友。另一方面,如果只有一行,则意味着另一个用户尚未接受该用户作为朋友 然而,这个结构似乎不能处理拒绝或阻塞状态,所以我想知道什么是更好的db结构。有什么想法吗 我将具有以下结构: Us

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

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

user (BIGINT)
friend (BIGINT)
这个想法是,如果
user1
有一个朋友
user2
,那么会有两行,其中一行
user1
user2
的朋友,另一行正好相反,这意味着他们是共同的朋友。另一方面,如果只有一行,则意味着另一个用户尚未接受该用户作为朋友


然而,这个结构似乎不能处理
拒绝
阻塞
状态,所以我想知道什么是更好的db结构。有什么想法吗

我将具有以下结构:

User
 id    name

Status
 id    name

Frienship
 idUser    idUserFriend   idStatus
  ^Fk to user               ^fk to status
              ^FK to user
这个模型能很好地解决你的问题