PHPおよびMySQLとの多対多の関係を処理する方法のチュートリアルを読んでいます。
この質問では、次のルールを示す「データベーススキーマ」セクションを参照します。
この新しいテーブルは、次のことを可能にするように作成する必要があります。
* It must have a column which links back to table 'A'. * It must have a column which links back to table 'B'. * It must allow no more than one row to exist for any combination of rows from table 'A' and table 'B'. * It must have a primary key.
これまでのところ、非常にクリアです。
私が抱えている唯一の問題は、3番目のルール(「どの組み合わせでも1行しか存在できないようにする必要がある」)にあります。
これも適用したいのですが、うまくいかないようです。
mysql(5.XX)のテストインスタンスでは、同じ関係を反映する2つの行を追加できます。
たとえば、(行を追加して)この関係を作成する場合:
AからB
この関係も作成できます:
BからA
したがって、質問は実際には2つの質問です。
1)上記を許可しない3番目のルールをどのように解釈しますか?組み合わせに関係なく、一意の関係は1つだけです。
2)「A」のすべての関係を検索したい場合、SQLクエリはどのようになりますか?
注1:基本的に、私の最終的な目標は「友情」システムを作成することです。私が理解している限り、解決策は多対多のテーブルです。可能であれば、別の方法を提案します。
注2: usersテーブルは、リレーション(友情と呼びます)テーブルとは別のデータベースにあります。したがって、外部キーを使用できません。