Jak te dane podzielić?

0

Mam taki problem. Piszę hobbystycznie aplikację do zarządzania dietą/cwiczeniami, chciałbym zaczyc trzymac te dane w bazie, ale nie wiem jak je rozdzilic do poszczególnych tabel.
Dane nazwijmy je stałe to np: login, haslo, wiek, waga, wzrost
Pozniej są dane które obliczam czyli: dzienne zapotrzebowanie kaloryczne, ilosc białka/wegli/tłuszczy.
I na koniec najtrudniejsze. Mam gotową baze produktów ktora wyglada tak:
produkt | ilosc kcal | ilosc bialka | ilosc tluszczy | ilosc wegli
User bedzie mógł sobie skoponować diete z dostępnych produktów/wymieniac je itp.

Jak najlepiej rozdzilić te dane? na ile tabel?

0

Tabela User będzie trzymać użytkowników aplikacji
Tabelę Produkt już masz.
Tabela Dieta w której będzie np nazwa diety, użytkownik, data dodania itp.
Tabela DietaPozycja - produkty w diecie.
To tak na szybko.

0
MiL napisał(a):

Tabela User będzie trzymać użytkowników aplikacji
Tabelę Produkt już masz.
Tabela Dieta w której będzie np nazwa diety, użytkownik, data dodania itp.
Tabela DietaPozycja - produkty w diecie.
To tak na szybko.

takie cos ma sens?

user image

0

W przypadku diety, waga będzie się zmieniać, wzrost już nie bardzo. Odseparowałbym te dane i dodał np daty ważenia się tych osób. No i mam nadzieję że przedstawiony diagram to tylko taki koncept - bo widzę pomieszane nazewnictwo PL/ENG. Typy kolumn też do poprawy lekkiej - wzrost dałbym w cm jako integer'a, wiek Date itp itd.

0

W tego typu aplikacjach użytkownicy zazwyczaj aktualizują swoje dane w miarę postępów, wiec takie dane jak waga, czy BMI powinny być w oddzielnej tabeli, z data dodania rekordu.
Nie znam się na dietach, ale chyba zapotrzebowanie na kcal, białka, tłuszcze, etc tez jest dość dynamiczne (zmienia się w czasie) i zależy od kilku czynników.

I jeszcze w tabeli Produkt brakuje określenia dla jakiej wagi (objętości?) produktu podane zostały kcal (np 100g produktu to 230kcal)

0

Mam na obecną chwilę coś co wygląda tak. Teraz pytanie w jaki sposób przechowywać dane na temat tego co user zje.
Powiedzmy ze dziś na pierwszy posiłek zjadł twaróg i jajka, czyli produkty o ID 34 i 77, a w kolejnym posiłku zjadł banana i tunczyka czyli produkty o ID 12 i 187. Chodzi o to żeby w trakcie dnia móc dopisywać kolejne produkty i na bieżąco wyliczac spożycie kalorii i makroskładników w kazdym dniu.

user image

1

Przy takiej strukturze nie uda Ci się tego prawidłowo zapisać. Bo samo 'zjedzenie' kalorii to nie zapis: user+data+produkt, ale user+data+produkt+ilość. Liczba kalorii jest zawarta w określonej ilości produktu (w przeliczeniu na gramy, sztuki, litry, cokolwiek). Myślę, ze podobnie jest z pozostałymi składowymi.

0

Teraz pytanie w jaki sposób przechowywać dane na temat tego co user zje.
Powiedzmy ze dziś na pierwszy posiłek zjadł twaróg i jajka, czyli produkty o ID 34 i 77, a w kolejnym posiłku zjadł banana i tunczyka czyli produkty o ID 12 i 187

Moze cos takiego?
user image

0

Jak najbardziej. Pomysł wymyślony na ławce w parku więc mogą być błędy. Ogólnie myślę też o wzroście bo dieta nie jest tylko dla użytkowników którzy już nie rosną. W niektórych przypadkach wzrost również będzie informacja dynamiczna. A czasem nawet i informacja najważniejsza. Dieta dla osób właśnie z małym wzrostem. Też bym to rozwazyl.

0
Złoty Pomidor napisał(a):

Jak najbardziej. Pomysł wymyślony na ławce w parku więc mogą być błędy. Ogólnie myślę też o wzroście bo dieta nie jest tylko dla użytkowników którzy już nie rosną. W niektórych przypadkach wzrost również będzie informacja dynamiczna. A czasem nawet i informacja najważniejsza. Dieta dla osób właśnie z małym wzrostem. Też bym to rozwazyl.

a jak zapisac w bazie np. taka sytuacje gdy sniadanie skłąda się z 5 produktów.
W ten sposob:
id | data | posiłek | produkt
1 12.02.16 sniadanie platki owsiane
1 12.02.16 sniadanie jajka
1 12.02.16 sniadanie orzechy

czy tak:
id | data | posiłek | produkt
1 12.02.16 sniadanie platki owsiane, jajka, orzechy

0

Nadal źle, poczytaj o normalizacji tabel. 1,2,3 PN itp itd. Kolumna posiłek powinna nazywać się type. Rodzaje posiłków, jak i produkty powinny być w oddzielnych tabelach, bo inaczej nie dasz rady wyliczyc ich kalorycznosci. Tabela "meal" powinna zawierać id/date/meal_type/weight/quantity/quantity_type . Chociaż to piszę od razu z głowy, to nie wiem czy to będzie jakoś super-optymalne rozwiązanie (te z tabelą)

1 użytkowników online, w tym zalogowanych: 0, gości: 1