Google で検索する用語がわかりませんでした。この質問にタグを付けるか、関連する質問の方法を教えていただければ助かります。
私は典型的な多対多の関係を持っていると信じています:
CREATE TABLE groups (
id integer PRIMARY KEY);
CREATE TABLE elements (
id integer PRIMARY KEY);
CREATE TABLE groups_elements (
groups_id integer REFERENCES groups,
elements_id integer REFERENCES elements,
PRIMARY KEY (groups_id, elements_id));
特定の elements_id のセットに対して 1 つの groups_id しか存在できないという制約が必要です。
たとえば、次は有効です。
groups_id | elements_id
1 | 1
1 | 2
2 | 2
2 | 3
以下は、グループ 1 と 2 が同等になるため、有効ではありません。
groups_id | elements_id
1 | 1
1 | 2
2 | 2
2 | 1
要素のすべてのサブセットにグループが必要なわけではありませんが (これはパワー セットではありません)、新しいサブセットが形成される場合があります。グループを単一のエンティティとして追加することを実際に話しているので、私の設計が間違っているのではないかと思います。
サブセットを複製するリスクなしに、要素のサブセットの識別子を作成するにはどうすればよいですか?