![]() |
Pages (2): [1] 2 » Show 150 posts per page |
.dsy:it. (http://www.dsy.it/forum/)
- Basi di dati ~ comunicazione digitale (http://www.dsy.it/forum/forumdisplay.php?forumid=108)
-- normalizzazione (http://www.dsy.it/forum/showthread.php?threadid=31027)
normalizzazione
ciao a tutti ho dubbi sulla normalizzazione o meglio.. c'è qualcuno che gentilmente puo scrivere i passaggi su come si fa esattamente a trovare chiavi e vedere se è in 3 forma noramle o bcnf???
grazie e scusate se questo post esisteva già ma volevo metterlo in rilievo...
ESEMPIO
(ABCD)
AB->D
A->B
A->C
B->C
C->B
Per trovare la chiave bisogna calcolare la chiusura di un elemento.
Se un elemento non appare mai a destra delle dipendenze funzionali è sicuramente una chiave.
Dunque:
A(0)=A
A(1)=ABC
A(2)=ABCD
A è chiave
B(0)=B
B(1)= BC
Al passo successivo non ottengo altro quindi B non è chiave.
C(0)=C
C(1)=BC
Al passo successivo non ottengo altro quindi C non è chiave.
AB è superchiave.
Per vedere se è in BCNF devi controllare che a sinistra delle dipendenze funzionali ci siano sole chiavi.
Per vedere se è in 3NF devi vedere se a a sinistra delle dipendenze funzionali hai chiave o superchiave oppuse, in caso contrario, che quell'elemento che a sx non è chiave, abbia a dx un attributo primo.
(Un attributo è primo se fa parte di una chiave)
In questo caso non è in BCNF perchè ad esempio B->C viola la regola (B non è chiave)
Ma non è nemmeno in 3NF poichè B->C viola la regola (B non è chiave e C non fa parte della chiave)
__________________
Sport Val Formazza
ciao scusa ma io così non ho capito comunque -.- non è che oggi sei in uni... così m spieghi???
mi è chiaro la 3fn e il bcnf ma non il come si trovano le chiavi -.- davvero nessuno lo sa fare ??? dai raga l'esame è tra 2 giorni.. vi prego...
a me oltre a trovare le chiavi non mi è chiara la scomposizione: nel senso avendo le dipendenze funzionali come faccio a sapere come scomporle in due relazioni per poter preservare le dipendenze e avere una lossless join?
ho capito solo che non possono essere disgiunte
dunque miky
è semplice.. come ho scritto sopra devi vedere se la chiusura di un elemento ti da tutto l'insieme:
Per farlo devi:
ESEMPIO
(ABCD)
AB->D
A->B
A->C
B->C
C->B
Sai per certo che se un elemento (una lettera) non appare a destra della freccia, questo sarà chiave.
Per esempio A non appare a destra, verifichiamo che è chiave:
Al primo passo da A trovi: ABC, cioè tutto quello che è "puntato" da A
Al secondo passo, devi usare una dipendenza che abbia come premessa (come lettera a sx) una tra ABC (o anche una combinazione di esse), quindi ad esempio AB->D
così troviamo la chiusura: ABCD ed è fatta, A è chiave
Poi ripeti lo stesso per le altre come indicato sopra e trovi (se ci sono) le altre chiavi
il procedimento per trovare le chiavi si può fare in vari modi anche eliminando di volta in volta ciò che sta a destra della dipendenza funzionale se abbiamo ciò che sta a sinistra...
unid invece avrei due piccole domande posso??
la prima è come faccio a sapere quale scomposizione effettuare per avere la lossless join e la preservazione delle dipendenze??
e poi un'altra domanda sull'identificatore esterno che non capisco...
grazie
come funziona l'algoritmo di scmposizione??? finalmente ho capito l chiavi
grazie a tutti per aver scritto del vostro meglio 
E quale algoritmo usi per le chiavi??io mi trovo molto bene con quello che: se per esempio ho R(A,B,C,D) e le dipendenza funzionali
ABC-->D qui la chiave è ABC poi applico anche l'altra dipnedenza e ho AB
A-->C qui la chiave è ABD
quindi la chiave totale è AB in quanto è compresa in ABD
almeno così ragiono io... e anche gli esercizi del prof
per la scomposizione io ho capito che se devo trovare una scomposizione in 3nf devo applicare la minimalità
invece per la bcnf devo fare tante sottorelazioni a seconda delle chiavi....
te come hai capito??
io nn ho capito per questo sto cercando qualcuno che mi dai un metodo esatto da fare ogni volta, comunue per le chiavi non faccio così anche x' nel tu esempio è sbagliato le chiavi sono abc e bcd perchè sai per certo che le chaivi non possono essere ne a ne d visto ke sono a destra per questo motivo sai ke nella chiave sono presenti b e c allora guardando se prendi bc in (abc->d) senza guardare a, sai che ti restituisce d e d in questo caso d->a quindi per trovare il tutto sai ke la kiave è bcd, mentre l'altra ke si vede proprio ad occhio è abc la quale t permette d trovare d
scusami avevo visto male la seconda relazione credevo fsse d-> a comunque cosa intendi quando dici : poi applico anche l'altra dipnedenza e ho AB???
mi sa che hai ancora le idee confuse almeno secondo me innanzitutto io ho detto che la chiave è AB e a destra ho D e C
quindi D e C non apparterranno sicuramente alla chiave...
scusa mi sono espresso male prima ABC e ABD sono i passaggi intermedi non sono le chiavi
cmq ti ho mndato un mex anche in pm
no riesco a farli mi esce come te avevo solo sbagliato a leggere -.- 
intendo che se applichi ricorsivamente le dipendenze fino a che le puoi applicare riesci ad arrivare alla chiave infatti se tu noti con la prima dipendenza puoi eliminare d perchè avendo abc hai anche d e poi ad abc "applico la dipendenza a-->c che mi permette di eliminare c in quanto se ho a ho anche c e quindi con ab riesco ad individuare tutta la tupla
ah ok... bho si ho capito cosa fai.. io lo faccio direttamente... va bhe ma la scomposizione quindi?esattamente cosa devo fare?
| All times are GMT. The time now is 06:54. | Pages (2): [1] 2 » Show all 18 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.