Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > it.comp.www.php > #22522 > unrolled thread
| Started by | ^Bart <gabriele1NOSPAM@hotmail.com> |
|---|---|
| First post | 2019-01-26 22:30 +0100 |
| Last post | 2019-01-27 19:36 +0100 |
| Articles | 5 — 3 participants |
Back to article view | Back to it.comp.www.php
[OT] MySql/MariaDB e foreign keys ^Bart <gabriele1NOSPAM@hotmail.com> - 2019-01-26 22:30 +0100
Re: [OT] MySql/MariaDB e foreign keys Leonardo Serni <lserni@gmail.com> - 2019-01-27 00:22 +0100
Re: [OT] MySql/MariaDB e foreign keys ^Bart <gabriele1NOSPAM@hotmail.com> - 2019-01-27 10:55 +0100
Re: [OT] MySql/MariaDB e foreign keys bramante <bramante@yopmail.com> - 2019-01-27 14:09 +0100
Re: [OT] MySql/MariaDB e foreign keys ^Bart <gabriele1NOSPAM@hotmail.com> - 2019-01-27 19:36 +0100
| From | ^Bart <gabriele1NOSPAM@hotmail.com> |
|---|---|
| Date | 2019-01-26 22:30 +0100 |
| Subject | [OT] MySql/MariaDB e foreign keys |
| Message-ID | <q2ijh6$15o2$1@gioia.aioe.org> |
Salve, sto studiando SQL ed ho un dubbio sulle foreign keys, ipotizziamo di avere tre tabelle, una tabella user, una country ed una city: country ---------- id (Primary key) country city ---------- id (Primary key) city user ---------- id name FK_country FK_city Il mio dubbio è il seguente, nella tabella user nello specifico nelle due FK bisognerà memorizzare l'id numerico di country e city o bisognerà far scrivere direttamente il nome reale della città e della nazione? Anche perchè nel momento in cui si dovessero richiamare i dati della tabella user sarebbe meglio che ci fosse già il nome e non l'id altrimenti bisognerebbe fare query su query no? Forse non dovrei fare primary key l'id ma il nome... Saluti. ^Bart
[toc] | [next] | [standalone]
| From | Leonardo Serni <lserni@gmail.com> |
|---|---|
| Date | 2019-01-27 00:22 +0100 |
| Message-ID | <pmqp4etf4g4mnagjev67kge6s06jvv45tk@L.Serni> |
| In reply to | #22522 |
On Sat, 26 Jan 2019 22:30:16 +0100, ^Bart <gabriele1NOSPAM@hotmail.com> wrote: >sto studiando SQL ed ho un dubbio sulle foreign keys, ipotizziamo di >avere tre tabelle, una tabella user, una country ed una city: > >country >---------- >id (Primary key) >country > >city >---------- >id (Primary key) >city E' possibile che una stessa città sia in più nazioni? Perché se no, ti conviene mettere l'id della country dentro city. Quella città sarà poi collegata sempre e solo a una nazione. >Il mio dubbio è il seguente, nella tabella user nello specifico nelle >due FK bisognerà memorizzare l'id numerico di country e city o bisognerà >far scrivere direttamente il nome reale della città e della nazione? L'ID (non è proprio indispensabile, ma IMHO è così tanto meglio che...) >Anche perchè nel momento in cui si dovessero richiamare i dati della >tabella user sarebbe meglio che ci fosse già il nome e non l'id >altrimenti bisognerebbe fare query su query no? In quel caso si fa una JOIN. SELECT user.name, city.name, country.name FROM user JOIN city ON (users.city_id = city.id) JOIN country ON (city.country_id = country.id) >Forse non dovrei fare primary key l'id ma il nome... Occupi più spazio, è meno efficiente e ti ritrovi nei casini appena in quel database dovrai registrare Florence (negli USA ce ne sono 3). Leonardo -- "You all presumably know why" :-) :-(
[toc] | [prev] | [next] | [standalone]
| From | ^Bart <gabriele1NOSPAM@hotmail.com> |
|---|---|
| Date | 2019-01-27 10:55 +0100 |
| Message-ID | <q2jv77$109u$1@gioia.aioe.org> |
| In reply to | #22523 |
> E' possibile che una stessa città sia in più nazioni? Perché se no, ti > conviene mettere l'id della country dentro city. Quella città sarà poi > collegata sempre e solo a una nazione. Purtropppo potrebbero esserci dei casi di omonimia quindi stesso nome della città nella stessa nazione e stesso nome della città anche in nazioni diverse quindi pensavo di risolvere nel seguente modo: city_italy ----------------- id nome provincia regione La mia idea è quella di fare una tabella per ogni nazione, dove mi interessa avere utenti, contenente tutti i nomi della città di quella nazione, in rete ci sono archivi già fatti ed in pochi secondi si riuscirebbe a popolarla importando un file *.csv! > L'ID (non è proprio indispensabile, ma IMHO è così tanto meglio che...) E' oramai una scuola di pensiero comune! :) > In quel caso si fa una JOIN. > > SELECT user.name, city.name, country.name > FROM user > JOIN city ON (users.city_id = city.id) > JOIN country ON (city.country_id = country.id) Perfetto! :) > Occupi più spazio, è meno efficiente e ti ritrovi nei casini appena in > quel database dovrai registrare Florence (negli USA ce ne sono 3). Giustissimo! > Leonardo Ti ringrazio per la risposta! Saluti! ^Bart
[toc] | [prev] | [next] | [standalone]
| From | bramante <bramante@yopmail.com> |
|---|---|
| Date | 2019-01-27 14:09 +0100 |
| Message-ID | <q2kaj2$kgt$1@gioia.aioe.org> |
| In reply to | #22522 |
Il 26/01/19 22:30, ^Bart ha scritto:
> Salve,
>
> sto studiando SQL ed ho un dubbio sulle foreign keys, ipotizziamo di
> avere tre tabelle, una tabella user, una country ed una city:
>
> country
> ----------
> id (Primary key)
> country
>
> city
> ----------
> id (Primary key)
> city
>
> user
> ----------
> id
> name
> FK_country
> FK_city
>
> Il mio dubbio è il seguente, nella tabella user nello specifico nelle
> due FK bisognerà memorizzare l'id numerico di country e city o bisognerà
> far scrivere direttamente il nome reale della città e della nazione?
>
> Anche perchè nel momento in cui si dovessero richiamare i dati della
> tabella user sarebbe meglio che ci fosse già il nome e non l'id
> altrimenti bisognerebbe fare query su query no?
>
> Forse non dovrei fare primary key l'id ma il nome...
>
> Saluti.
> ^Bart
usa sempre una chiave, come FK, in questo caso un ID va bene,
rispetto a Serni preferisco le join implicite :)
SELECT a.name
, b.city
, c.country
from user a
, city b
, country c
where a.fk_city = b.b.id
and a.fk_country = c.id
(anche se a livello di performance in query complesse è meglio le join
espicite)
ma la vedo difficile trovare un database (se non a pagamento) di tutte
le città del mondo aggiornate
se ti interessa solo l'italia è facile, se vuoi te lo posso passare
(regione, citta e provincia)
Saluti
[toc] | [prev] | [next] | [standalone]
| From | ^Bart <gabriele1NOSPAM@hotmail.com> |
|---|---|
| Date | 2019-01-27 19:36 +0100 |
| Message-ID | <q2ktnu$1ddd$1@gioia.aioe.org> |
| In reply to | #22525 |
> ma la vedo difficile trovare un database (se non a pagamento) di tutte > le città del mondo aggiornate Mi sembra di aver notato che alcuni siti attingano da google maps ci sarebbe da capire il come riescano a farlo... > se ti interessa solo l'italia è facile, se vuoi te lo posso passare > (regione, citta e provincia) Se riesci e se vuoi puoi girarmelo alla mail che vedi nel mio profilo! A rigor di logica come già da me accennato converebbe creare una tabella con tutte le città di uno stato piuttosto che una "tabellona" unica con tute le città! :D > Saluti Saluti! ^Bart
[toc] | [prev] | [standalone]
Back to top | Article view | it.comp.www.php
csiph-web