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