Pregunta

Podría alguien me ayude a saber lo que es la normalización en mysql y en cuyo caso, y cómo tenemos que usarlo ..

Gracias de antemano.

¿Fue útil?

Solución

Trato de intentar explicar la normalización en términos simples aquí. En primer lugar, es algo que se aplica a la base de datos relacional (Oracle, Access, MySQL) por lo que no es sólo para MySQL.

La normalización se trata de hacer que cada tabla tiene los únicos campos mínimos y para deshacerse de las dependencias. Imagine que tiene un registro de empleado, y cada empleado pertenece a un departamento. Si almacena el departamento como un campo junto con los otros datos del empleado, usted tiene un problema - lo que sucede si se elimina un departamento? Usted tiene que actualizar todos los campos de departamento, y no hay posibilidad de error. ¿Y si algunos empleados no tienen un departamento (recién asignado, tal vez?). Ahora habrá valores nulos.

Así que la normalización es, en resumen, es evitar que tienen campos que serían nulas, y asegurarse de que los todos los campos en la tabla sólo pertenecen a un dominio de datos que se describen. Por ejemplo, en la tabla de empleados, los campos podrían ser de identificación, nombre, número de la seguridad social, pero esos tres campos no tienen nada que ver con el departamento. Sólo Identificación del empleado describe qué departamento pertenece el empleado. Por lo tanto, esto implica que el que un empleado del departamento está en debe estar en otra mesa.

Esto es un proceso de normalización sencilla.

EMPLOYEE ( < employee_id >, name, social_security, department_name)

Esto no es normalizado, como se ha explicado. Una forma normalizada podría parecerse

EMPLOYEE ( < employee_id >, name, social_security)

A continuación, la tabla de empleados sólo es responsable de un conjunto de datos. Entonces, ¿dónde almacenamos qué departamento pertenece el empleado? En otra mesa

EMPLOYEE_DEPARTMENT ( < employee_id >, department_name )

Esto no es óptima. ¿Qué pasa si el nombre del departamento cambios? (Sucede en el gobierno de Estados Unidos todo el tiempo). Por lo tanto es mejor hacer esto

EMPLOYEE_DEPARTMENT ( < employee_id >, department_id )
DEPARTMENT ( < department_id >, department_name )

Hay primera forma normal, la segunda forma normal y tercera forma normal. Pero a menos que se está estudiando un curso de DB, por lo general sólo tiene que ir de la forma más normalizada que pude entender.

Espero que esto ayude.

Otros consejos

La normalización no es sólo para MySQL. Es un concepto general de base de datos.

  

La normalización es el proceso de   organizar de manera eficiente los datos de una   base de datos. Hay dos objetivos de la   proceso de normalización: eliminar   datos redundantes (por ejemplo, almacenar   los mismos datos en más de una tabla)   y la garantía de dependencias de datos hacen   sentido (sólo almacenar datos relacionados en una   mesa). Ambos son objetivos dignos   ya que reducen la cantidad de espacio una   la base de datos consume y asegurar que los datos   lógicamente se almacena.

Las formas normales en SQL se dan a continuación.

  

primera forma normal (1NF): Una relación es   dice que está en 1NF si sólo tiene   atributos de valor único, ni   repetir ni se permiten matrices.

     

Segunda forma normal (2NF): Una relación   se dice que está en 2NF si está en 1NF   y cada atributo no clave es totalmente   depende de la primaria funcional   la clave.

     

Tercera forma normal (3NF): Se dice que una   relación está en 3NF si está en 2NF y   no tiene dependencias transitivas.

     

Forma normal de Boyce-Codd (BCNF): Un   relación se dice que es en BCNF si y   sólo si cada determinante en la   relación es una clave candidata.

     

Cuarta Forma Normal (4NF): Una relación   se dice que está en 4NF si está en BCNF   y contiene ninguna dependencia multivalor.

     

