[Db] [mySQL] se non c è crealo!
Domenico L.
domenico.lorusso a pleiade.it
Mer 15 Nov 2006 17:08:56 CET
Cristiano Verondini ha scritto:
>>> fai SELECT .. FROM figlio WHERE regione=... etc. etc.
>>>
>>> ti risparmi una join, considera il caso in cui la tabella padre
>>> dovesse andare perduta (estremizzo volutamente), la tabella figlio
>>> avrebbe ancora un significato logico perchè i campi che compongono
>>> la pk hanno una corrispondenza nella realtà.
>
> Lo trovo un esempio poco calzante. Primo perchè non deve succedere
> che si cancella una tabella (e certo non decido la *struttura* del DB
> in vista di un evento di questo tipo), secondo perché la ricerca che
> fai nella tabella figlio di per sé ha poco significato, probabilmente
> dovrai risalire all'elemento padre dei record trovato (e vai di join).
> Oltretutto, la WHERE andrebbe fatta con valori per campi componenti
> l'indice nella sua parte iniziale ... insomma, lo trovo poco pratico.
Mah.... dunque l'esempio che ho portato non era compiutamente astratto,
ma si basava su un progetto serio, avere una chiave intelligente più
della metà delle volte mi evitava join.
Attenzione! spesso le tabelle padre avevano una chiave numerica di tipo
autoincrement perché non c'erano altre chiavi primarie!
:-)
Però se ci sono tre tabelle nonno->padre->figlio facevo in modo che
figlio avesse come chiavi sia il codice del nonno che del padre (es.:
regione-provincia-comune)
Un'altra osservazione che vale la pena fare è che se Esiste una
gerarchia nella chiave, questa è informazione che conviene tenere, e
quindi è meglio avere chiavi con più campi.
Sugli indici, invece trovo che l'osservazione sia fuori luogo, gli
indici si mettono dove servono, poi da rdbms a rdbms ci sono politiche
diverse e quindi non ha senso parlare di vantaggi e svantaggi in senso
assoluto.
Inoltre converrai con me che ha poco senso fare un raggruppamento sul
codice provincia 001 che è sempre il capoluogo di una regione, questo
per dire che i raggruppamenti sfruttano quasi sempre la gerarchia
--
Domenico L. icq: 645 44 861
per stupire mezz'ora basta un libro di storia,
io cercai di imparare la Treccani a memoria... [F.d.A.]
Maggiori informazioni sulla lista
Db