2017-10-04 5 views
0

、私は現在のデータベースに、このように保存していますデータベースに友情を保存する。現時点ではソーシャル・ネットワーキング・サービス

id from_id to_id 
1  1  2 
2  2  1 

私は

this.friendshipRepository.delete(this.friendshipRepository.findOneByFromUserAndToUser(fromUser.get(), toUser.get())); 
this.friendshipRepository.delete(this.friendshipRepository.findOneByFromUserAndToUser(toUser.get(), fromUser.get())); 
を削除するとき、私はこのよう

this.friendshipRepository.save(new FriendshipEntity(fromUser.get(), toUser.get())); 
this.friendshipRepository.save(new FriendshipEntity(toUser.get(), fromUser.get())); 

で、このような友情を書き留め

私はすべてを二度やります。それは少し不便です。

データベース内のユーザー間で友情を保存するためのより良い方法をご存知ですか?

答えて

1

友好関係が対称であると考えるなら、データベーススキーマを書き換えることができます。 代わり

id from_id to_id 

のそれは

id lower_id higher_id 

ので、与えられた友情は、データベース内で一意のエントリを持っている、とあなたは、単一のクエリとの友情を削除することができます可能性があります。

欠点はあなたが誰かの友人のリストを表示したい場合、あなたはlower_idhigher_id

+0

の両方でこの人をルックアップするために持っていることである私は、ジルのコメントに同意する - あなたは、レコードの作成や削除に多くの時間を持っているのいずれか、それ以上の時間を照会する必要があります。あなたのシステムで最も使用されているのはどれですか?私は、データ作成時間が少し長くかかるオリジナルの方法を好むが、より簡単で迅速なクエリにつながる。 – Margaret

関連する問題