Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] rozwiązanie bazy danych
Forum PHP.pl > Forum > Przedszkole
sebamasta
mam taki problem
mam do zrobienia skrypt obsługujący coś podobnego do dzienniczka ucznia, problem polega na tym że przedmioty każdego ucznia są różne, jak zaprojektować taką baze danych mój pierwszy pomysł to taki aby admin mógł z poziomu php dodawać tabelę z każdym przedmiotem lub ją usuwać, ponieważ przedmioty mogą pojawiać się nowe lub stare znikać. tylko pojawia się problem bo tych tabel stworze niewiadomo ile, skrypt bedzie dzialal na kilka osob wiec nie bedzie problemu z dzialaniem ale bedzie bardzo zaśmiecony.

Drugi pomysł to taki tylko nie sprawdzałem czy to realne aby utworzyć osobną tabeli z nazwami przedmiotów i w zapytaniu mysql zrobić odwołania do danej oceny w dzienniku

potem ma się to wyświetlać mniej więcej tak:

|nazwa przedmiotu|średnia| 11.11.09 | 12.11.09 | itd kolejne daty zajec
|polski |srednia| 5 | 4 | itd kolejne
|kolejny przedmiot i oceny......

Może znacie jakieś inne sposoby bo mi brakuje pomysłów tylko proszę o wyrozumiałośc jeżeli to zbyt banalny problem
Foxx
Pierwszy pomysł - arghh... Drugi lepszy ale tylko w połowie. Może po prostu zrób tak:

przedmioty
id | nazwa | opis | ...

uczniowie
id | imie | nazwisko | ...

oceny
id | id_ucznia | id_przedmiotu | ocena | data
sebamasta
no o czyms podobnym myślałem, trochę mi to jeszcze rozjaśniłeś ale jeszcze jedno, dodawanie danych ma polegać na tym że ma się wyświetlać lista z przedmiotami ucznia a w tym wypadku to chyba nie możliwe, ew wyświetlałyby sie wszystkie przedmioty lub lista wyboru a takie rozwiązanie raczej mi nie odpowiada.
Foxx
No to dodaj jeszcze jedną tabelę, powiedzmy:

przedmioty_ucznia
id | id_ucznia | id_przedmiotu
kefirek
uczniowie
id | imie | nazwisko | przedmity_id |

I daj w przedmioty_id tak 1,4,5 id przedmitoów oddzielaj przecinkiem

Albo tak jak powiedział kolega Foxx ale wtedy tabela bedzie miała dużo rekordów

np

id | id_ucznia | id_przedmiotu
1 | 1 | 2
2| 1 | 5
3 | 2 | 7
4| 2 | 5

Czyli id ucznia bedzie sie potwarzać tyle razy ile ma przedmitów ale raczej troche to nie wydajne
erix
~kefirek, a relacyjność baz danych...? :|
sebamasta
to mam teraz jeszcze jedno pytanie, już chyba za dużo główkuje, jak w takim przypadku policzyć średnią w php dla danego ucznia z danego przedmiotu?

pobrać z mysql dane dla danego ucznia i przedmiotu i tak robić za każdym razem tzn dla każdego przedmiotu każdego ucznia?
megawebmaster
Właśnie będzie o wiele wydajniejsze od kolejnej obsługi i wysyłania zapytania w PHP (explode i zrobienie zapytania o przedmioty). Poza tym robiąc takie pola w INT'ach o stałej przecież długości to ta tabela będzie najszybsza w całym systemie winksmiley.jpg

EDIT: @up - tak, musisz pobierać oceny wg. id_przedmiotu i tak dla każdego przedmiotu.
PanGuzol
Przy budowie bazy danych zaproponowanej przez Foxxa
  1. SELECT avg(ocena) AS srednia FROM oceny WHERE ID_przedmiotu=$id_przedmiotu AND id_ucznia=$id_ucznia;
sebamasta
dzięki wielkie na razie nie mam pytań jeżeli się pojawia będę prosił dalej o pomoc
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.