domingo, 5 de octubre de 2008

NORMALIZACION EN UNA BASE DE DATOS

Para otros usos de este término, véase Normalización (desambiguación).

El proceso de normalización de bases de datos consiste en aplicar una serie de reglas a las relaciones obtenidas tras el paso del modelo entidad-relación al modelo relacional.

Las bases de datos relacionales se normalizan para:

* Evitar la redundancia de los datos.
* Evitar problemas de actualización de los datos en las tablas.
* Proteger la integridad de los datos.

En el modelo relacional es frecuente llamar tabla a una relación, aunque para que una tabla sea considerada como una relación tiene que cumplir con algunas restricciones:

* Cada columna debe tener su nombre único.
* No puede haber dos filas iguales. No se permiten los duplicados.
* Todos los datos en una columna deben ser del mismo tipo.
TERMINOLOGIA
* Relación = tabla o archivo
* Tupla = registro, fila o renglón
* Atributo = campo o columna
* Clave = llave o código de identificación
* Clave Candidata = superclave mínima
* Clave Primaria = clave candidata elegida
* Clave Ajena = clave externa o clave foránea
* Clave Alternativa = clave secundaria
* Dependencia Multivaluada = dependencia multivalor
* RDBMS = Del inglés Relational Data Base Manager System que significa, Sistema Gestor de Bases de Datos Relacionales.
* 1FN = Significa, Primera Forma Normal o 1NF del ingles First Normal Form.

Los términos Relación, Tupla y Atributo derivan de las matemáticas relacionales, que constituyen la fuente teórica del modelo de base de datos relacional.

Todo atributo en una tabla tiene un dominio, el cual representa el conjunto de valores que el mismo puede tomar. Una instancia de una tabla puede verse entonces como un subconjunto del producto cartesiano entre los dominios de los atributos. Sin embargo, suele haber algunas diferencias con la analogía matemática, dado que algunos RDBMS permiten filas duplicadas, entre otras cosas. Finalmente, una tupla puede razonarse matemáticamente como un elemento del producto cartesiano entre los dominios.
PRIMERA FORMA NORMAL
Una tabla está en Primera Forma Normal sólo si

* Todos los atributos son atómicos. Un atributo es atómico si los elementos del dominio son indivisibles, mínimos.
* La tabla contiene una clave primaria
* La tabla no contiene atributos nulos
* Si no posee ciclos repetitivos

Una columna no puede tener múltiples valores. Los datos son atómicos. (Si a cada valor de X le pertenece un valor de Y, entonces a cada valor de Y le pertenece un valor de X)....
SEGUNDA FORMA NORMAL
Dependencia Funcional. Una relación está en 2FN si está en 1FN y si los atributos que no forman parte de ninguna clave dependen de forma completa de la clave principal. Es decir que no existen dependencias parciales.

En otras palabras podríamos decir que la segunda forma normal está basada en el concepto de dependencia completamente funcional. Una dependencia funcional X -> Y es completamente funcional si al eliminar los atributos A de X significa que la dependencia no es mantenida, esto es que A Є X, (X – {A}) -x-> Y. Una dependencia funcional X-> Y es una dependencia parcial si hay algunos atributos A Є X que pueden ser removidos de X y la dependencia todavía se mantiene, esto es A Є X, (X – {A}) -> Y . Por ejemplo {SSN,PNUMBER} -> HOURS es completamente dependencia dado que ni SSN -> HOURS ni PNUMBER -> HOURS mantienen la dependencia. Sin embargo {SSN,PNUMBER} -> ENAME es parcialmente dependiente dado que SSN->ENAME mantiene la dependencia
TERCERA FORMA
La tabla se encuentra en 3FN si es 2FN y cada atributo que no forma parte de ninguna clave, depende directamente y no transitivamente, de la clave primaria.

Un ejemplo de este concepto sería que, una dependencia funcional X->Y en un esquema de relación R es una dependencia transitiva si hay un conjunto de atributos Z que no es un subconjunto de alguna clave de R, donde se mantiene X->Z y Z->Y.. Por ejemplo, la dependencia SSN->DMGRSSN es una dependencia transitiva en EMP_DEPT de la siguiente figura. Decimos que la dependencia de DMGRSSN el atributo clave SSN es transitiva via DNUMBER porque las dependencias SSN->DNUMBER y DNUMBER->DMGRSSN son mantenidas, y DNUMBER no es un subconjunto de la clave de EMP_DEPT. Intuitivamente, podemos ver que la dependencia de DMGRSSN sobre DNUMBER es indeseable en EMP_DEPT dado que DNUMBER no es una clave de EMP_DEPT.

No hay comentarios: