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.

È stato utile?

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

Database normalizzazione Basics

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.

  1. 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).
  2. Per una relazione uno-a-molti (ad es. Un semestre possono avere più corsi), una chiave esterna è di essere creata in una tabella principale.
  3. 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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top