私は、ユーザーがカスタム ミールを追加できるレシピ関連のサイトを作成しようとしています。食事の中に、食品を追加して、食品の成分を一覧表示できます。例えば:
Meal = Dinner
Food = Hamburger
Ingredient = Tomato
ユーザーは、事前に入力された食品のデータベースから食品を選択できます。また、中央の成分データベースから成分を追加することもできます。そのため、サイトのすべてのユーザーが同じ食品と食材の ID を使用できます。
私が抱えている課題は、food_has_ingredients テーブルが何らかの形でユーザーにリンクされていることを確認することです。下の図では、食事がユーザーに関連付けられています。食品と食材の ID は複数のユーザーが再利用できるため、これらの ID に頼ってどのユーザーが食品に食材を追加したかを判断することはできません。
次の例を見てください。
User 1 adds the food "hamburger" (id 10) to the meal_has_food table, then associates the ingredients "ketchup" (id 20) to the food_has_ingredients table.
User 2 adds the food "hamburger" (id 10) to the meal_has_food table, then associates the ingredients "pickles" (id 21) to the food_has_ingredients table.
誰かが食事のハンバーガー (10) からすべての材料を取得し、それを 1 行に限定して検索を行うと、常に最初の人のエントリが表示されます。そのため、食事 ID X に属するハンバーガーの材料を取得すると言うことができるように、食事 ID を外部キーとして関連付けました。
それが理にかなっているのか、それとももっと良い方法があるのか 知りたいです。
大まかなデータベーススキーマは次のとおりです。