PDA

View Full Version : [DB] URGENTISSIMO, concetto di normalizzazione


D4rkAng3l
12-02-2007, 18:25
mmm domani esame di DB...mi serve un chiarimento rapido rapido sulle normalizzazioni in particolare sulla seconda forma normale...ditemi se ho capito bene.

La prima forma normale dice semplicemente che ogni attributo dello schema E-R deve essere attributo semplice cioè il suo valore deve essere unico e indivisibile in una ennupla....e vabbè fin quà tutto tranquillo....

I guai iniziano con la seconda forma normale.

Prendendo questo esempio:

http://www.siatec.net/andrea/uni/db4.jpg

La definizione di SECONDA FORMA NORMALE è:
"Uno schema di relazione R(X) è in seconda forma normale se è in prima forma normale e se ogni attributo non primo (cioè non facente parte della chiave) di R(X) dipende funzionalmente e completamente da ogni chiave di R(X)"

mmm non mi è chiaro il suo significato...che vuol dire che ogni attributo non primo dello schema deve dipendere funzionalmente e completamente da ogni chiave di R(X)

guardando l'esempio mi verrebbe da pensare questo:

La chiave è il titolo, l'autore dipende dal titolo dell'articolo, la rivista anche (perchè un articolo viene pubblicato solo su di una rivista) ma l'editore e il costo no per cui spezzo la tabbella AR in due tabella:
una nuova tabella AR più piccola che contiene la chiave titolo e gli attributi dipendenti dal titolo (autore e rivista pubblicante) e un'altra tabella che chiamo RI che mi definisce le riviste: la chiave di RI sarà il campo Rivista (che è anche campo della tabella AR per permettere la navigabilità nel DB e l'estrazione dei dati) e gli altri campi sarnno Editore e Costo che dipendono eslcusivamente dalla nuova chiave Rivista...

ha senso come raggionamento? a me sembra tutto abbastanza empirico e a senso ma non troppo rigoroso...parere?

Vi prego domani ho l'esame...fatemi sapere

Grazie
Andrea

loris_p
12-02-2007, 18:51
il ragionamento ha senso :)
in pratica ogni tabella, per essere in 2nf, deve contenere tutti i campi non chiave dipendenti dall'intera superchiave (quindi se la chiave è formata da 3 campi deve dipendere da tutti e 3)..
nel tuo esempio c'è il campo editore che non dipende dalla superchiave (che poi è una singola chiave) titolo, quindi non rispetta la 2nf..
scomponendo la tabella ottieni 2 tabelle in cui tutti i campi non chiave dipendono dall'intera superchiave (titolo per ar, rivista per ri)
il metodo rigoroso quindi consiste nel verificare che ogni campo sia determinabile da tutti i campi della superchiave ed in modo funzionale (l'editore è determinato dalla rivista, non dal titolo)

D4rkAng3l
12-02-2007, 19:27
il ragionamento ha senso :)
in pratica ogni tabella, per essere in 2nf, deve contenere tutti i campi non chiave dipendenti dall'intera superchiave (quindi se la chiave è formata da 3 campi deve dipendere da tutti e 3)..
nel tuo esempio c'è il campo editore che non dipende dalla superchiave (che poi è una singola chiave) titolo, quindi non rispetta la 2nf..
scomponendo la tabella ottieni 2 tabelle in cui tutti i campi non chiave dipendono dall'intera superchiave (titolo per ar, rivista per ri)
il metodo rigoroso quindi consiste nel verificare che ogni campo sia determinabile da tutti i campi della superchiave ed in modo funzionale (l'editore è determinato dalla rivista, non dal titolo)

grazie mille...l'esame consiste nel progettare un semplice db, portarlo a fisico e normalizzarlo
però non dice a che forma fermarmi..se arrivo alla seconda per te va bene o dovrei arrivare almeno alle terza?

shinya
12-02-2007, 19:35
grazie mille...l'esame consiste nel progettare un semplice db, portarlo a fisico e normalizzarlo
però non dice a che forma fermarmi..se arrivo alla seconda per te va bene o dovrei arrivare almeno alle terza?

Di solito ci si ferma alla terza per applicazioni "normali".
Se devi progettare un data warehouse è un pò diverso invece...

loris_p
12-02-2007, 19:36
secondo me è meglio se ti abitui da subito a normalizzare in terza forma, in modo da eliminare sistematicamente le ridondanze, anche perché è sempre possibile (cosa invece non vera per la bcnf)..
in sostanza una volta arrivato alla 2nf, non devi far altro che controllare che ogni attributo non chiave dipenda solo ed esclusivamente dalla sua chiave..tutto qui :)

D4rkAng3l
12-02-2007, 22:55
secondo me è meglio se ti abitui da subito a normalizzare in terza forma, in modo da eliminare sistematicamente le ridondanze, anche perché è sempre possibile (cosa invece non vera per la bcnf)..
in sostanza una volta arrivato alla 2nf, non devi far altro che controllare che ogni attributo non chiave dipenda solo ed esclusivamente dalla sua chiave..tutto qui :)

mmm ok...questo esame l'ho "preparatpo" in 4 giorni...doh insomma qualcosa manca... :-/

D4rkAng3l
12-02-2007, 22:56
ti prego se leggi prima di domani mi daresti un parerino anche su: http://www.hwupgrade.it/forum/showthread.php?t=1406121

sono in crisi...sò fare schemi E-R anche se son lento, so farli diventare schema fisico e normalizzarli...mi manca solo un minimo di SQL da sapere entro domani alle 14:00...per te si fà? ;-(

loris_p
12-02-2007, 22:57
in bocca al lupo..facci sapere :)