[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