我正在构建一个朋友/好友系统,其中一个用户可以发送好友请求,接受,拒绝或阻止他人。
最初我使用的是一个简单的两列表:
user (BIGINT)
friend (BIGINT)
我的想法是,如果user1
有一位朋友user2
,那么就会有两行{} {}} user1
成为user2
的朋友,并且另一排,恰恰相反,意味着他们是共同的朋友。另一方面,如果只有一个这样的行,那就意味着,另一个用户还没有接受用户作为朋友。
但是,这个结构似乎没有处理rejected
或blocked
状态,所以我想知道什么是更好的数据库结构。有任何想法吗?
答案 0 :(得分:2)
我会有以下结构:
User
id name
Status
id name
Frienship
idUser idUserFriend idStatus
^Fk to user ^fk to status
^FK to user
此模型可以很好地处理您的问题。