Mostrom
30.08.2010, 17:31:25
Witam! PHP trochę już umiem, MySQL trochę też. Postanowiłem zrobić coś w rodzaju dziennika szkolnego, tylko że internetowego. Każdy uczeń po zalogowaniu widzi swoje oceny. Nie mam tylko pomysłu jak to zrobić. Co prawda mam program w zrobiony w Excelu, który działa, ale problem jest z udostępnieniem tych danych poszczególnym osobom. Dziennik ten ma zawierać dane z 2 przedmiotów, które oczywiście dzielą się na dwa semestry. Oceny wewnątrz tych semestrów nie są takie proste jak w zwykłych szkołach, sześciostopniowa skala, tylko są to raczej punkty, które dopiero pod koniec semestru przeliczane są na oceny. Dlatego łatwo jest to zrobić w Excelu. Uff tyle chyba wystarczy z opisu programu.
Koncepcja tworzenia bazy danych była taka:
-3 Tabele:
- USERS: id, Loginy, Hasła, Imiona, Nazwiska
- Przedmiot 1:
-Semestr I:
-punkty
-Semestr II:
-punkty
- Przedmiot 2:
-Semestr I:
-punkty
-Semestr II:
-punkty
Czy da się tabelę podzielić na 2 częsci, coś w stylu 'scal komórki'?
Czy w ogóle da się to zrobić w mysql?
piotr94
30.08.2010, 17:48:34
tak, robisz sobie właściwie jedną tabelę:
Uczniowe:
id
login
password (md5)
imie
nazwisko
przedmiot_1_sem_1
przedmiot_1_sem_2
przedmiot_2_sem_2
przedmiot_2_sem_1
__
lub zamiast 4-rech ostatnich tworzysz 2 tabele
przedmiotx:
id_usera
sem1_pkt
sem2_pkt
__
do scalania używaj zapytań relacyjnych np.:
SELECT * FROM users,przedmiot1 WHERE przedmiot1.id_usera=users.id AND users.id=1
mortus
30.08.2010, 18:11:25
Przecież posiadanie jednej tak rozbudowanej tabeli (w przypadku np. 10 przedmiotów) jak i tworzenie osobnych tabel dla każdego przedmiotu jest bez sensu. Musisz mieć osobną tabelę do obsługi użytkowników, osobną tabelę na listę przedmiotów, osobną tabelę dla ocen i nie wiem, czy to wystarczy. Proponuję:
użytkownicy (id, login, hasło, email, imię, nazwisko [, pozostałe informacje]),
przedmioty (id, nazwa, semestr),
punkty (id, id użytkownika, id przedmiotu, punkty).
Zastanowiłbym się jeszcze nad istotą (rolą) semestru, bo to można na wiele sposobów interpretować.
Podkreślam, że to jest tylko moja "szybka" propozycja i zastanowiłbym się nad tym jeszcze kilka razy.
piotr94
31.08.2010, 08:55:30
mortus, Twoja propozycja jest sensowna, aczkolwiek gdy Mostrom chce mieć tylko 2 przedmioty to nie ma sensu tak komplikować systemu, dla większej liczby przedmiotów to jest konieczne i zrobiłbym to tak samo jak Ty proponujesz
Mostrom
31.08.2010, 11:10:54
Zastanawiałem się nad zrobieniem 1000000 tabel, bo jak powiedziałem ten system oceniania jest bardzo skomplikowany. W semestrze muszą się znaleźć 4 pukty za prace klasowe i oprócz tego punkty za obecność. Każde wstawienie punktu łączy się ze wstawieniem dwóch pól: punkty jakie dostał uczeń i maksymalna liczba punktów, np 20/20. Z obecnością jest tak samo: 5/5 a czasem uczeń może dostać 8/5. Sam nie wiem co będzie lepsze..

Mam tabelę użytkowników, w których są loginy, hasła imiona i nazwiska. Jak połączyć imiona i nazwiska z drugą tabelą, żeby wpisać im oceny??
mortus
31.08.2010, 11:39:41
No to wystarczy zmodyfikować trochę mój układ tabel:
użytkownicy (id, login, hasło, email, imię, nazwisko [, pozostałe informacje]),
przedmioty (id, nazwa, semestr),
rodzaje_punktów (id, rodzaj, maksymalna liczba punktów),
punkty (id, id użytkownika, id przedmiotu, id rodzaju, punkty),
Rodzaj to inaczej "to za co uczeń dostał punkty" i znalazłyby się tutaj obecność, klasówka 1, klasówka 2, itd... Można by było umieścić tutaj również maksymalną liczbę punktów, jaką za daną klasówkę może dostać każdy uczeń, bo określanie tej maksymalnej liczby punktów osobno dla każdego ucznia mija się z celem, no chyba, że w szkole jest jakiś system "pupilków".
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.