Normalizzazione in MYSQL
-
12-09-2019 - |
Domanda
Qualcuno potrebbe aiutarmi a sapere che cosa è la normalizzazione in mysql e in questo caso e come abbiamo bisogno di usarlo ..
Grazie in anticipo.
Soluzione
cerco di tentare di spiegare la normalizzazione in termini profani qui. Prima di tutto, si tratta di qualcosa che si applica a database relazionali (Oracle, Access, MySQL) quindi non è solo per MySQL.
La normalizzazione è di fare in modo ogni tavolo ha gli unici campi minimi e per sbarazzarsi di dipendenze. Immaginate di avere un record dei dipendenti, e ogni dipendente appartiene a un reparto. Se si memorizza il reparto come un campo insieme agli altri dati del dipendente, hai un problema - cosa succede se un reparto è stato rimosso? È necessario aggiornare tutti i campi di reparto, e non c'è possibilità di errore. E se alcuni dipendenti non hanno un reparto (appena assegnato, forse?). Ora ci saranno valori nulli.
Quindi la normalizzazione, in breve, è quello di evitare che hanno i campi che sarebbero nulli, e fare in modo che i tutti i campi della tabella appartengono solo a un dominio di dati che vengono descritti. Ad esempio, nella tabella dei dipendenti, i campi potrebbero essere id, nome, numero di previdenza sociale, ma quelle tre campi non hanno nulla a che fare con il reparto. Solo dipendente id descrive quale reparto il dipendente appartiene. Quindi, questo implica che quale reparto un dipendente è in dovrebbe essere in un'altra tabella.
Ecco un semplice processo di normalizzazione.
EMPLOYEE ( < employee_id >, name, social_security, department_name)
Questo non è normalizzata, come spiegato. Una forma normalizzata potrebbe apparire come
EMPLOYEE ( < employee_id >, name, social_security)
Qui, la tabella dei dipendenti è responsabile solo per un insieme di dati. Quindi, da dove abbiamo memorizzare quale reparto il dipendente appartiene? In un'altra tabella
EMPLOYEE_DEPARTMENT ( < employee_id >, department_name )
Questo non è ottimale. Che cosa succede se il nome del reparto cambiamenti? (Accade nel governo degli Stati Uniti per tutto il tempo). Quindi è meglio fare questo
EMPLOYEE_DEPARTMENT ( < employee_id >, department_id )
DEPARTMENT ( < department_id >, department_name )
Ci sono prima forma normale, seconda forma normale e terza forma normale. Ma a meno che non si sta studiando un corso di DB, di solito basta andare per la forma più normalizzata riuscivo a capire.
Spero che questo aiuti.
Altri suggerimenti
La normalizzazione non è solo per MySQL. Il suo un concetto di database generale.
La normalizzazione è il processo di organizzare in modo efficiente i dati in un Banca dati. Ci sono due obiettivi del processo di normalizzazione: eliminazione dati ridondanti (ad esempio, la memorizzazione gli stessi dati in più di una tabella) e assicurando dipendenze dei dati fanno senso (solo la memorizzazione dei dati relativi a un tavolo). Entrambi questi sono obiettivi meritevoli in quanto riducono la quantità di spazio a banca dati consuma e garantire che i dati è logico memorizzato.
Forme normali in SQL sono riportati di seguito.
prima forma normale (1NF): Una relazione è detto essere in 1NF se ha solo singoli attributi stimati, né ripetendo né sono consentiti gli array.
Seconda forma normale (2NF): Una relazione si dice che sia in 2NF se è in 1NF ed ogni attributo non chiave è completamente funzionale dipende dal primario chiave.
terza forma normale (3NF): Diciamo che un relazione è in 3NF se è in 2NF e non ha dipendenze transitive.
Boyce-Codd forma normale (BCNF): A relazione è detto essere in BCNF se e solo se ogni determinante nel relazione è una chiave candidata.
Quarto forma normale (4NF): Una relazione si dice che sia in 4NF se è in BCNF e non contiene la dipendenza multivalore.
Quinta Normal Form (5NF): Una relazione è ha detto di essere in 5NF se e solo se ogni unire la dipendenza in relazione è implicita dalle chiavi candidate di relazione.
Domain-Key forma normale (DKNF): Diciamo che una relazione è in DKNF se è libera di tutte le anomalie di modifica. Inserimento, cancellazione e aggiornamento anomalie rientrano modifica anomalie
Seel anche
Si tratta di una tecnica per garantire che i dati rimangono coerenti, eliminando la duplicazione. Quindi, un database in cui la stessa informazione viene memorizzata in più di una tabella non è normalizzato .
Vedi l'articolo di Wikipedia su normalizzazione dei database .
(E 'una tecnica generale per i database relazionali, non specifiche per MySQL.)
Durante la creazione di uno schema di database per l'applicazione, è necessario fare in modo di evitare qualsiasi informazione sia conservata in più di una colonna tra diverse tabelle.
Come ogni tabella nel DB, identifica un'entità significativa nell'applicazione, un identificativo univoco è un must-have colonne per loro.
Ora, mentre decidere lo schema di archiviazione, i vari tipi di relazioni sono state identificate tra queste entità (tabelle), vale a dire-a-viz, uno-a-uno, uno-a-molti, molti-a-molti.
- Per una relazione uno-a-uno (ad es. A Studente ha un rango unico nel classe), stessa tabella potrebbe essere utilizzato per colonne negozio (da entrambe le tabelle).
- Per una relazione uno-a-molti (ad es. Un semestre possono avere più corsi), una chiave esterna è di essere creata in una tabella principale.
- Per una relazione molti-a-molti (ad es. Un Prof. occupa di molti studenti e viceversa), una terza tabella deve essere creati (con chiave primaria da entrambe le tabelle come chiave composta), e i dati relativi delle tabelle entrambi saranno essere memorizzati.
Una volta che si partecipa a tutti questi scenari, il vostro db-schema sarà normalizzato al 4NF.
Controlla questo post ha suggerimenti utili
Tutorial di Barry sulla comprensione di un database Schema
http://www.youtube.com/watch?v=KqvIGYjcLQ4
Nel campo della database relazionale la progettazione, la normalizzazione è una sistematica modo per garantire che un database struttura è adatta a general-purpose interrogazione e privo di certo indesiderabile caratteristiche-inserimento, l'aggiornamento, e cancellazione anomalie-che potrebbero portare a una perdita di integrità dei dati. [1] E.F. Codd, l'inventore del relazionale il modello, introdotto il concetto di normalizzazione e ciò che noi oggi conosciamo come la prima forma normale nel 1970. [2] Codd ha continuato a definire il secondo e il terzo forme normali nel 1971, [3] e Codd e Raymond F. Boyce ha definito il Boyce-Codd forma normale nel 1974. [4] forme normali più elevate sono state definite da altri teorici negli anni successivi, il più recente è il sesto normale modulo introdotto da Chris Date, Hugh Darwen, e Nikos Lorentzos in 2002. [5]
Informalmente, un database relazionale tavolo (la rappresentazione computerizzata di una relazione) è spesso descritto come "Normalizzato" se è nella terza forma normale (3NF). [6] La maggior parte dei tavoli 3NF sono liberi di inserimento, aggiornamento, e soppressione anomalie, cioè nella maggioranza dei casi tavoli 3NF aderire alla BCNF, 4NF, e 5NF (ma in genere non 6NF).
Un pezzo di serie di progettazione di database L'orientamento è che il progettista deve creare un design completamente normalizzato; denormalizzazione selettivo può successivamente essere eseguita per motivi di prestazioni. [7] Tuttavia, un po ' discipline di modellazione, come il approccio di modellazione tridimensionale ai dati progettazione magazzino, raccomandare esplicitamente disegni non normalizzati, cioè disegni che in gran parte non aderiscono a 3NF. [8]
Modifica Fonte: http://en.wikipedia.org/ wiki / Database_normalization