これをどのように表現するかはよくわかりませんが、列が本質的に交換可能なテーブルを実装するための良い方法はありますか?
例:ユーザーモデルがあり、2人のユーザーが「友達」になることを許可したい場合。私にとって明らかな方法は、それぞれがユーザーへのキーを含む2つの列(「friend1」と「friend2」)を含むテーブルを持つことです。これは、「(friend1 = user1 AND friend2 = user2)OR(friend1 = user2 AND friend2 = user1)」をチェックする必要があるため、「user1とuser2の友達です」のように言うのは面倒です。それは機能しますが、そのテーブルから何かを取得したいときはいつでも、両方の列で探しているのは私には厄介なようです。これを行うためのよりエレガントな方法はありますか?