假设您有一个表格架构,例如:friends(friendship_id, uid1, uid2, are_friends)
。
当一个朋友与另一个人取消联系时,最好从数据库删除该行(并重置自动递增)?或者你应该简单地将are_friends状态更改为'N'</ strong>?
我很想知道你的想法和原因。
编辑:我主要关注的是显示有关朋友状态的一些信息,还会显示谁是谁的朋友。这样在添加时我可以通知朋友的请求,但还没有让他们成为朋友。
我最初有are_friends
作为一个有ENUM
的大ENUM
选项。但在removed
blocked
我有(uid1, uid2)
和{{1}}这样的选项,我不确定这是否真的是有用的数据。关于拥有更多与更少数据的优点的任何进一步想法?
此外,自我发布以来我已经提出的另一个问题是如何避免重复友谊。你应该将{{1}}作为主键吗?
答案 0 :(得分:7)
如果用户与其他用户重新建立联系,是否有与您要恢复的friend
记录相关联的数据?
如果您想跟踪他们的历史记录,或保留与他们的关系相关的一些元数据,请保留记录。
如果您不想跟踪他们的历史记录,并且稍后重新发送消息,则不需要用户输入任何额外数据,请将其删除。您将拥有更小的表格,更简单的查询,并且您可能会忘记where-clause并向他们显示已删除的用户朋友的可能性降低。
答案 1 :(得分:2)
典型的N:M关系:
您不需要关系表中的friendship_id
和are_friends
字段。
这样,如果表中的关系存在,则用户是朋友,否则不是。
存储“不是朋友”是一种无用的混乱。 除非@fencliff描述的情况
无论你做什么:除非重置整个数据库,否则永远不要重置自动增量。
答案 2 :(得分:1)
我建议删除该行,因为首先是占用空间是不必要的数据,而且下次用户决定与同一个朋友重新建立朋友时,我们可以再次输入数据,如果需要的话。
答案 3 :(得分:0)
我会说删除它。确认什么是默认状态的不必要的数据实际上并不是很重要,特别是即使是一个小型网站的数量也可能会增加。如果你要在那里存储额外的有用数据,可能只是改变,但除此之外没有什么意义。
答案 4 :(得分:0)
我会说这首先取决于您的业务需求。如果你需要跟踪这两个人朋友曾经和不再存在的事实,那么你必须在你的数据库中保留这一行,可能还要添加一些你可能感兴趣的列(当他们成为朋友时,当他们不再是朋友等时)。否则,你真的不需要这一行,所以最好删除它。当然,在这种情况下,您也不需要are_friends列,因为您的数据库中存在的所有行都将对应于作为朋友的人。