Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    120

    Meglio unire o usare una sola tabella?

    Ciao a tutti!!

    sto studiando una soluzione..

    Volevo loggare ciò che fa l'utente a pezzi di 30 giorni
    File scaricati al giorno a settimana al mese.. (quindi per i giorni avro 30 campi mysql.. settimane 4 e mese 1) e la chiave primaria sarà l'idutente (voglio salvarmi solo il numero dei file scaricati e non i relativi nomi dei file, quindi per ogni utente ho solo UN record).

    Poi voglio anche loggarele pagine che visita al giorno.. a sett. e mese..

    Stesso procedimento..

    Poi una volta al giorno, controllo i record e li azzero in base al giorno.. così da avere uno scambio tra i campi per avere i dati corretti.

    Conviene usare una sola tabella o usarne due separate secondo voi.. potrebbe influire la velocità di lettura su circa 75 campi ?

    Uso mysql su Debian.

    Grazie dell'aiuto!
    Ciao!
    super php

  2. #2
    Secondo me, per dare più flessibilità, devi avere almeno 3 tabelle

    Una tabella per le stat che vuoi avere
    1 visite
    2 download

    una per i "tempi"
    1 giorno
    2 settimana
    3 mese

    una per le relazioni
    id:utente:statistica:tempo:numero
    1 43 1 2 4 (utente 43, tipo visita, periodo settimana, numero 4, quindi l'utente 43 ha fatto 4 visite nella settimana)
    2 87 2 1 54 (l'utente 87 ha scaricato 54 file, oggi)

    In questo modo sei più flessibile e puoi aggiungere facilmente ulteriori statistiche molto velocemente, agendo sulla tabella stat e volendo puoi aumentare a piacere la verbosità, magari inserendo p.e. una statistica addirittura "per ora". Tra l'altro questa struttura ti permette anche di tenere uno storico, se aggiungi un campo alle relazioni (es: "numero_tempo", tipo 7 a indicare il 7° giorno dell'anno se tempo è giorno, 7° settimana oppure 7° mese...).
    Ci sarebbe anche un'altra soluzione, se ti interessa uno storico ma è leggermente più complessa da gestire lato programma.


  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    120
    Giusta come idea.. però quando devo leggere.. non ho un solo record da estrapolare.. diciamo che in lettura perdo più tempo.. (tempo incalcolabile da quanto sia piccolo)

    Io volevo fare tutto in un record, anche usando più tabelle in base la statistica , ma così.. leggo in grande velocità, visto che devo leggere molto spesso, qualsiasi cosa fa l'utente è dettata da queste regole.

    Che poi così facendo potrò avere massimo, una tebella con 5.000 record, e dico massimo, quindi lavorare con 1000 record, non si hanno rallentamenti, anche se mi impegnassi.. però è bello avere più soluzioni da poter attuare..

    Ovviamente grazie per il tuo aiuto.. non avevo pensato al tuo modo.. e chissà quanti altri ne esistono! Bellissimo! La programmazione è stupenda!
    super php

  4. #4
    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


  5. #5
    Non voglio entrare nel merito della struttura dico solo che una data e' composta da anno-mese-giorno in un campo in formato DATE e non da tre campi separati.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.