[ruby-it] Mysql e chiavi esterne

Roberto De Ioris roberto a unbit.it
Gio 31 Ago 2006 12:42:23 CEST


Il giorno gio, 31/08/2006 alle 12.27 +0200, Roberto Casadei ha scritto:
> Nel mio db utilizzo diverse tabelle con diverse chiavi esterne.
> 
> Tuttavia, le restrizioni imposte da mysql per le foreign key sono più 
> alte di quanto io necessiti, in quanto io vorrei avere l'opportunità di 
> settare il campo della chiave esterna come nullo o '0', senza 
> preoccuparmi di avere una reale corrispondenza di chiave.
> 
> Ho provato a guardare qui
> http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html
> ma non sono riuscito a impostare valori nulli senza ricevere il dannato 
> errore:
> "ERROR 1216 (23000): Cannot add or update a child row: a foreign key 
> constraint fails"
> 
> Allora mi sto chiedendo, poichè Rails non è in grado di determinare 
> automaticamente le corrispondenze tra le tabelle - sembra dunque una 
> formalità definire chiavi esterne - non potrei non segnalare a mysql le 
> foreign key e nella logica del db definire semplici campi int?
> 
> Alla fine il lavoro di "trasformazione della corrispondenza" si fa 
> attraverso has_many, belgons_to etc...
> 
> No?
> 
> Sto sbagliando?
> 

Nel penultimo incontro a Roma, abbiamo discusso con Gabriele e un altro
ragazzo (perdono sono una frana con i nomi) sull'effettiva necessita' di
utilizzare i constraint del database oltre all'astrazione fornita da
activerecord.
Beh dopo una lunga battaglia eravamo tutti concordi sul 'dipende' :)
In alcuni settori (tipo quello bancario) piu' livelli di check si
inseriscono e meglio e', e soprattutto e' importante non avere valori
'orfani'. 
Sul 99% delle applicazioni web invece questo non e' un problema
(addirittura software blasonati come drupal partono dal presupposto che
in breve tempo ci si ritrovi con record orfani e fornisce un interfaccia
per ripulirli)

Ergo a meno che di necessita' particolari, activerecord dovrebbe essere
sufficiente e quindi puoi evitarti di usare innodb :)

-- 
Roberto De Ioris
http://unbit.it
JID: roberto a jabber.unbit.it



Maggiori informazioni sulla lista Ml