私の問題はかなり単純ですが、私はそれに単語を置くことはできません。 私はそれぞれのIDを持つユーザーテーブルを持っています。タプルをSQLテーブルで一意にするにはどうすればいいですか?
友情テーブルを作りたいと思いますが、重複したレコードを持つことはできません。意味がない:
id_user1 | id_user2
---------|----------
2 | 3
3 | 2
私は十分にクリアですか?
CREATE TABLE User(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
surname VARCHAR(100) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE Friends(
id_user1 INT NOT NULL,
id_user2 INT NOT NULL,
PRIMARY KEY(id_user1, id_user2),
FOREIGN KEY (id_user1) REFERENCES User(id),
FOREIGN KEY (id_user2) REFERENCES User(id),
);
[EDIT 1:] たぶんベストプラクティスは二回、各レコードを保存することです、私は私のテーブルの作成のためにこれを持っている瞬間のために
?両方?
の可能性のある重複した[?私はMySQLで複数の列に一意の制約を指定する方法](http://stackoverflow.com/questions/635937/how -do-i-specified-unique-constraint-multiple-columns-in-mysql) – Richard
いいえ、UNIQUE制約は何も変更しません... – ypicard
私はあなたがそのような制約をテーブル自体に定義できるとは思いません。 1つの可能な回避策はUNIQUE(id_user1、id_user2)を設定し、常にid_user1に小さなidを、id_user2に大きなidを保存することです。 – jussius