Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zliczanie ilości udziałów w losowaniach.
Forum PHP.pl > Forum > PHP
ŁukaszŁ.
Cześć. Chyba złapałem zawieszkę, ale mam pytanie do was, chciałbym napisać na zaliczenie skrypt, polega on na tym, że: jest sobie użytkownik, użytkownik bierze udział w losowaniu nagród oraz może brać udział w wielu losowaniach. Chciałem to zrobić tak, żeby relacją połączyć tabele losowania i użytkownicy, w użytkownikach znajdowałby się obcy klucz o kolumnie id_losowania i on przechowywałby id danego losowania. Ale to rozwiązuje problem tylko dla jednego losowania, natomiast w sytuacji, w której chciałbym przechowywać więcej konkursów musiałbym tworzyć nową kolumnę w tabeli użytkownicy, a nie wiem czy to dobre rozwiązanie oraz czy wydajne, poza tym, jeżeli miałbym 40 konkursów to tabela użytkownicy miałaby przynajmniej 44 kolumny, wliczając w to id_użytkowniak, imie , nazwisko, punkty. Ma ktoś jakąś radę na ten zawrót głowy?
styryl
Podziel to na 3 tabele użytkownicy, konkursy i losowania, w tabeli losowania trzymaj id użytkownika i id konkursu w którym użytkownik brał udział.
ŁukaszŁ.
To sprytne, tak myślałem, że mam małą zaćmę smile.gif Dziękuję Ci bardzo za pomoc, a jak uważasz, czy to będzie wydajne rozwiązanie? Po szczerze mówiąc inne rozwiązanie jakie przyszło mi do głowy to w momencie tworzenia nowego konkursu do tabeli użytkownicy dodaje nową kolumnę oraz w momencie usunięcia losowania/konkursu kolumna automatycznie się usuwa. Ale to chyba będzie mniej wydajne niż Twoje rozwiązanie, dobrze myślę ? smile.gif
styryl
Jak założysz odpowiednio indexy, klucze to będzie to bardzo wydajne ;]. Dodawania i usuwanie kolumn nie ma najmniejszego sensu i nie szedłbym w tą stronę. Poczytaj jeszcze trochę w tym temacie a na pewno rozwiejesz swoje wątpliwości.
ŁukaszŁ.
To w sumie wyglądałoby tak, że user posiada auto increment id jako PK oraz konkurs posiada id auto_increment jako PK , a encją słabą staje się wtedy losowanie, które przechowuje id losowania, oraz FK jako id usera oraz FK id konkursu a zakładając index tworzę ALTER TABLE losowanie ADD INDEX (id_user),ALTER TABLE losowanie ADD INDEX (id_konkursu)

Dobrze myślę ? smile.gif
styryl
Dokładnie tak, jeżeli zakładasz to na siliniku InnoDB.
ŁukaszŁ.
Na MySQL będę pracował, więc zobaczę jak tam się zakłada indeksy. Ale niesamowicie Ci dziękuję za pomoc!

Pozdro smile.gif
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.