web-dev-qa-db-ja.com

これら3つのテーブル間の関係をモデル化する方法

これは私の最初のデータベースであり、栄養情報ミールトラッカープログラム用です。 mySqlワークベンチでモデルを作成しましたが、関係が正しいかどうかわかりません。下の画像を参照してください.. Food intake model

私の考えでは、各ユーザーは毎日新しいテーブルを持ち、毎日複数の食事をとることになります。主キーなので、毎日食事番号が1に戻ると思っていました。これは問題になりますか?つまり、同じ番号の食事が複数あるのでしょうか、それともその日と食事番号からそれらを特定できるのでしょうか?もしそうなら、どうすればよいですか?これがこのデータベースを設計するための最良の方法であるかどうかはわかりませんので、助けていただければ幸いです。乾杯。

ブラウンストーン氏のコメントから、この新しいデザインを思いついた。 MEALSのuser_nameをUSERから自動的に入力することは可能ですか? New model

2
Jerry Murphy

個人的にはデザインしないので、常に新しいテーブルを作成する必要がありました。 mealsテーブルのuser_idをすでに追跡しているので、dateの別の列を追加して、dayテーブルを完全に削除します。 date_time属性を主キーにしないことをお勧めします。ただし、同じ日に複数の人が食べたいと思う可能性が高いためです。

また、mealsテーブルには冗長属性user_user_idがあります。これは、すでにuser_idとして含まれているためです。

user_nameフィールドは、mealsの属性であるため、userテーブルに属していません。ただし、次のようにmealsアイテムを取得するために使用されるクエリにuser_nameを含めることができます。

SELECT `date_time`
     , u.`user_id`
     , u.`user_name`
     , `calories`
     , `fat`
     , `carbohydrates`
     , `carbs_which_sugar`
     , `fibre`
     , `protein`
  FROM `meals` AS m
  JOIN `users` AS u ON u.`user_id` = m.`user_id`;
1
Mr.Brownstone