+-----------------------------------+
| fID | personA | personB | fStatus |
|-----------------------------------|
| 1 | u1ID | u2ID | 1 |
| 2 | u3ID | u4ID | 0 |
| 3 | u1ID | u3ID | 1 |
+-----------------------------------+
Status Column Codes:
0: Pending (personA wants to be friends with personB)
1: Friends (personA with personB)
* On removal request by either side > delete the corresponding row
我想要一个简单的 MySQL 表,通过它我可以在我的网站上实现一个友谊选项。做 friend 与否就是它所需要的全部。
现在我想知道实现此目的的最佳方法,以及我是否遗漏了什么。我想查询每个用户的好友,用户应该能够在他们的好友列表中添加或删除彼此。
最佳答案
由于每个人都可以成为另一个人的 friend ,因此您需要实现 NxM(多对多)关系。就像您所做的那样,在关系数据库管理系统中,在另一个表中转换为“连接”。
在您的示例中,也许您可能想添加一列以了解谁向其他人请求了友谊。
编辑:我可能会删除 fId 列并创建列(外键)personA 和 personB 的组合主键。这样,数据库将避免对同一个人有多个请求,也可以避免 personA 向 personB 和 personB 请求友谊,而不是仅仅接受它,向 personA 请求友谊,从而产生两条记录!
edit2:您可以使用状态字段来存储友谊请求“所有者”:
0: pending, A asked to B
1: pending, B asked to A
2: friends
edit3:你不需要过期时间(request_date 列)吗?如果好友请求在 3 个月内未得到答复,则该请求将过期并被删除。
关于mysql - friend 表最好的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9175942/