【发布时间】:2010-07-16 06:58:51
【问题描述】:
假设您有这样的表架构:friends(friendship_id, uid1, uid2, are_friends)。
当一个朋友取消了另一个人的朋友时,最好的做法是从数据库中删除该行(并重置自动递增)?还是应该简单地将 are_friends 状态更改为“N”?
我很想知道你的想法和原因。
编辑:我主要关心的是显示一些关于朋友状态的信息,以及显示谁加了谁。这样,在添加时,我可以将好友的请求通知给好友,但尚未让他们成为好友。
我最初将are_friends 用作大号ENUM,并提供更多选项。但在那个ENUM 中,我有removed 和blocked 之类的选项,我不确定这是否是真正有用的数据。关于拥有更多与更少数据的优点有什么进一步的想法吗?
另外,自从我发帖以来,我还有一个问题是应该如何避免重复友谊。您应该将(uid1, uid2) 设为主键吗?
【问题讨论】:
-
您要保留多少信息?如果你在 Facebook 工作,看起来你将不得不保留一个额外的表来维护友谊历史,当然永远不要删除它......
标签: mysql database database-design social-networking