You are on page 1of 4

3 Normalizacin 3.

1 Ejemplo

La teora de la normalizacin, desarrollada por Codd en 1972, Facturas


permite mejorar el diseo lgico de una Base de datos relacional codfac fecha iva dto codcli nombre poblacin

Se fundamenta en las Formas Normales, que son un conjunto de


restricciones que deben de cumplir las relaciones

Una relacin est en primera forma normal, si satisface que sus Lineas
dominios simples slo tienen valores atmicos codfac codart cant dto precio descrip precio almacen

Ventajas

Evita anomalas de datos en inserciones, borrados y modificaciones.

Mejora la independencia de los datos.


Tema 8: Diseo lgico de bases de datos relacionales (IG18) 40 Tema 8: Diseo lgico de bases de datos relacionales (IG18) 42

3.1 Ejemplo 3.1 Ejemplo

Se desea almacenar informacin sobre las facturas que realizan los clientes de Escribe en las dos tablas los siguientes datos:

una empresa as como los articulos que compran. Para ello se ha realizado el 1. La factura 3125 es del 23/09/2003, con un 16 % de IVA y del cliente 355 cuyo nombre es Juan
Diaz de Castelln. Se vendieron 3 tuercas de doble paso (cod. 345T) por un precio de 2.25
siguiente diseo:
Euros y 2 tornillos de rosca reforzada (cod. T554) por 1 Euro.
2. La factura 3126 es del 12/12/2003, con un 16 % de IVA y del cliente 354 cuyo nombre es
Rosa Fernndez de Almazora. Se vendieron 3 tornillos de rosca reforzada (cod. T554) por 1.2
FACTURAS(codfac,fecha, iva, dto, codcli, nombre, poblacin) Euros.
3. La factura 3127 es del 15/12/2003, con un 16 % de IVA y del cliente 355 cuyo nombre es Juan
LINEAS(codfac,codart,cant, dto, precio, descrip, precio_almacen) Diaz de Castelln. Se vendieron 2 tornillos de rosca reforzada (cod. T554) por 1.1 Euros.
4. Se ha comprado un nuevo artculo en el almacen con cdigo 445A, arandelas cuadradas con
un precio de 0.87 Euros.
codfac Nulos Borrado Modif. 5. El cliente 355 devuelve las tres tuercas y solicita que se rectifique la factura 3125.
LINEAS ------------> FACTURAS No P P 6. El cliente 355 ha cambiado su domicilio a Villareal.
7. El cliente 354 realiza la devolucin de la factura 3126.
8. Se ha hecho un nuevo cliente, Ferran Sabater de Castelln con cdigo 337.

Tema 8: Diseo lgico de bases de datos relacionales (IG18) 41 Tema 8: Diseo lgico de bases de datos relacionales (IG18) 43
3.1 Ejemplo 3.2 Dependencia funcional

Existen dependencias entre los datos, no slo de la clave primaria !!! Dada una relacin (tabla) R, el atributo Y de R depende funcionalmente
del atributo X de R
Indica cuales sn esas dependencias:
R.X ------------> R.Y
FACTURAS(codfac,fecha, iva, dto, codcli, nombre, poblacin) si X determina el valor de Y, es decir, un valor Y en R est asociado a
cada valor X en R. Tanto X como Y puede ser atributos compuestos.
LINEAS(codfac,codart,cant, dto, precio, descrip, precio_almacen)
Ejemplo:
codfac Nulos Borrado Modif.
LINEAS ------------> FACTURAS No P P CLIENTE(codcli, nombre, codpostal, poblacin)

codpostal ------------> poblacin


Tema 8: Diseo lgico de bases de datos relacionales (IG18) 44 Tema 8: Diseo lgico de bases de datos relacionales (IG18) 46

3.1 Ejemplo 3.2 Dependencia funcional

Observaciones:
CLIENTES(codcli, nombre, poblacin)

FACTURAS(codfac,fecha, iva, dto, codcli) Si el atributo X es una clave primaria (o alternativa) de R, entonces todos los
codcli Nulos Borrado Modif. atributos Y de la relacin dependen funcionalmente de X, por la definicin de clave
FACTURAS ----------> CLIENTES S A P primaria (o alternativa).

La dependencia funcional es una nocin semntica (depende del significado de los


ARTICULOS(codart, descrip, precio_almacen)
datos).

LINEAS(codfac,codart,cant, dto, precio) Cada dependencia funcional es una clase especial de regla de integridad.
codfac Nulos Borrado Modif.
Cada dependencia funcional representa una relacin de uno a muchos.
LINEAS ------------> FACTURAS No P P
codart Nulos Borrado Modif.
LINEAS ------------> ARTICULOS No R P

Tema 8: Diseo lgico de bases de datos relacionales (IG18) 45 Tema 8: Diseo lgico de bases de datos relacionales (IG18) 47
3.3 Primera Forma Normal (1FN) 3.4 Segunda Forma Normal (2FN)

