PDA

View Full Version : [SQL]relazioni


RaouL_BennetH
06-09-2010, 10:43
Ciao a tutti :)

Ho un piccolo dubbio su quale sia il metodo più indicato/migliore per esprimere una relazione fra tabelle.

Generalmente io faccio sempre una relazione sulle chiavi primarie (numeriche), per es.:


Tabella1
id_programmatore (uint)
cognome
nome
bla..

Tabella2
id_modulo
programmatore_id (uint)
bla...


Ma sto visionando alcune tabelle fatte in modo che la chiave primaria è un valore alfanumerico, tipo: AGH0188, e questo valore diventa poi anche la referenza nell'altra tabella.

Il mio dubbio è abbastanza semplice:

Quale sarebbe la via più indicata tra chiavi prettamente numeriche e alfanumeriche ?


Grazie mille :)

RaouL.

dojolab
06-09-2010, 11:11
Ciao a tutti :)

Ho un piccolo dubbio su quale sia il metodo più indicato/migliore per esprimere una relazione fra tabelle.

Generalmente io faccio sempre una relazione sulle chiavi primarie (numeriche), per es.:


Tabella1
id_programmatore (uint)
cognome
nome
bla..

Tabella2
id_modulo
programmatore_id (uint)
bla...


Ma sto visionando alcune tabelle fatte in modo che la chiave primaria è un valore alfanumerico, tipo: AGH0188, e questo valore diventa poi anche la referenza nell'altra tabella.

Il mio dubbio è abbastanza semplice:

Quale sarebbe la via più indicata tra chiavi prettamente numeriche e alfanumeriche ?


Grazie mille :)

RaouL.

Premesso che ho sempre utilizzato (e preferito) un'associazione numerica di campi tra varie tabelle, penso che non ci sia una sostanziale differenza; questione di gusti ed esigenze (e leggibilità della tabella stessa).

In fin dei conti se i campi sono indici non penso 'cambi' molto all'engine SQL se passi un INT o un VARCHAR.

Ma aspetto pareri da gente più esperta per far luce su questo dubbio.
Mi accodo ;)

tuccio`
06-09-2010, 11:37
se il ragionamento è sull'efficienza, a parte il fatto che un intero può rappresentare la chiave stessa di un record in un btree, mentre per un varchar va calcolata, non credo ci siano altre differenze