[ruby-it] Mysql e chiavi esterne

David Welton davidnwelton a gmail.com
Gio 31 Ago 2006 12:39:28 CEST


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

Allora non e` esattamente una chiave esterna, oppure il tuo DB forse
potrebbe essere strutturato in modo diverso.  Avere una chiave esterna
che non punta a nulla viola la 'referential integrity'.  Forse
potresti avere, nella tabella 'target', una riga a cui puntare per le
righe nella tabella di partenza 'nulle'.  Non so se sono riuscito a
dirlo in modo chiaro...:-)

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

Si`, potresti benissimo farlo...infatti, quelli di Rails non sembrano
apprezzare molto il database se non come un datastore con un un
linguaggio di query, per certi versi, e quindi e` progettato proprio
in questo modo.

> Sto sbagliando?

Io non butterei via la referential integrity cosi` allegramente:-)
Comunque, dipende dal progetto... se e` una cosa poco importante,
probabilmente non cambia molto se dovessi perdere qualcosa qua o la`.
Se invece gestisci i soldi, sarebbe il caso di usare il database come
un database.

-- 
David N. Welton
 - http://www.dedasys.com/davidw/

Linux, Open Source Consulting
 - http://www.dedasys.com/


Maggiori informazioni sulla lista Ml