Una relacin est en 1FN si, y slo si, todos sus dominios contienen Una relacin est en 2FN si, y slo si, est en 1FN y, adems, cada
valores atmicos. atributo no clave depende completamente de la clave primaria (no
depende de algn subconjunto).

No est en 2FN!
No est en 1FN!

Hay atributos que no son atmicos

Tema 8: Diseo lgico de bases de datos relacionales (IG18) 48 Tema 8: Diseo lgico de bases de datos relacionales (IG18) 50

3.3 Primera Forma Normal (1FN) 3.4 Segunda Forma Normal (2FN)

PRODUCTO (codprod, nombre, VERSIN (nmero, fecha, ventas)) INSCRIPCIN(estudiante, actividad, precio)

Se extrae la tabla anidada aadiendole la clave primaria de la tabla Se extraen los atributos dependientes en otra tabla. En la primera tabla
principal. La clave primaria de la nueva tabla ser la unin de la que se deja el atributo del que dependian otros que sera clave ajena a la
tena ms la de la tabla principal. nueva tabla.
PRODUCTO (codprod, nombre, descripcin)
INSCRIPCIN(estudiante, actividad)
VERSIN (codprod, nmero, fecha, ventas)
ACTIVIDAD(actividad, precio)
codprod Nulos Borrado Modificacin
VERSIN ----------> PRODUCTO
actividad Nulos Borrado Modificacin
INSCRIPCIN -----------> ACTIVIDAD

OJO! la nueva tabla hereda parte de la clave primaria


Ejercicio: Rellena los huecos que faltan en la clave ajena.
Ejercicio: Rellena los huecos que faltan en la clave ajena.
Tema 8: Diseo lgico de bases de datos relacionales (IG18) 49 Tema 8: Diseo lgico de bases de datos relacionales (IG18) 51
3.5 Tercera Forma Normal (3FN) 3.6 Ejercicio Normalizacin

Una relacin est en 3FN si, y slo si, est en 2FN y, adems, cada Se desea almacenar informacin sobre las becas que han solicitado los
atributo no clave no depende transitivamente de la clave primaria. alumnos de la univeridad. Se ha realizado el siguiente diseo:
SOLICITUD(estudiante, codbeca, fecha, nombre, apellido, DNI, direccin, nombeca, requisito)

Utilizando el siguiente ejemplo comprueba si est en 3FN. Si no lo est,


corrgelo.
SOLICITUD
estudiante nombre apellido DNI direccin codbeca nombeca requisito fecha
No est en 3FN! 0123 Carlos Gil 159357 C/ Paz, 23 A223 EEUU Ing. Sup. 10/10/98
7636 Paula Tena 913752 C/ Ro Po, 1 B567 ERASMUS Ing. Tc. 12/11/98
7636 Paula Tena 913752 C/ Ro Po, 1 A223 EEUU Ing. Sup. 14/10/98
0123 Carlos Gil 159357 C/ Paz, 23 G654 DRAC Ing. Sup. 17/09/98
9516 Andrs Calpe 682432 Plz. Sol, 40 G654 DRAC Ing. Sup. 12/09/99

Tema 8: Diseo lgico de bases de datos relacionales (IG18) 52 Tema 8: Diseo lgico de bases de datos relacionales (IG18) 54

3.5 Tercera Forma Normal (3FN) 3.6 Ejercicio Normalizacin (II)

INQUILINO (inquilino, edificio, alquiler) Se desea almacenar informacin sobre las becas concedidas a los alumnos de
la univeridad. Se ha realizado el siguiente diseo:
Se extraen los atributos dependientes en otra tabla. En la primera tabla CONCEDIDAS(codbeca, nplaza, nombre, apellido, DNI, direccin, fecha)

se deja el atributo del que dependian otros que sera clave ajena a la Utilizando el siguiente ejemplo comprueba si est en 3FN. Si no lo est,
nueva tabla. corrgelo.
CONCEDIDAS
INQUILINO(inquilino, edificio)

EDIFICIO(edificio, alquiler)
codbeca nplaza nombre apellido DNI direccin fecha

edificio Nulos Borrado Modificacin A223 1 Carlos Gil 159357 C/ Paz, 23 10/10/98
INQUILINO -----------> EDIFICIO
A223 2 Paula Tena 913752 C/ Ro Po, 1 14/10/98
G654 1 Carlos Gil 159357 C/ Paz, 23 17/09/98
G654 2 Andrs Calpe 682432 Plz. Sol, 40 12/09/99
Ejercicio: Rellena los huecos que faltan en la clave ajena.
Tema 8: Diseo lgico de bases de datos relacionales (IG18) 53 Tema 8: Diseo lgico de bases de datos relacionales (IG18) 55