私はアーティストと曲をモデル化しようとしていますが、多くのアーティスト (デュエットなど) が Song_Performance を実行できるという問題があるため、曲の実行者を表す Artist_Group があります。
これで、Artist と Artist_Group の間に多対多の関係ができました。ここで、Artist_Group は、そのグループ内のアーティストのコレクションによって一意に識別されます。Artist_Group へのアーティストの参加を表す交差エンティティを作成できます (Artist_Group_Participation?)
同じアーティストのセットが同じグループを表すという事実を保持する Artist_Group エンティティの主キーを作成する方法がわかりません。Artist_Group エンティティの主キーがないということは、 Artist_Group_Participation エンティティの外部キー。
John Carlis と Joseph Maguire による本「Mastering Data Modeling」では、この形状について言及し、「Many-Many Collection Entity」と呼んでおり、非常にまれであると述べていますが、解決方法については述べていません。 -to-many の関係は、RDBMS に直接格納することはできません。これを表現するにはどうすればよいですか?
編集:
誰もが交差テーブルを提案しているように見えますが、それは私の問題ではありません。私は持っています。私の問題は、Artist_Group エントリに含まれるアーティストのグループが既存のグループと同じである場合、順序を無視して、Artist_Group エントリを追加できないという制約を適用することです。Artist_Group の ID を、それを構成するさまざまなアーティストの連結である varchar にすることを考えました。これにより、順序が重要な場合は問題が解決しますが、「エルトン ジョンとビリー ジョエル」の Artist_Group を使用しても追加は妨げられません。 「ビリー・ジョエルとエルトン・ジョン」のグループ。