@Tigre
Grazie inifnite per la tua risposta e per il tuo interessamento. Per diverse ragioni (programmabilità, vicinanza a Oracle, affidabilità ma soprattutto sicurezza) ho scelto PotgreSQL a mySql. Siccome:
1) Un sistema così creato mi costringerebbe ad aggiornarne quotidianamente le suburb distribuendo quantità di dati che paradossalmente sarebbero notevolmente superiori a quelli generati dalla stessa applicazione nel corso della sua vita;
2) Denormalizzare significherebbe aumentare ulteriormente le dimensioni della base dati;
3) Pur aggiornando le suburb anche ogni mese, quotidianamente sarebbero inseriti dati errati o obsoleti (pensa che i servizi che distribuiscono tali informazioni, servizi molto costosi ed altamente professionali, distribuiscono gli aggiornamenti delle suburb mondiali con cadenza impressionante, pensa su milioni di suburbs quante ogni giorno cambiano nome o sono aggregate ad altre o create);
4) Una ricerca su 3-4 milioni di record anche con il motore da te indicato impiegherebbe diversi secondi a completarsi, vista anche la join con le tabelle countries e states (a meno di non denormalizzare e trovarmi con una quantità di dati superflua e ridondante molto grande;
Ho perciò risolto come segue, e mi piacerebbe un tuo qualificato parere:
1) Ho normalizato countries e states, mettendo le loro liste in due apposite tabelle collegate con chiave numerica;
2) Nel gestionale, ho lasciato il campo suburb come semplice testo (e testo di conseguenza è rimasto anche il campo cap o meglio postcode) in modo che l'utente possa inserirci ciò che vuole;
@albgen
Albgen, è proprio quello che ho intenzione di fare, fermandomi al secondo step; quelli che sarebbero diversi milioni sono proprio le frazioni mentre invece già ora il mio sistema include le città. Per chiarezza ecco quello che intendo (nel mio db i nomi sono in inglese visto che mi hanno chiesto la massima accuratezza formale):
1) COUNTRY: nazioni. Possono essere USA, Italy, France ecc
2) STATES: stati in senso lato. Nel caso degli USA sono Alabama ecc nel caso dell'Italia sono le provincie, nel caso della Svizzera i cantoni ecc. Ovvero, come in tutti i maggiori software gestionali, corrispondono al secondo livello aggregativo geografico di una country.
3) SUBURB: Cittadine in senso stretto. Negli USA sono new york city, Springfiedl ecc, in Italia ad esempio Casal Pusterlengo, in Svizzera Berna città ecc.