Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zaprojektowanie bazy. Dylemat
Forum PHP.pl > Forum > PHP
qjam
Witam.

Potrzebuję zaprojektować bazę danych. Od 2-3 lat nie siedziałem w PHP i sporo zapomniałem... włącznie z odwołaniami do bazy tongue.gif Ale nie w tym rzecz. Projektuje stronę na której będą do rozwiązywania testy będzie to wyglądało tak.

Strona ma kategorie i podkategorie:
+ sport
- piłka nożna
- siatkówka
+ muzyka
- hip-hop
- rock

Użytkownik wchodzi w kategorie, wyświetla się lista testów. Użytkownik wybiera test, rozwiązuje, liczone są pkt i dodawane do jego uzbieranych punktów. No i teraz pojawia się dylemat. W jaki sposób zabronić użytkownikowi, a raczej uniemożliwić ponownego rozwiązywania tego samego testu? Po prostu jeden test, jedno podejście.

Jak to widzicie?
nospor
Tabela dodatkowa
TEST_USER z polami
ID_TEST
ID_USER

Jak user wypelni test to wkładasz rekord do tej tabeli.
A jak chce wypełniać dany test to patrzysz czy już istnieje jego rekord dla tego testu czy nie
Michael2318
W bazie będziesz miał ID poszczegółnych testów, tak samo w tabeli z userami będziesz miał ID wszystkich userów. Przykładowe rozwiązanie:

tabela `testy_rozwiazane`:
Cytat
| USER_ID | TEST_ID |


i jako user_id podajesz id usera, ktory dany test rozwiązał, a jako test_id - podajesz id testu, który był rozwiązywany.
Sprawdzanie czy dany user o id=13 już rozwiązywał test o id=15:
  1. SELECT COUN(*) AS counter FROM `testy_rozwiazane` WHERE user_id = 13 AND test_id = 15;

Jeśli counter zwróci liczbę większą niż 0 to dany user rozwiązywał juz dany test wink.gif
Pamiętaj, aby nadać index'y na oby dwa pola.
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.