これは私の最初のデータベースであり、栄養情報ミールトラッカープログラム用です。 mySqlワークベンチでモデルを作成しましたが、関係が正しいかどうかわかりません。下の画像を参照してください..
私の考えでは、各ユーザーは毎日新しいテーブルを持ち、毎日複数の食事をとることになります。主キーなので、毎日食事番号が1に戻ると思っていました。これは問題になりますか?つまり、同じ番号の食事が複数あるのでしょうか、それともその日と食事番号からそれらを特定できるのでしょうか?もしそうなら、どうすればよいですか?これがこのデータベースを設計するための最良の方法であるかどうかはわかりませんので、助けていただければ幸いです。乾杯。
ブラウンストーン氏のコメントから、この新しいデザインを思いついた。 MEALSのuser_nameをUSERから自動的に入力することは可能ですか?
個人的にはデザインしないので、常に新しいテーブルを作成する必要がありました。 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`;