[Php-it] Mysql e foreign keys.
Fabio
fabiogandola at tiscali.it
Fri May 4 14:34:17 CEST 2007
> Sei crudele. Vuoi far fare a MySQL quello che dovresti fare tu
> progettando meglio il tuo schema.
Boh in realtà secondo me sarebbe una cosa che dovrebbe far il DB. (se
imposti la foreign key...)
Ad esempio, ipotizziamo una colonna "status".
La soluzione classica è creare una tabella status
StatusID
StatusString
StatusID = 3
StatusString = 'added'
StatusID = 5
StatusString = 'deleted'
Poi ci sarà una tabella che referenzia la tabella status, ad esempio, la
tabella prodotto avrà:
ProdottoID = 1231
NomeProdotto = 'PincoPallino'
StatusProdotto = 5
Se vuoi far una query per estrarre solo quelli 'deleted' si farà una cosa
tipo:
SELECT * FROM prodotto, WHERE statusprodotto = 5
Non sarebbe molto più leggibile questa seconda versione?
SELECT * FROM prodotto, WHERE statusprodotto = 'deleted'
Oppure se magari c'è qualche casino e devi intervenire aprendo direttamente
le tabelle del DB, io trovo molto + comodo avere sulla colonna
statusprodotto la stringa 'deleted' piuttosto che il numero '5', visto che
in questo secondo caso, se l'ultima volta che ho messo mano a quelle cose è
stato qualche mese prima, mi toccherà andare ad aprire anche la tabella
degli status per scoprire a cosa corrisponde questo sconosciuto status '5'
:)
Intendo dire, nel momento in cui imposti la foreign key su un campo varchar,
il database ha a mio parere tutte le info per poter far da solo questa
ottimizzazione che generalmente i programmatori fanno a mano introducendo ID
numerici.. quindi speravo che MySQL facesse da solo questa ottimizzazione.
thanks cmq.
More information about the Php-it
mailing list