sebamasta
2.03.2009, 20:40:56
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
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
2.03.2009, 20:55:29
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.
No to dodaj jeszcze jedną tabelę, powiedzmy:
przedmioty_ucznia
id | id_ucznia | id_przedmiotu
kefirek
2.03.2009, 20:59:36
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
~kefirek, a relacyjność baz danych...? :|
sebamasta
2.03.2009, 21:27:37
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
2.03.2009, 21:28:25
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

EDIT: @up - tak, musisz pobierać oceny wg. id_przedmiotu i tak dla każdego przedmiotu.
PanGuzol
2.03.2009, 21:31:22
Przy budowie bazy danych zaproponowanej przez Foxxa
SELECT avg(ocena) AS srednia FROM oceny WHERE ID_przedmiotu=$id_przedmiotu AND id_ucznia=$id_ucznia;
sebamasta
2.03.2009, 21:35:17
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.