Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zaprojektowanie bazy. Dylemat
qjam
post
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 1
Dołączył: 31.07.2011

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Michael2318
post
Post #3





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Michael2318 14.04.2013, 12:10:56
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 05:03