[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