アプリ版:「スタンプのみでお礼する」機能のリリースについて

今考えているアプリのフローを簡単にまとめると、
①日付をコンボボックスで選択
②分類1,2,3をコンボボックスで選択し、登録する食品を選ぶ(DBの食事テーブルから持ってくる)
③登録ボタンを押し選択した食品をDBに登録
④日付を選択し、ボタンを押すことで、その日付で登録された食品情報を表示

というような流れの処理を行いたいです。
ここで、DBのテーブルをどのように設計すればいいのかわかりません。

まず②の操作を行うために、予め食事テーブルというテーブルを作成する必要があると思います。
1つの食品のデータが持つ属性は次のようにします。
食品の質量、炭水化物量、タンパク質量、脂質量、エネルギー量、分類1、分類2、分類3
分類に関して例を挙げると、分類1:主食, 分類2: 米類、分類3:カレーライスなどが入っています。

④の操作で日付から登録した食品を表示するためには、日付情報と登録された食品情報を属性にもつ登録テーブルが必要だと思います。

このような処理を行いたいとき、どのように食事テーブル、登録テーブルを設計すれば良いでしょうか。

質問内容が分かりにくく申し訳ありません。
わからない点あれば補足いたしますので、よろしくお願いいたします。

A 回答 (2件)

ある程度の正規化をした関係データベースならば



-- テーブル
分類 ( 分類コード, 分類種別, 分類名 )
食品 ( 食品コード, 食品名, ... )
食品分類 ( 食品コード, 分類コード )
きょうの食事 ( 人物コード, 日付, 食品コード )

-- 関係
食品 -(1対n)- きょうの食事
食品 -(1対n)- 食品分類 -(n対1)- 分類

-- 分類3 が カレーライス である食品を並べる
select C.食品コード, C.食品名
from 分類 A
inner join 食品分類 B using (分類コード)
inner join 食品 C using (食品コード)
where A.分類コード = 'CURRY' and A.分類種別 = 3

-- 元旦に食べた食事のカロリーを量る
select sum(B.エネルギー量)
from きょうの食事 A
inner join 食品 B using (食品コード)
where A.日付 = date '2023-01-01'
    • good
    • 0

データーベースと言うのは、利用方法を指定しない、


単なるジャーナルが良いです。
そのほうが、多様な統計に対応できます。

①~④は、一部統計処理を含んでいます。
「食事テーブル」「登録テーブル」が消えたり変わったりしたら
データーも変わる、
これでは、データーベース、とは言えません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!