Ciao a tutti!![]()
Vi scrivo qui per chiedere un'informazione più di carattere teorico che pratico.
Attualmente sto progettando una community online in cui gli utenti possono interagire attraverso un forum.
Nella progettazione del database ho creato una tabella "users" che memorizza gli username, password, email, la data dell'ultimo login e l'url dell'avatar degli utenti. Le informazioni di questa tabella sono dati pubblici che saranno sempre visibili in ogni intervento nel forum che fa l'utente (ogni post nel forum di un utente sarà accompagnato dal suo username, email, avatar ed email).
A fianco a questa tabella sto valutando se crearne un'altra, denominata "user_profiles", che dovrà immagazzinare delle informazioni a riguardo di questi utenti, informazioni quali per esempio la data di nascita, residenza, sesso, interessi, hobby ecc... Queste sono invece informazioni che saranno consultabili solo visitando il profilo dell'utente, praticamente cliccando sul suo nickname.
D'un lato penso che le informazioni possano stare tutte nella tabella users perché sono dati che riguardano un unico utente (sicuramente non esisterà più di un utente che avrà gli stessi hobby, residenza ecc...), dall'altra parte si tratta di dati che verranno richiamati con una frequenza minima rispetto alla normale consultazione di una pagina del forum, per cui inserirli nella stessa tabella con dei dati molto più richiesti non farebbe che appensantire la tabella.
Attualmente sono più propenso nel creare la tabella "user_profiles" in relazione 1:1 con la "users", però vi sono alcuni punti che non mi sono chiari:
[list=1][*]Inserendo i dati che vi avevo presentato prima nella stessa tabella degli utenti, questa avrà un calo di prestazioni percettibile ? (anche considerando che i dati extra sono quasi tutti dei varchar ?)[*]Nel caso in cui invece così non fosse, dovrò aggiungere degli indici particolari per gestire il tutto?[*]Considerando che do più priorità alla velocità di risposta del database rispetto alla dimensione occupata, quale alternativa mi converrebbe ? [*]A voi, in che situazione è capitato di utilizzare la relazione 1:1 nella struttura di una database? (sono curioso)[/list=1]
Spero che mi sappiate dire la vostra su questo argomento, non sono molto pratico di ottimizzazioni ma ci sto un po smanettando![]()