Java 在数据库中保存友谊。社交网络服务

Java 在数据库中保存友谊。社交网络服务,java,spring,hibernate,spring-mvc,spring-boot,Java,Spring,Hibernate,Spring Mvc,Spring Boot,目前,我正在以这种方式存储在数据库中 id from_id to_id 1 1 2 2 2 1 我用这种方式写下这种友谊 this.friendshipRepository.save(new FriendshipEntity(fromUser.get(), toUser.get())); this.friendshipRepository.save(new FriendshipEntity(toUser.get(), fromUser.get()

目前,我正在以这种方式存储在数据库中

id  from_id  to_id
1     1        2
2     2        1
我用这种方式写下这种友谊

this.friendshipRepository.save(new FriendshipEntity(fromUser.get(), toUser.get()));
this.friendshipRepository.save(new FriendshipEntity(toUser.get(), fromUser.get()));
a当我离开时

this.friendshipRepository.delete(this.friendshipRepository.findOneByFromUserAndToUser(fromUser.get(), toUser.get()));
this.friendshipRepository.delete(this.friendshipRepository.findOneByFromUserAndToUser(toUser.get(), fromUser.get()));
每件事我都得做两次。有点不方便


<>你知道在数据库中存储用户之间的友谊有更好的方法吗?

如果你认为友谊是对称的,那么一个选项就是重写你的数据库模式。 而不是

id  from_id  to_id
可能是

id  lower_id  higher_id
因此,给定的友谊在数据库中有一个唯一的条目,您可以通过单个查询删除友谊


缺点是,如果你想列出某人的朋友,你必须在两个
低id
高id
中查找此人。我同意Gilles的意见-你要么有更多的时间创建和删除记录,要么有更多的时间查询记录。您的系统中使用最多的是哪一个?我更喜欢您最初的方法,即数据创建时间稍微长一点,但会导致更容易/更快的查询。