La normalización en MySQL
-
12-09-2019 - |
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.
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
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.
- 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).
- 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.
- 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