+-----------------------------------+
| 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表,通过它我可以在我的网站上实现友谊选项。不管是不是朋友,都需要拥有它。
现在我想知道为此目的的最佳方法,如果有一些我缺少的东西。我想查询每个用户的朋友,用户应该能够从他们的朋友列表中添加或删除对方。
答案 0 :(得分:2)
由于每个人都可能与另一个人成为朋友,因此您需要实现NxM(多对多)关系。在关系数据库管理系统中,在另一个表中转换为“联结”,就像你一样。
在你的例子中,也许你可能想要添加一个专栏来了解谁将这个友谊问到了谁。
编辑:我可能会删除fId列并创建列(外键)personA和personB的组合主键。这样,db就可以避免对同一个人有多个请求,并且还避免了personA向personB和personB询问友谊而不是仅接受它的情况,向personA询问友谊,从而产生两条记录!
edit2:您可以使用状态字段存储友情请求“所有者”:
0: pending, A asked to B
1: pending, B asked to A
2: friends
edit3:你不需要一个到期时间(列request_date)吗?如果在3个月内没有回答友谊请求,则请求到期并被删除。