PDA

View Full Version : [MySql] Consiglio per organizzare un database


lore_83
06-05-2008, 13:24
Ciao.

Il database attualmente è composto dalle tabelle:

Citta
Regioni
Paesi
Continenti

Di ogni record ho le coordinate (latitudine, longitudine), secondo voi vanno inserite in una tabella esterna di questo tipo:


coordinates_id INTEGER AUTO_INCREMENT PRIMARY KEY,
latitude FLOAT(10,6) NOT NULL,
longitude FLOAT(6,6) NOT NULL,
city_id INTEGER DEFAULT 0,
region_id INTEGER DEFAULT 0,
country_id INTEGER DEFAULT 0,
continent_id INTEGER DEFAULT 0,
FOREIGN KEY (city_id) REFERENCES Cities (city_id),
FOREIGN KEY (region_id) REFERENCES Region (region_id),
FOREIGN KEY (country_id) REFERENCES Countries (country_id),
FOREIGN KEY (continent_id) REFERENCES Continents (continent_id),

Oppure le coordinate geografiche vanno inserite nelle tabelle Città, Regione ecc.?

Grazie.

khelidan1980
06-05-2008, 14:26
secondo me va bene fare una tabella a parte ma non capisco perchè non usi solo una foreign key verso città,le altre a che servono?Credo che nella tabella città ci siano già la sua chiave esterna verso la regione no?

banryu79
06-05-2008, 14:44
Immagino che le coordinate(latitudine, longitudine) siano riferite solo alle Città, giusto?
Cioè, Regione, Paese e Continente non hanno delle coordinate associate?

In tal caso quoto khelidan, non ti basta associare le coordinate alle Città?

lore_83
07-05-2008, 00:13
Ciao.

Purtroppo anche le regioni e le nazioni hanno le loro coordinate. Quindi possono esserci valori nulli per city_id nella tabella coordinate. Anche se non credo che avrò bisogno delle coordinate di regioni e nazioni a dire il vero...

Eventualmente non potrei utilizzare come chiave primaria direttamente city_id (non come AUTO_INCREMENT)?

E se volessi anche aggiungere le coordinate di alcuni indirizzi, sarebbe il caso di fare un'altra tabella ancora, oppure vanno inseriti in questa?

Grazie comunque per l'aiuto.