[Db] [mySQL] se non c'è crealo!

Domenico L. domenico.lorusso a pleiade.it
Mer 15 Nov 2006 08:34:40 CET


Tassoman (mailing) ha scritto:
> id	int primary
> nome	char unique
>
> Su un altra tabella poi mi preoccuperò di salvare i dati che variano (ho
> bisogno di uno storico) tramite le insert, relazionate 1/n al nome
> unico. È corretto come approccio no?
>   
più o meno [vedi sotto]

in mysql ci sono 2 sintassi per fare insert o update in unica istruzione 
dipende dalla versione, cmq  è sempre meglio usare un'unica istruzione 
piuttosto che 2 per vari motivi:
- la replace è atomica
- non devi scrivere codice php
- è più pulito
Problema:
- non è portabile, ma tanto neppure gli autoincrement lo sono quindi una 
rimessa a posto la devi sempre fare e, per esempio, anche in oracle 
esiste una funzione simile alla replace che si chiama merge, questo vuol 
dire che in caso di migrazione devi cambiare un'isturzione sql e non il 
codice.


L'utilizzo dei campi numerici autoincrement come chiavi primarie è un 
approccio ampiamente superato e che spesso da più problemi che vantaggi.

Se il campo nome è unique (e magari not null) perché non fai diventare 
questo chiave primaria e butti via il campo id?

Però bisogna fare attenzione ad essere certi che il campo nome sia 
sempre unique e capire se deve esserlo case sensitive o meno (mario e 
Mario sono la stessa chiave o no?)

ciao

-- 
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