タイトルが抽象的になってしまい申し訳ありません。具体的に何がしたいのかというと
- Userはモデル[A, B, C]をそれぞれ複数持つ(User-A: 一対多)
- モデル[A, B, C]はそれぞれモデルDを複数持つ(A-D: 多対多)
ここでUserが自身の持つモデル[A, B, C]に紐付けられたDをまとめて更新するといった処理を加えたいのですが、都合上DのテーブルにUserの外部キーを直接もたせることが適していません(UserとDは多対多の方が適切であるのと、ライブラリの問題に由来します)。
そこでUserにモデル[A, B, C]が持つモデルDの和集合をもたせたいのですが、
- DとUserの中間テーブルを作成する
- [A, B, C]とDのそれぞれの中間テーブルにUserの外部キーをもたせる
1の方法はテーブル自体はシンプルになりますが更新の際の処理が複雑になってしまうので、2の方法が妥当なのではないかと考えています。しかし一つのテーブルに3つ外部キーをもたせるのは何となくですが違和感を感じます。
この場合2の方法は適切でしょうか?ご意見のほどお願いします。
質問が抽象的でよく分かりませんが、User と A が一対多なら、A そのものに user_id を持たせればよいのでは (B, C も同様)。
でも、「Userが自身の持つモデル[A, B, C]に紐付けられたDをまとめて更新する」の意味がよく分かりません。
あなたの回答
tips
プレビュー