BASES DE DATOS
Normalización
¿Para qué Normalizar?
La normalización es un proceso de simplificación que se le
aplica a un diseño de la base de datos de acuerdo a
estándares definidos, para lograr un diseño optimizado de
la misma para evitar:
Repetición de atributos dentro de una base de
Redundancia de los datos
datos.
Imposibilidad de adicionar datos en la base de
Anomalías de inserción datos debido a la ausencia de otros datos
necesarios.
Inconsistencias de los datos como resultado de
Anomalías de actualización datos redundantes que no fueron todos
actualizados.
Pérdidas no intencionadas de datos debido a
Anomalías de borrado que se dejan borrar datos necesarios por no
realizar un control eficiente de los mismos.
¿Para qué Normalizar?
Las formas normales conocidas son 6:
Primera forma normal (1NF)
Segunda forma normal (2NF)
Tercera forma normal (3NF)
Boyce Codd Normal Form (BCNF)
Cuarta forma normal (4NF)
Quinta forma normal (5NF)
Vamos a tratar en este curso las primeras
tres.
Primera forma normal (1NF)
Se dice que una tabla se encuentra en primera
forma normal (1NF) si y sólo si cada uno de los atributos que
contiene una tupla contiene un único valor.
Supongamos que tenemos una tabla donde se guardan los
cursos que realizaron los alumnos de un determinado centro
de estudios, podríamos considerar el siguiente diseño:
Primera forma normal (1NF)
Podemos observar que las tuplas de los alumnos
2 Lucas y 3 Marta en el atributo curso contienen más de un
valor cada uno por lo que esta tabla no estaría cumpliendo con
la primera forma normal.
La solución en este caso
es tener dos tablas,
donde en una estén
almacenados los datos
de los alumnos y en otra
estén detallados los cursos
que cada alumno ha
realizado, de la siguiente
manera:
De esta forma las tuplas de ambas tablas contienen valores únicos en sus atributos, por lo
tanto ambas tablas cumplen con la primera forma normal.
Una vez que comprobamos que todas las tablas cumplen con la primera forma normal,
podemos pasar a ver si cumplen con la segunda forma normal.
Segunda forma normal (2NF)
Se dice que una tabla se encuentra en segunda forma normal
(2NF) si y solo si cumple con la primera forma normal y todos
los atributos de la tabla dependen funcionalmente de la clave
primaria.
Supongamos que tenemos una tabla con los años que cada
empleado ha estado trabajando en cada departamento de la
empresa.
Segunda forma normal (2NF)
Analizando esta tabla vemos que la misma cumple con la primera
forma normal porque todos los atributos de la misma contienen un
solo valor para cada uno de ellos, por lo tanto ahora vamos a estudiar
si la misma cumple con la segunda forma normal.
Analizando la clave primaria de la tabla, la misma identifica de forma
única a cada tupla por lo que la misma es correcta.
Analizando el resto de los atributos de las tuplas o atributos
secundarios si dependen funcionalmente de toda la clave primaria,
vemos que:
El atributo Nombre no depende funcionalmente de toda la clave primaria, sólo
depende de Id_empleado.
El atributo Departamento no depende funcionalmente de toda la clave primaria,
sólo depende del Id_departamento.
El atributo años si depende funcionalmente de toda la clave primaria ya que es la
cantidad de años que el empleado estuvo trabajando en el departamento
indicado.
Segunda forma normal (2NF)
Por tanto, al no depender todos los atributos
funcionalmente de toda la clave primaria de la tabla, ésta
no cumple con la segunda forma normal, por lo se debe
modificar.-
La solución de este caso sería tener tres tablas como se
detallan a continuación.
Segunda forma normal (2NF)
De esta forma podemos observar que ahora si las
tres tablas cumplen con la segunda forma normal,
pues todos los atributos de cada una de ellas
dependen funcionalmente de toda la clave primaria
de cada tabla.
Al cumplir con la primera y con la segunda forma
normal podemos decir que estas tablas están en
segunda forma normal.
Una vez verificado que las tablas cumplen con la
primera y segunda forma normal se analizará si
cumplen con la tercera forma normal.
Tercera forma normal (3NF)
Se dice que una tabla se encuentra en tercera forma normal
(3NF) si y sólo si cumple con la primera forma normal, cumple
con la segunda forma normal y además, cada uno de los
atributos de la tabla son independientes y no se pueden
obtener a partir de otro atributo almacenado en la misma.
Para dicho análisis tomaremos la siguiente tabla como
ejemplo:
Tercera forma normal (3NF)
Haciendo el análisis correspondiente vemos que la misma
cumple con la primera y segunda forma normal pues todos los
atributos de esta tabla contienen valores únicos y que todos
los atributos que no forman parte de la clave primaria
dependen funcionalmente de esta por lo que ahora
analizaremos si esta tabla cumple con la tercera forma normal:
Vemos que el nombre no se puede obtener a partir de ningún otro
atributo almacenado.
Vemos también que la fecha de nacimiento tampoco se puede obtener a
partir de ningún otro atributo.
Por último vemos que la edad si se puede obtener a partir de otro
atributo almacenado, de la fecha de nacimiento considerando la fecha
actual por lo que deducimos que esta tabla no cumple con la tercera
forma normal.
Tercera forma normal (3NF)
Para que cumpla con esta forma normal debemos realizar
algún cambio, debemos eliminar el atributo edad pues este se
puede deducir del atributo fecha de nacimiento comparándolo
con la fecha actual, por lo que la tabla quedaría con el siguiente
diseño para que cumpla con la tercera forma normal:
Tenemos que tener en cuenta que las formas normales son acumulativas por lo
que cada tabla debe cumplir con la primera forma normal, con la segunda
forma normal y con la tercera forma normal para afirmar que está normalizada.
Si todas las tablas de la base de datos cumplen con estas tres formas
normales podemos afirmar que el diseño de la base de datos esta normalizado.
Desnormarlización
Algunas veces se hace necesario quebrar las
reglas de normalización y crear una base de
datos que deliberadamente esté en una forma
normal menor a la que podría estar.
Usualmente esto se hace para mejorar la
performance de algún proceso importante que
tenga determinada empresa o por un pedido
expreso de los usuarios que necesitan ver
alguna información de una forma particular.
Desnormarlización
Si nos vemos obligados a desnormalizar la base de
datos, debemos:
Tener un buen motivo para quebrar las reglas de normalización.
Ser conciente de los problemas que pueda ocasionar la decisión
de desnormalizar.
Documentar bien la decisión.
Crear los cambios necesarios en la aplicación para que no
existan inconcistencias.
Cuando desnormalizamos generalmente se requiere
agregar mas código en la aplicación, para evitar
anomalías de Inserción, Actualización y Borrado.