Re: [Db] [mySQL] se non c'è crealo!
Cristiano Verondini
cristiano a verondini.it
Mer 15 Nov 2006 14:51:21 CET
>> Se per me è chiave la sequenza di 12 caratteri che mi identifica
>> regione-provincia-comune-filiale, suddiviso in 4 campi, se decido di
>> portarmi appresso questi 4 campi nelle tabelle di dettaglio (quelle
>> che
>> per intenderci sono legate 1-n)
>>
>> quindi
>> tabella padre:
>> regione char(3)
>> provincia char(3)
>> comune char(3)
>> filiale char(3)
>> ....
>>
>>
>>
>> tabella figlo:
>> regione char(3)
>> provincia char(3)
>> comune char(3)
>> filiale char(3)
>> ....
>>
>>
>> Se voglio estrarre tutti i record (magari aggregati) dalla tabella
>> figlio *non* devo fare una join ma una semplice where
Questa non l'ho capita. E se nelle tabelle figlio mi porto dietro una
chiave surrogata? Posso comunque continuare ad avere quei dati, magari anche
indicizzati ...
>> Terzo, se hai già una chiave (come il caso preso in oggetto) pensi
>> che aggiungere un campo non faccia cmq levitare la base dati,
>> sono cmq di solito levitazioni trascurabili, a questo punto val la
>> pena chiedersi quanto è lungo il campo testuale e quanto spesso viene
>> modificato (se viene modificato)
Il punto è che un indice con chiave surrogata di solito occupa molto
meno spazio di un indice con chiave naturale (o 'intelligent' come alcuni la
definiscono). QUesto si traduce ovviamente in tempi di accesso notevolmente
minori.
>> l'implementazione che ho mostrato della tabella padre e figlio *è*
>> in terza forma normale.
Lo sarebbe anche usando chiavi surrogate, ovviamente omettendo i dati di
relazione.
Riassumendo, come sempre, la risposta è: 'dipende'! :))
Cris
--
Cristiano Verondini
http://www.verondini.it --- [ICQ: 114 190]
Maggiori informazioni sulla lista
Db