2016-04-29 17 views
0

これはおそらく多くの人々が遭遇する質問ですが、これまでのところ本当に満足のいく回答は見つかりませんでした。おそらく完全な解決策はありません。異なるエンティティの同じ多対多関係

赤、緑、青、黄などのようなエンティティがたくさんあります... これらのエンティティはすべて共通点がありませんが、エンティティ "これらのエンティティを担当しており、データモデルにこの関係を実装したいと考えています。

したがって、最も自然な解決策は、 RedToUser(外部キーuser_idとred_id)、YellowToUser(外部キーuser_idとyellow_id)などのTo-Many-Relationshipsを作成することです。

これは非常に明確な解決策ですが、私は多くの「色」を持っているので、実際には納得できません。ユーザーとの関係は、私の外来キー「color_id」とは常に同じです。それは何度も何度も繰り返しているような気がする。

このような設計を行うベストプラクティスのソリューションはありますか?

答えて

0

これらの赤、緑、...エンティティはすべて、ユーザーエンティティに対してm:nの関係を持つAttendedObjectという超越番号を持ちます。

このような超越構造物を関係テーブルにマッピングするために、詳細に記載されている異なる方法がある。 https://docs.jboss.org/hibernate/orm/3.5/reference/en/html/inheritance.htmlにあります。あなたのような単純なケースの場合、私は、エンティティのタイプは、ユーザが参加されて伝え弁別で弁別は、赤、緑、などの値をとる

Attendance(id, user_id, object_id, discriminator, ...) 

のようなものをひとつのテーブルを定義し