You are on page 1of 7
Blog Bitix Aveo owarensegsiie [a] Java GNU/Linux JavaScript Tapestry Archivo yhemeroteca Enlaces Acerca de.. Las 6+2 formas normales de las bases de datos relacionales Escrito por pico.dev el 10/02/2018. planeta-codigo programacion Enlace permanente Comentarios 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 teoria existe hasta la sexta forma normal. Cumplir las formas normales evita redundancias e inconsistencias en los datos a costa de crear mas 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 mas rapido de consultar. iCudndo se podra jubilar? Siu cartera tiene 350.000 € o ms, deberia ler jubilacion fisheries Las bases de datos relacionales desarrolladas en los afios 70 son la forma més utilizada atin en la actualidad para almacenar la informacién en la mayorfa 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 si, por ejemplo, podria ser la informacién de una persona, nombre, apellidos, fecha de nacimiento, ciudad de residencia, teléfono, ... Ades las tablas pueden relacionarse con otras tablas. Siguiendo el ejemplo podriamos tener una tabla de peliculas o libros y relacionarlas con la tabla de personas de forma que conozcamos que peliculas ha visto o libros ha leido una persona, de cada pelicula podemos guardar su director, de os libros el autor y de cada uno de ellos los actores 0 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 normal las relaciones las, cumplen 0 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 existirdn de que contengan inconsistencias, una tabla que cumpla una forma normal cumple las formas normales de menor nivel. Las formas normales son las siguientes: + Forma normal de base de datos © Primera forma normal, 1EN + Segunda forma normal, 2EN © ‘Tercera forma normal, 3EN ‘eee Forma normal de Boyce-Codd, BCNE © Cuarta forma normal, 4EN 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, amazon =e B- sa Antipatiors EUR 2224 Primera forma normal, 1FN No hay grupos repetidos de columnas, ni una columna guarda miiltiples valores. Por ejemplo, si de una persona ‘queremos guardar varios teléfonos deberiamos crear una tabla de teléfonos y relacionarla con la tabla de usuarios, 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 sabrfamos en que campo de la tabla esté obligando a realizar una consulta de actualizacién en los tres campos. Las columnas con miiltiples valores son dificiles de actualizar con sentencias SQL por el formato que emplea la columna para guardar el dato, en este caso utilizando una barra como separador. (persona, sobre, telefono, telefon, telefono) Persana (sd penton, nombre, tlé‘enoe > Leuarde (1d persona, sombre) Teléfono (persorat,telefons) Segunda forma normal, 2FN Cada columna de una tabla esti relacionada con todas las columnas de la clave primaria y no solo por una combinacién de parte de la clave primaria. En este caso en que se guarda las las persona que trabajan en una empresa, cumple la IFN al no tener columnas repetidas ni mailtiples valores en una columna pero no cumple la EN estando la clave primaria formada por los campos id_persona e id_empresa y el campo direccion_empresa siendo solo dependiente del campo id_empresa. En este caso el problema ademés de contener posibles inconsistencias en los valores de las direcciones es que si la direccién de una empresa habria que actualizar todos los registros de los empleados y se quisiera actuali empresa, ras seranates) Persona Ud. person, Id -enprese, alrecclon empress, ves Empresa (sd.persona, se.expresa,puasto, tarae senses) Direc (14 enrass, 2, 0\ Re el Poreebe Tercera forma normal, 3FN Cada columna de una tabla esta relacionada directamente con las columnas de la clave primaria, no de forma transitiva a través de otro campo. En el mismo caso anterior que cumple la 2FN no cumple la tercera si el ‘campo horas semanales depende del puesto. Podrfa haber inconsistenias de datos si dos personas tuviesen diferentes horas semanales para el mismo puesto. enprese (44 person puesto) Paeeto (piste, nonae cemaies) Sriners, ° Forma normal de Boyce-Codd, BCNF Una tabla esta en BCNF y estd en 3FN y todos los campos tienen como deteminante (dependen) la clave primaria. En un caso en que un trabajador trabaja en varias empresas con un responsable asignado e introduciendo la restriccién de que en una empresa solo hay un responsable para todos los trabajadores, el campo id responsable tiene una dependencia sobre el campo id_empresa que no es clave primaria. Tesbajaar (46 porsna, S4_onpess, 14 responsable) Empresa idLerpresay 16 responsable) Dene hosted ith @ by it ewe Cuarta forma normal, 4FN No existen dos o més relaciones independientes en una misma tabla. En una relacién que guarde las empresas de un trabajador y las localidades en las que trabaja, si las empresas y las localidades son independientes hay redundancia de datos por guardar para cada empresa cada una de las localidades del trabajador. Aplicando la

You might also like