[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