双滴グラフを構成するSQL

id、user_id1、およびuser_id2の列を持つテーブルが必要です。

基本的にこれは、user1がuser2と友好関係にあり、その逆であることを表すリンクを友人グラフに再現します。

私のセットアップは、1人のユーザーとその友人のリストを取得します。私はテーブルに余分なエントリを持っていないと思うので、私はこれをどのようにshoudl扱いますか?

I want to do something like: insert into friendship
(user_id1, user_id2) values (, ) where ...

しかし、私はSQLのような条件付きロジックをどのように行うのか分からない

ベストアンサー

「論理的に」同じ組み合わせを挿入するのを防ぐために、一意のインデックスを作成することができます。

 CREATE UNIQUE INDEX unique_pair 
      ON your_table (least(user_id1, user_id2), greatest(user_id1, user_id2));

これは標準のANSI SQLであり、ほとんどのDBMSで動作するはずです。 DBMSが least
maximum をサポートしていない場合は、コンパクトではなく、 CASE

どのように機能するのですか?

(2,1)(1,2)の両方のタプルは常にとして索引付けされます>(1,2)
– 残りの部分は UNIQUE で処理されます。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です