ブラックリストやお気に入りを一覧表示する 2 つ目のテーブルを作成できます
テーブル ID(pk) | userid_src(fk) | userid_dst(fk) | タイプ
ユーザー A がユーザー B をブラックリストに登録し、次にユーザー A がユーザー C をお気に入りにし、ユーザー B と C がお互いをお気に入りにした場合、A は id 1、B id 2 および C id 3 になります。
id(pk) | userid_src(fk) | userid_dst(fk) | type
1 | 1 | 2 | blacklist
2 | 1 | 3 | favourite
3 | 2 | 3 | favourite
4 | 3 | 2 | favourite
編集: 各ユーザーの情報を取得するには:
SELECT * from users
LEFT JOIN users_connections as con ON users.uid = con.userid_src
LEFT JOIN users as userCon ON userCon.uid = con.userid_dst
WHERE users.id = XXX
XXX は現在のユーザーの ID になります。次に、現在のユーザーと、彼がブラックリストに登録またはお気に入りとして追加した各ユーザーとの間の各接続を取得します。