miércoles, 25 de septiembre de 2013



Buenas tardes a todos, esto ya se va haciendo costumbre y como todos los días hago la publicación del día, continuando con el hilo de "El correcto diseño de bases de datos". Voy a charlar en esta publicación sobre los distintos grados de normalización, y sobre la primera forma normal (FN1). Además voy a recordarles un poco sobre lo previamente publicado hace unos días ("The Data Bases (Las bases de datos)") haciendo un resumen sobre lo que significaba el proceso de normalización.

Pero antes y como siempre voy a aclarar un par de cosas...




ADVERTENCIAprobablemente mucha gente esté en desacuerdo con lo que expreso en las entradas de mi blog, la idea del blog siempre fue, como todo blog, la de presentar textos que muestren un poco de mi "día a día", en mi caso en el mundo de la programación y la informática.
No obstante, todos mis textos están basados en la normativa vigente, y en toda mi experiencia hasta el momento, aquellos que estén en desacuerdo, probablemente sea por ignorancia o desconocimiento, y también podríamos mencionar engreimiento, creer que saben todo, pero tampoco podemos dejar de lado que quizá esté equivocado en algunas cosas, pero con el tiempo me daré cuenta y lo aclararé en nuevas entradas al blog.

Vamos entonces al tema en cuestión.-

La normalización es un proceso mediante el cual se puede agregar criterios de calidad a una tabla en especifico dentro de una base de datos, el proceso de normalización fue inventado por el autor del modelo relacional (Codd) que hoy en día es aplicado en todas las bases de datos de la industria.
La idea es plantear una serie de características que deben ser cumplidas por las tablas para poder estar normalizadas, y evitar así futuros problemas estructurales.
La mayoría de estos criterios pueden ser deducidos por lógica simplemente, y no representan mucha complicación a la hora de entenderlos, no obstante, son realmente significativos a la hora de analizar una base de datos normalizada con millones de registros.

"Existen básicamente tres niveles de normalización: Primera Forma Normal (1NF), Segunda Forma
Normal (2NF) y Tercera Forma Normal (3NF). Cada una de estas formas tiene sus propias reglas.
Cuando una base de datos se conforma a un nivel, se considera normalizada a esa forma de
normalización. No siempre es una buena idea tener una base de datos conformada en el nivel más alto
de normalización, puede llevar a un nivel de complejidad que pudiera ser evitado si estuviera en un nivel
más bajo de normalización."

Eso es lo que nos comenta la gente de Mysql Hispano, no obstante quiero agregar que hay dos niveles más, y la última linea hace referencia a estos niveles, los primeros tres niveles (1NF, 2NF, 3NF) deben ser implementados en todas las bases de datos y sus tablas, (recordemos que no se pueden aplicar los criterios a bases de datos enteras sino a tablas en particular), hay realmente muy pocos diseños de base de datos donde el proceso de normalización no sea necesario para su correcto funcionamiento a lo largo del tiempo.

La primera forma normal por definición dice "una tabla está en 1FN si y solo si es isomorfa a alguna relación" por lo que es necesario entonces que la tabla cumpla las siguientes condiciones:


1. No hay orden de arriba-a-abajo en las filas. 
2. No hay orden de izquierda-a-derecha en las columnas. 
3. No hay filas duplicadas. 
4. Cada intersección de fila-y-columna contiene exactamente un valor del dominio aplicable (y nada más). 
5. Todas las columnas son regulares [es decir, las filas no tienen componentes como IDs de fila, IDs de objeto, o timestamps ocultos]. 

—Chris Date, "What First Normal Form Really Means", pp. 127-84

Una tabla debe tener al menos una clave primaria
Una tabla no debe depender del orden de sus registros
No puede ser posible crear dos registros iguales en la tabla, (tiene que haber una clave primaria y que al menos este campo clave primaria sea diferente en cada registro)
Cada campo debe tener un valor (no pueden haber nulos) y además cada campo solo puede tener un valor

En el texto original codd hizo una aclaración explicita con respecto a los campos con valores nulos, no obstantes algunos autores definen que una tabla está en 1FN si sus claves candidatas no están en valores nulos, quedando exentos así, el resto de los campos.

bueno, eso es todo por hoy, ya saben como armar sus tablas para que cumpla 1FN o modificar las que ya tienen, los espero mañana con otra publicación.
Un saludo!

0 comentarios:

Publicar un comentario