Normalización de DBMS: ejemplo de base de datos 1NF, 2NF, 3NF
¿Qué es la normalización de la base de datos?
Normalización es una técnica de diseño de bases de datos que reduce la redundancia de datos y elimina características indeseables como anomalías de inserción, actualización y eliminación. Las reglas de normalización dividen tablas más grandes en tablas más pequeñas y las vinculan mediante relaciones. El propósito de la normalización en SQL es eliminar datos redundantes (repetitivos) y garantizar que los datos se almacenen de forma lógica.
El inventor de la modelo relacional Edgar Codd propuso la teoría de la normalización de datos con la introducción de la Primera Forma Normal y continuó ampliando la teoría con la Segunda y Tercera Forma Normal. Later se unió a Raymond F. Boyce para desarrollar la teoría de la forma normal de Boyce-Codd.
Tipos de formas normales en DBMS
Aquí hay una lista de formas normales en SQL:
- 1NF (Primera forma normal): Garantiza que la tabla de la base de datos esté organizada de manera que cada columna contenga valores atómicos (indivisibles) y que cada registro sea único. Esto elimina los grupos repetidos y, por lo tanto, estructura los datos en tablas y columnas.
- 2NF (Segunda forma normal): Se basa en 1NF por Necesitamos eliminar datos redundantes de una tabla que se aplica a varias filas. y colocándolos en mesas separadas. Requiere que todos los atributos que no son clave sean completamente funcionales en la clave principal.
- 3NF (Tercera forma normal): Extiende 2NF al garantizar que todos los atributos que no son clave no solo sean completamente funcionales en la clave principal sino que también sean independientes entre sí. Esto elimina la dependencia transitiva.
- BCNF (forma normal de Boyce-Codd): Un refinamiento de 3NF que aborda anomalías que no maneja 3NF. Requiere que cada determinante sea una clave candidata, lo que garantiza un cumplimiento aún más estricto de las reglas de normalización.
- 4NF (Cuarta Forma Normal): Aborda dependencias de múltiples valores. Garantiza que no haya múltiples hechos independientes de múltiples valores sobre una entidad en un registro.
- 5NF (Quinta Forma Normal): También conocida como “forma normal de unión de proyección” (PJNF), se refiere a la reconstrucción de información a partir de piezas de datos más pequeñas y dispuestas de manera diferente.
- 6NF (Sexta Forma Normal): Teórico y no ampliamente implementado. Se ocupa de datos temporales (manejando cambios a lo largo del tiempo) descomponiendo aún más las tablas para eliminar toda redundancia no temporal.
La teoría de la normalización de datos en MySQL El servidor aún se está desarrollando más. Por ejemplo, hay discusiones incluso sobre 6th Forma normal. Sin embargo, en la mayoría de las aplicaciones prácticas, la normalización alcanza su mejor nivel en 3rd Forma normal. La evolución de la normalización en las teorías SQL se ilustra a continuación:
Normalización de bases de datos con ejemplos
Database Ejemplo de normalización puede entenderse fácilmente con la ayuda de un estudio de caso. Supongamos que una videoteca mantiene una base de datos de películas alquiladas. Sin ninguna normalización en la base de datos, toda la información se almacena en una tabla como se muestra a continuación. Entendamos la base de datos de normalización con un ejemplo de normalización con solución:
Aqui ves La columna Películas alquiladas tiene varios valores. Ahora pasemos a las primeras formas normales:
Primera forma normal (1NF)
- Cada celda de la tabla debe contener un valor único.
- Cada registro debe ser único.
La tabla anterior en 1NF-
Ejemplo 1NF
Antes de continuar, comprendamos algunas cosas:
¿Qué es una CLAVE en SQL?
A CLAVE en SQL es un valor utilizado para identificar registros en una tabla de forma única. Una CLAVE SQL es una sola columna o una combinación de varias columnas que se utiliza para identificar de forma única filas o tuplas en la tabla. La clave SQL se utiliza para identificar información duplicada y también ayuda a establecer una relación entre varias tablas en la base de datos.
Nota: Las columnas de una tabla que NO se utilizan para identificar un registro de forma única se denominan columnas sin clave.
¿Qué es una clave principal?
Un primario es un valor de una sola columna que se utiliza para identificar un registro de base de datos de forma única.
Tiene los siguientes atributos
- A clave principal no puede ser nulo
- Un valor de clave principal debe ser único
- Los valores de la clave principal rara vez deben cambiarse
- A la clave principal se le debe dar un valor cuando se inserta un nuevo registro.
¿Qué es la clave compuesta?
Una clave compuesta es una clave primaria compuesta de múltiples columnas que se utilizan para identificar un registro de forma única.
En nuestra base de datos tenemos dos personas con el mismo nombre Robert Phil, pero viven en lugares diferentes.
Por lo tanto, requerimos tanto el nombre completo como la dirección para identificar un registro de forma única. Esa es una clave compuesta.
Pasemos a la segunda forma normal 2NF
Segunda forma normal (2NF)
- Regla 1- Estar en 1NF
- Regla 2: Clave principal de una sola columna que no depende funcionalmente de ningún subconjunto de la relación de clave candidata
Está claro que no podemos avanzar para hacer nuestra base de datos simple en 2nd Formulario de normalización a menos que dividamos la tabla anterior.
Hemos dividido nuestra tabla 1NF en dos tablas, a saber: Tabla 1 y Tabla 2. La Tabla 1 contiene información de los miembros. La Tabla 2 contiene información sobre las películas alquiladas.
Hemos introducido una nueva columna llamada Membership_id, que es la clave principal para la tabla 1. Los registros se pueden identificar de forma única en la Tabla 1 utilizando la identificación de membresía.
Base de datos: clave externa
En la Tabla 2, Membership_ID es la clave externa
¡La clave externa hace referencia a la clave principal de otra tabla! Ayuda a conectar tus mesas.
- Una clave externa puede tener un nombre diferente al de su clave principal
- Garantiza que las filas de una tabla tengan filas correspondientes en otra
- A diferencia de la clave principal, no es necesario que sean únicas. La mayoría de las veces no lo son
- Las claves externas pueden ser nulas aunque las claves primarias no
¿Por qué necesitas una clave externa?
Supongamos que un novato inserta un registro en la Tabla B como por ejemplo
Solo podrá insertar valores en su clave externa que existan en la clave única en la tabla principal. Esto ayuda a la integridad referencial.
El problema anterior se puede superar declarando la identificación de membresía de la Tabla2 como clave externa de la identificación de membresía de la Tabla1.
Ahora, si alguien intenta insertar un valor en el campo de identificación de membresía que no existe en la tabla principal, se mostrará un error.
¿Qué son las dependencias funcionales transitivas?
un transitivo dependencia funcional es cuando se cambia una columna que no es clave, puede causar que cualquiera de las otras columnas que no son clave cambien
Considere la tabla 1. Cambiar la columna no clave Nombre completo puede cambiar el Saludo.
Pasemos a 3NF
Tercera forma normal (3NF)
- Regla 1- Estar en 2NF
- Regla 2- No tiene dependencias funcionales transitivas
Para mover nuestra tabla 2NF a 3NF, nuevamente necesitamos dividir nuestra tabla nuevamente.
Ejemplo 3NF
A continuación se muestra un ejemplo de 3NF en una base de datos SQL:
Nuevamente dividimos nuestras tablas y creamos una nueva tabla que almacena Saludos.
No hay dependencias funcionales transitivas y, por lo tanto, nuestra tabla está en 3NF
En la Tabla 3, el ID del saludo es la clave principal y en la Tabla 1, el ID del saludo es ajeno a la clave principal en la Tabla 3.
Ahora bien, nuestro pequeño ejemplo se encuentra en un nivel que no se puede descomponer más para alcanzar tipos de normalización de formas normales superiores en DBMS. De hecho, ya se encuentra en formas de normalización superiores. Normalmente, en bases de datos complejas se necesitan esfuerzos separados para pasar a los siguientes niveles de normalización de datos. Sin embargo, a continuación analizaremos brevemente los siguientes niveles de normalización en DBMS.
Forma normal de Boyce-Codd (BCNF)
Incluso cuando una base de datos está en 3rd Forma normal, aún así se producirían anomalías si tiene más de una Candidato Llave.
A veces, BCNF también se conoce como 3.5 Forma Normal.
Cuarta forma normal (4NF)
Si ninguna instancia de tabla de base de datos contiene dos o más datos independientes y de múltiples valores que describan la entidad relevante, entonces está en 4th Forma normal.
Quinta forma normal (5NF)
Una mesa esta en 5th Forma normal solo si está en 4NF y no se puede descomponer en ningún número de tablas más pequeñas sin pérdida de datos.
Sexta forma normal (6NF) propuesta
6th La forma normal no está estandarizada, sin embargo, los expertos en bases de datos la están discutiendo desde hace algún tiempo. Con suerte, tendríamos una definición clara y estandarizada para 6th Forma normal en un futuro próximo...
Ventajas de la forma normal
- Mejore la coherencia de los datos: La normalización garantiza que cada dato se almacene en un solo lugar, lo que reduce las posibilidades de que se produzcan datos inconsistentes. Cuando se actualizan los datos, solo es necesario actualizarlos en un lugar, lo que garantiza la coherencia.
- Reducir la redundancia de datos: La normalización ayuda a eliminar datos duplicados dividiéndolos en varias tablas relacionadas. Esto puede ahorrar espacio de almacenamiento y también hacer que la base de datos sea más eficiente.
- Mejorar el rendimiento de las consultas: Las bases de datos normalizadas suelen ser más fáciles de consultar. Como los datos están organizados de forma lógica, las consultas se pueden optimizar para que se ejecuten más rápido.
- Haga que los datos sean más significativos: La normalización implica agrupar datos de una manera que tenga sentido y sea intuitiva. Esto puede hacer que la base de datos sea más fácil de entender y usar, especialmente para las personas que no diseñaron la base de datos.
- Reducir las posibilidades de anomalías: Las anomalías son problemas que pueden ocurrir al agregar, actualizar o eliminar datos. La normalización puede reducir las posibilidades de que se produzcan estas anomalías al garantizar que los datos estén organizados de forma lógica.
Desventajas de la normalización
- Mayor complejidad: La normalización puede generar relaciones complejas. Una gran cantidad de tablas con claves externas puede resultar difícil de gestionar, lo que genera confusión.
- Flexibilidad reducida: Debido a las estrictas reglas de normalización, es posible que haya menos flexibilidad a la hora de almacenar datos que no cumplan estas reglas.
- Mayores requisitos de almacenamiento: Si bien la normalización reduce la redundancia, puede ser necesario asignar más espacio de almacenamiento para dar cabida a tablas e índices adicionales.
- Sobrecarga de rendimiento: Unir varias tablas puede resultar costoso en términos de rendimiento. Cuanto más normalizados estén los datos, más uniones se necesitarán, lo que puede ralentizar los tiempos de recuperación de datos.
- Contexto de pérdida de datos: La normalización divide los datos en tablas separadas, lo que puede provocar una pérdida de contexto empresarial. Es necesario examinar tablas relacionadas para comprender el contexto de un dato.
- Necesidad de conocimiento experto: La implementación de una base de datos normalizada requiere una comprensión profunda de los datos, las relaciones entre los datos y las reglas de normalización. Esto requiere conocimientos expertos y puede llevar mucho tiempo.
¡¡¡Eso es todo para la normalización de SQL !!!
Conclusión
- Diseño de base de datos es fundamental para la implementación exitosa de un sistema de gestión de bases de datos que cumpla con los requisitos de datos de un sistema empresarial.
- La normalización en DBMS es un proceso que ayuda a producir sistemas de bases de datos que sean rentables y tengan mejores modelos de seguridad.
- Las dependencias funcionales son un componente muy importante del proceso de normalización de datos.
- La mayoría de los sistemas de bases de datos son bases de datos normalizadas hasta la tercera forma normal en DBMS.
- Una clave principal identifica de forma única un registro en una tabla y no puede ser nula
- Una clave externa ayuda a conectar la tabla y hace referencia a una clave principal