Ciao,
in realtà la tua soluzione può essere implementata con una sola tabella che ha solo tre campi:
tab_download_stat:
1.id_utente
2.num_download
3.download_date
ogni volta che un utente scarica un file fai la seguente operazione:
codice:
UPDATE tab_download_stat SET num_download = num_download+1
WHERE id_utente =<id_utente_attuale>
AND download_date = <data_attuale>
Poi se il numero di righe uploadate è zero (cioè se l'utente quel giorno non ha ancora fatto download) fai:
codice:
INSERT INTO tab_download_stat VALUES (<id_utente_attuale>, 1, <data_attuale>);
Poi puoi leggere i dati con una unica SELECT GROUP BY che ti tira fuori la lista di download per ogni utente per data o intervallo di date (ancora meglio se ti crei tre VIEW basete su SELECT GROUP BY, una per i download diviso in giorni, una per quello in settimane e una per quello mensile)
Infine una volta al giorno fai girare una
codice:
DELETE FROM tab_download_stat
WHERE download_date < <data_attuale> - 30
in modo da avere sempre e solo l'attività degli ultimi 30 giorni