Documentos de Académico
Documentos de Profesional
Documentos de Cultura
En la universidad se explican las formas normales, en mi caso que yo recuerde hasta la tercera forma normal.
Conocer la tercera forma normal suele ser suficiente pero en la teoría existe hasta la sexta forma normal. Cumplir
las formas normales evita redundancias e inconsistencias en los datos a costa de crear más tablas que en algunos
consultas puede hacerlas lentas. El proceso contrario de la normalización es la desnormalización, puede producir
inconsistencias pero los datos son más sencillos y en algunos casos más rápido de consultar.
Las bases de datos relacionales desarrolladas en los años 70 son la forma más utilizada aún en la actualidad para almacenar
la información en la mayoría de las aplicaciones informáticas de cualquier ámbito. Los datos se guardan en tablas
separadas en campos y con un tipo, los datos almacenados en cada tabla están relacionados entre sí, por ejemplo, podría
ser la información de una persona, nombre, apellidos, fecha de nacimiento, ciudad de residencia, teléfono, … Además las
tablas pueden relacionarse con otras tablas. Siguiendo el ejemplo podríamos tener una tabla de películas o libros y
relacionarlas con la tabla de personas de forma que conozcamos que películas ha visto o libros ha leído una persona, de
cada película podemos guardar su director, de los libros el autor y de cada uno de ellos los actores o personajes.
Al almacenar la información en la base de datos debemos evitar las redundancias e inconsistencias de forma que la
información que obtengamos al consultarla esté libre de inconsistencias. Por ejemplo, guardando la ciudad de residencia
en la tabla persona deberemos actualizar todos los registros de las personas que residan en ella al cambiar de nombre a una
ciudad o acabaremos con que la misma ciudad está referida por varios términos. Para evitar inconsistencias en las bases de
datos se definieron las formas normales, hay seis formas normales y dos adicionales aunque normalmente con aplicar
hasta la tercera es suficiente ya que por las relaciones de los datos no es necesario aplicar formas normales superiores.
Hasta la tercera forma normal se pueden aplicar independientemente del dominio tratado, a partir de la cuarta forma
https://picodotdev.github.io/blog-bitix/2018/02/las-6-plus-2-formas-normales-de-las-bases-de-datos-relacionales/ Página 1 de 7
Las 6+2 formas normales de las bases de datos relacionales 2019-10-15 12(18 p. m.
normal las relaciones las cumplen o no en función de las reglas y condiciones que se establezcan para el dominio. Cuanto
mayor sea la forma normal de una tabla o una base de datos menos casos existirán de que contengan inconsistencias, una
tabla que cumpla una forma normal cumple las formas normales de menor nivel. Las formas normales son las siguientes:
En los enlaces de la wikipedia está incluida una explicación más detallada de cada forma normal, a continuación solo haré
un breve resumen. En anexo final del libro SQL Antipattens también hay una explicación muy detallada de las diferentes
formas normales, que problemas pueden ocasionar y como corregirlos.
SQL
Antipatterns:...
EUR 22,24
Comprar ahora
En el caso del ejemplo los grupos repetidos de columnas implica que de una persona solo se pueden guardar hasta tres
teléfonos como máximo, han de crearse las columnas por adelantado aunque no se usen y si hay que actualizar un telefono
no sabríamos en que campo de la tabla está obligando a realizar una consulta de actualización en los tres campos.
Las columnas con múltiples valores son difíciles de actualizar con sentencias SQL por el formato que emplea la columna
para guardar el dato, en este caso utilizando una barra como separador.
https://picodotdev.github.io/blog-bitix/2018/02/las-6-plus-2-formas-normales-de-las-bases-de-datos-relacionales/ Página 2 de 7
Las 6+2 formas normales de las bases de datos relacionales 2019-10-15 12(18 p. m.
En este caso el problema además de contener posibles inconsistencias en los valores de las direcciones es que si se quisiera
actualizar la dirección de una empresa habría que actualizar todos los registros de los empleados y empresa.
Podría haber inconsistenias de datos si dos personas tuviesen diferentes horas semanales para el mismo puesto.
1 -- 3 FN
2 Empresa (id_persona, id_empresa, puesto)
3 1, 1, jardinero
4 2, 1, barrendero
5 3, 1, jardinero
6
7 Puesto (puesto, horas semanales)
8 jardinero, 40
9 barrendero, 35
https://picodotdev.github.io/blog-bitix/2018/02/las-6-plus-2-formas-normales-de-las-bases-de-datos-relacionales/ Página 3 de 7
Las 6+2 formas normales de las bases de datos relacionales 2019-10-15 12(18 p. m.
Si el trabajador 1 empezase a trabajar en la empresa 2 sin aplicar la 5FN habría que insertar dos nuevas filas en la trabla
Zona. Aplicando la 5FN bastaría con insertar una en la tabla TrabajadorEmpresa (id_persona: 1, id_empresa: 2).
https://picodotdev.github.io/blog-bitix/2018/02/las-6-plus-2-formas-normales-de-las-bases-de-datos-relacionales/ Página 4 de 7
Las 6+2 formas normales de las bases de datos relacionales 2019-10-15 12(18 p. m.
Desnormalización
Aplicar las reglas de las formas normales para cumplirlas implica separar los datos que antes estaban en una tabla en
varias, con las formas normales evitaremos inconsistencias pero consultar los datos de forma agrupada puede ser más lento
al tener la base de datos que unir las tablas. Normalmente, llegar al nivel de 3FN es suficiente si los datos no tienen reglas
especiales y si cumple la 3FN es habitual que cumpla la 5FN sin cambios adicionales.
La desnormalización consiste el proceso contrario tratando de balancear la rapidez de consulta con el hecho de obtener
datos inconsistentes. Dependiendo de los datos y sus reglas se puede aceptar cierto grado de desnormalización. Algunas
bases de datos tienen un concepto similar al que existe en la base de datos PostgesSQL, las materialized views. Las vistas
materializadas son vistas de los datos pero cuyos datos son guardados de forma similar a una tabla, esto tiene la ventaja de
que consultar la vista basta para consultar los datos que es más rápido que realizar de nuevo la consulta original de la vista.
Con las vistas y las vistas materializadas podemos guardar los datos en la forma normal que consideremos y si por
rendimiento debemos realizar una desnormalización con las vistas y vistas materializadas podemos hacerlo, en el caso de
las vistas materializadas deberemos refrescarlas de forma regular.
La información es una de las cosas más importantes para una organización y por tanto también para las aplicaciones. En el
libro SQL Antipatterns se comentan varios situaciones en las bases de datos que conviene conocer para evitarlos, que
problemas causan, cuando son aplicables y cuales son las soluciones. En libro muy recomendable y útil ya que
independientemente del lenguaje o tipo de aplicación este conocimiento sobre las bases de datos relacionales es de
provecho, como en la práctica totalidad de las aplicaciones se usa una base de datos relacional para persistir los datos será
en casi todos los casos.
https://picodotdev.github.io/blog-bitix/2018/02/las-6-plus-2-formas-normales-de-las-bases-de-datos-relacionales/ Página 5 de 7
Las 6+2 formas normales de las bases de datos relacionales 2019-10-15 12(18 p. m.
Artículos relacionados:
Análisis estático de código con PMD y un ejemplo
Conferencia BilboStack 2018
Hemeroteca #12
Introducción a la programación funcional con Java y la librería Vavr
Definir nuevos tipos de datos escalares en GraphQL
Sé el primero en comentar...
Nombre
Sé el primero en comentar.
https://picodotdev.github.io/blog-bitix/2018/02/las-6-plus-2-formas-normales-de-las-bases-de-datos-relacionales/ Página 6 de 7
Las 6+2 formas normales de las bases de datos relacionales 2019-10-15 12(18 p. m.
Copyleft 2019 -
©
Blog Bitix by pico.dev is licensed under a Creative Commons Reconocimiento-CompartirIgual 4.0 Internacional License.
Powered by Hugo and GitHub Pages. Background patterns from Subtle Patterns.
https://picodotdev.github.io/blog-bitix/2018/02/las-6-plus-2-formas-normales-de-las-bases-de-datos-relacionales/ Página 7 de 7