Mysql
 sql >> Database >  >> RDS >> Mysql

Il modo migliore con le tabelle di relazione

Il modo in cui lo hai è il più ottimale per quanto riguarda i vincoli di tempo. Certo, occupa più spazio, ma fa parte del compromesso spazio-tempo - Se vuoi essere più veloce, usi più spazio; se vuoi usare meno spazio, funzionerà più lentamente (in media).

Pensa anche al futuro. In questo momento, probabilmente stai selezionando i paesi per ciascun utente, ma aspetta. Grazie alla magia dello scope creep, un giorno la tua applicazione dovrà selezionare tutti gli utenti in un determinato paese, a quel punto la scansione del campo "PAESE" di ciascun utente per trovare corrispondenze sarà incredibilmente lenta, invece di tornare indietro attraverso il USER_COUNTRY_REL come potresti fare adesso.

In generale, per una correlazione 1-a-1 o 1-a-molti, puoi collegare tramite chiave esterna. Per una correlazione molti-a-molti, vuoi avere una tabella di relazioni tra i due. Questo scenario è una relazione molti-a-molti, poiché ogni utente ha più paesi e ogni paese ha più utenti.