2011-01-27 4 views
6

Quali sono i passaggi e le linee guida per la normalizzazione del database? Se gli viene dato un gruppo di persone con buone capacità informatiche e logiche, come spiegate loro come normalizzare un progetto di database? Qual è il tuo processo di pensiero per prendere una lista di attributi (campi) e trasformare quella lista in un database in 1NF? 2NF? 3NF?Come si insegna alla normalizzazione del database?

risposta

0

Basta andare per 3nf e concentrarsi su dati non redditizi e tutto sarà prety molto semplice. Oppure puoi seguire la strada sbagliata e usare i diagrammi E/R solo per confonderli!

+2

Woah hai praticamente riassunto il mio corso universitario su Database, in particolare il 'E/R diagrams comment' – kjy112

0

Il modo in cui mi è stato insegnato è stato costruire da 1NF, 2NF 3NF BCNF ecc., Come una sorta di viaggio di apprendimento di tipo lezione di storia.

Dipende davvero dal tuo pubblico, andando dritto a 3NF forse un po 'di salto.

0

Una delle prime lezioni - e una delle più importanti - è che i moduli normali si applicano alle singole tabelle, non ai database. Ha senso dire "La tabella" Wibble "è in BCNF", ma non ha senso dire "Questo database è in 3NF".

Vedo due grossi problemi molto frequentemente nel trattare con gli sviluppatori di database.

  1. Tentativo di normalizzare una tabella in base ai nomi di colonna anziché su dati campione rappresentativi.
  2. Non capisco le dipendenze funzionali.

Questi due sono correlati, in quanto le dipendenze funzionali sono definite in termini di valori, non in termini di nomi di colonne.

+0

Un database relazionale è normalizzato in BCNF se ogni relazione nel database è normalizzata in BCNF. Funziona allo stesso modo per 1NF, 2NF, ecc. Rire1979

+0

Ammetto che ha senso dire "Ogni tabella in questo database è in 3NF". Ma è perché stai ancora parlando di tavoli. Non esiste un processo logico di conservazione delle informazioni che è possibile applicare a un database per modificarlo da 2NF a 3NF. C'è * un * processo logico di conservazione delle informazioni che è possibile applicare a una tabella per modificarlo da 2NF a 3NF. Sia 2NF che 3NF sono definiti in termini di dipendenze funzionali. Non esiste una dipendenza funzionale a livello di database, solo a livello di tabella. –

0

Assicurarsi che comprendano che le regole di normalizzazione servono da investimento a lungo termine e tali regole sono state create dall'esperienza di dover mantenere un database denormalizzato.

+3

In campo militare, avevamo un detto. "Il buon giudizio arriva con l'esperienza, l'esperienza viene dal cattivo giudizio." –

0

Trovo molto più importante insegnare un buon design (usare le tabelle di join quando opportuno, sapere quando usare NULL, quando usare le chiavi surrogate, ...) e quando questo concetto è chiaro, digli: Cosa hai fatto è in realtà 1,2,3, ... NF a causa di ...

In questo modo, la teoria non ti blocca e puoi progettare bene i database e sapere in seguito, che era NF.

+1

Uhm, quindi vuoi che insegni quello che sta insegnando? Quello è buono. Dirò al mio insegnante di algebra lineare di iniziare a insegnare l'algebra lineare. Chi sa cosa avrebbe insegnato agli altri saggi. – stefan

2

uno dei miei riferimenti preferiti è Fundamentals of Relational Database Design

+0

lol - è gratis non devi comprarlo! e mentre le immagini possono essere vecchie sottolineano solo che la filosofia dietro le immagini è ancora valida ed è valida da molto tempo! – Leslie

1

Supponendo che già conoscono i concetti di fondazione (relazioni, chiavi candidate e dipendenze funzionali) quindi iniziare con BCNF. BCNF è di gran lunga il più semplice da spiegare ed è molto più importante di 2NF, 3NF, che è meglio ignorare completamente in questa fase. Quindi spiegare Join Dependency e 5NF.

1

Ero abituato a insegnare questa roba ai programmatori negli anni '80. Molti di loro non avevano mai nemmeno usato un database, sebbene avessero programmato in COBOL, BASIC o C per dieci anni o più.

Ero abituato a insegnare la programmazione di database prima, in qualche dettaglio, prima di entrare nella progettazione del database. E insegnavo la modellazione concettuale dei dati, usando ER, prima di entrare nella progettazione del database. Quindi, quando si insegnava la composizione del tavolo, la normalizzazione si presentava in modo abbastanza naturale. Ho insegnato solo 1NF, 2NF e 3NF, anche se potrei tornare indietro e farlo di nuovo probabilmente includerò BCNF.

Il fossato è importante, non insegnare come se fosse una specie di religione. Insegna ciò che accade quando non segui le regole di normalizzazione e dai un'occhiata alle situazioni in cui la violazione della normalizzazione potrebbe avere senso. Troppi principianti vengono insegnati queste cose come una violazione è una sorta di peccato mortale. Non è.

+0

"A troppi principianti viene insegnato che questa roba come una violazione è una sorta di peccato mortale. In realtà avrei votato Rooks per il male su questo. È un peccato mortale progettare per scelta un database non normalizzato. È proprio lì, con impertinenza e programmatori con V02_max basso – stefan