Quinta Forma Normal (5NF): Una relación es   dice que está en 5NF si y sólo si cada   unirse a la dependencia en relación está implícita   por las claves candidatas de relación.

     

Dominio-Key Forma Normal (DKNF): Decimos   que una relación está en DKNF si es   libre de todas las anomalías de modificación.   Inserción, eliminación y actualización   anomalías están bajo la modificación   anomalías

También Seel

Bata normalización Fundamentos

Es una técnica para asegurar que sus datos se mantiene constante, eliminando la duplicación. Así que una base de datos en la que la misma información se almacena en más de una tabla no es normalizada .

Ver el artículo de Wikipedia sobre href="http://en.wikipedia.org/wiki/Database_normalization" Base de Datos de normalización .

(Es una técnica general para bases de datos relacionales, no específicas para MySQL.)

Si bien la creación de un esquema de base de datos para su aplicación, es necesario asegurarse de que evite cualquier información que se almacena en más de una columna a través de diferentes tablas.

Como cada tabla en su base de datos, identifica una entidad importante en su aplicación, un identificador único es un deber-tiene columnas para ellos.

Ahora, al decidir el esquema de almacenamiento, se están identificando diferentes tipos de relaciones entre estas entidades (tablas), a saber-a-saber, uno-a-uno, uno-a-muchos, muchos-a-muchos.

  1. En una relación de uno a uno (por ejemplo. A El estudiante tiene un rango único en el clase), misma mesa podría ser utilizado para tienda de columnas (de ambas tablas).
  2. Para una relación de uno a muchos (por ejemplo. Un semestre puede tener múltiples cursos), una clave externa está siendo creado en una tabla primaria.
  3. Para un muchos-a-muchos relación (por ejemplo. Un profesor asiste a muchos estudiantes y viceversa), una tercera tabla necesita crear (con clave principal de ambas tablas como una clave compuesta), y los datos relacionados de las tablas de ambos se ser almacenados.

Una vez que asiste a todos estos escenarios, su base de datos esquema se normalizará a 4NF.

este post tiene sugerencias útiles

Tutorial de Barry en la comprensión de una base de datos de esquema

http://www.youtube.com/watch?v=KqvIGYjcLQ4 
  

En el campo de la base de datos relacional   el diseño, la normalización es una sistemática   manera de asegurar que una base de datos   estructura es adecuada para   consulta de propósito general y libre de   cierta indeseable   características-inserción, actualizar y   anomalías que podrían conducir a la supresión   una pérdida de integridad de datos. [1] E. F.   Codd, el inventor de la relacional   modelo, introducido el concepto de   normalización y lo que ahora conocemos como   la primera forma normal en 1970. [2] Codd   pasó a definir el segundo y tercer   formas normales en 1971, [3] y Codd y   Raymond F. Boyce define la   Boyce-Codd forma normal en 1974. [4]   formas normales más altas se definen por   otros teóricos en los años siguientes,   el más reciente es el sexto normales   forman introducido por Chris Fecha, Hugh   Darwen, y Nikos Lorentzos en   2002. [5]

     

De manera informal, una base de datos relacional   mesa (la representación informatizada   de una relación) a menudo se describe como   "Normalizado" si está en el tercer   forma normal (3NF). [6] La mayoría de las tablas 3NF   están libres de inserción, actualización y   anomalías de deleción, es decir, en la mayoría de los casos   tablas 3NF adhieren a BCNF, 4NF, y   5NF (pero típicamente no 6NF).

     

Una pieza estándar de diseño de base de datos   La orientación es que el diseñador debe   crear un diseño completamente normalizado;   desnormalización selectiva puede   posteriormente ser realizado para   motivos de rendimiento. [7] Sin embargo, algunos   disciplinas de modelado, tales como la   enfoque de modelado tridimensional de datos   diseño de almacenes, recomendar explícitamente   diseños no normalizados, es decir, diseños   que en gran parte no se adhieren a   3NF. [8]

Editar Fuente: http://en.wikipedia.org/ wiki / Database_normalization

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top