Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Normalizacin
del esquema
relacional
EJERCICIOS NORMALIZACIN
1. EJEMPLO 1
Vamos a considerar los datos de la siguiente tabla.
ordenes (Id_Orden, Fecha, Id_Cliente, Nom_Cliente, Ciudad, Id_art, Nom_art, Cant, Precio)
Ordenes
Id_orden
2301
2301
2301
2302
2303
2303
1.1
Fecha
23/02/11
23/02/11
23/02/11
25/02/11
27/02/11
27/02/11
Id_cliente
101
101
101
107
110
110
Nom_cliente
Martin
Martin
Martin
Herman
Pedro
Pedro
Ciudad
Riobamba
Riobamba
Riobamba
Ambato
Quito
Quito
Id_art
3786
4011
9132
5794
4011
3141
Nom_art
Red
Raqueta
Paq-3
Paq-6
Raqueta
Funda
Cant
3
6
8
4
2
2
Precio
35,00
65,00
4,75
5,00
65,00
10,00
Una relacin est en primera forma normal si todos los dominios contienen slo valores atmicos.
Un dominio es atmico si se considera que los elementos del dominio son unidades indivisibles
La regla de la 1FN establece que las columnas repetidas deben eliminarse y colocarse en tablas separadas.
Ejemplo:
Al examinar estos registros, podemos darnos cuenta que contienen un grupo repetidos ID_ART, NOM_ART, CANT y
PRECIO. La 1FN prohbe los grupos repetidos, por lo tanto tenemos que convertir a la primera forma normal.
Los pasos a seguir son:
Los registros quedan ahora conformados en dos tablas que llamaremos ORDENES y ARTICULOS_ORDENES
ordenes (Id_orden, Fecha, Id_cliente, Nom_cliente, Ciudad)
articulos_ordenes (Id_orden, Id_Art, Nom_art, Cant, Precio)
ordenes
Id_orden
2301
2302
2303
Fecha
23/02/11
25/02/11
27/02/11
Id_cliente
101
107
110
Id_Art
3786
4011
9132
5794
4011
3141
Nom_art
Red
Raqueta
Paq-3
Paq-6
Raqueta
Funda
Nom_cliente
Martin
Herman
Pedro
Ciudad
Riobamba
Ambato
Quito
articulos_ordenes
Id_orden
2301
2301
2301
2302
2303
2303
Cant
3
6
8
4
2
2
Precio
35,00
65,00
4,75
5,00
65,00
10,00
1.2
Ejemplo:
Ahora procederemos a aplicar la segunda formal normal al ejemplo, es decir, tenemos que eliminar cualquier columna
no clave, que no dependa de la clave primaria de la tabla.
Los pasos a seguir son:
Determinar cules columnas que no son clave, no dependen de la clave primaria de la tabla.
Eliminar esas columnas de la tabla base.
Crear una segunda tabla con esas columnas y la(s) columna(s) de la PK de la cual dependen.
La tabla ORDENES est en 2FN. Cualquier valor nico de ID_ORDEN determina un slo valor para cada columna. Por
lo tanto, todas las columnas son dependientes de la llave primaria ID_ORDEN.
Por su parte, la tabla ARTICULOS_ORDENES no se encuentra en 2FN ya que las columnas PRECIO y NOM_ART son
dependientes de ID_ART, pero no son dependientes de ID_ORDEN. Lo que haremos a continuacin es eliminar estas
columnas de la tabla ARTICULOS_ORDENES y crear una tabla ARTICULOS con dichas columnas y la llave primaria
de la que dependen.
Las tablas quedan ahora de la siguiente manera.
articulos_ordenes (Id_orden, Id_Art, Cant)
artculos ( Id_Art, Nom_art, Precio)
articulos_ordenes
Id_orden
2301
2301
2301
2302
2303
2303
1.3
artculos
Id_Art
3786
4011
9132
5794
4011
3141
Cant
3
6
8
4
2
2
Id_Art
3786
4011
9132
5794
3141
Nom_art
Red
Raqueta
Paq-3
Paq-6
Funda
Precio
35,00
65,00
4,75
5,00
10,00
Ejemplo:
La tercera forma normal nos dice que tenemos que eliminar cualquier columna no clave que sea dependiente de otra
columna no clave.
Los pasos a seguir son:
Al observar las tablas, nos damos cuenta que tanto la tabla ARTICULOS, como la tabla ARTICULOS_ORDENES se
encuentran en 3FN. Sin embargo la tabla ORDENES no lo est, ya que NOM_CLIENTE y CIUDAD son dependientes de
ID_CLIENTE, y esta columna no es la llave primaria.
Para normalizar esta tabla, moveremos las columnas no clave y la columna clave de la cual dependen dentro de una
nueva tabla CLIENTES.
Las nuevas tablas CLIENTES y ORDENES se muestran a continuacin.
ordenes (Id_orden, Fecha, Id_cliente)
clientes (Id_cliente, Nom_cliente, Ciudad)
ordenes
Id_orden
2301
2302
2303
Fecha
23/02/11
25/02/11
27/02/11
Id_cliente
101
107
110
clientes
Id_cliente
101
107
110
Nom_cliente
Martin
Herman
Pedro
Ciudad
Riobamba
Ambato
Quito
2. EJEMPLO 2
La empresa EcuadorSYSTEMS lo ha contratado para sistematizar la facturacin, usted debe analizar toda la
informacin disponible de la factura y aplicar el proceso de normalizacin.
La 1FN prohbe los grupos repetidos, por lo tanto tenemos que convertir a la primera forma normal.
Dividimos la lista de datos del diccionario de datos en dos grupos: uno por aquellos datos que no se repiten y otro por
aquellos datos repetitivos
No se Repiten
Se Repiten
Al examinar estos registros, podemos darnos cuenta que contienen un grupo repetidos CATEGORIA_PROD, COD_PROD,
DESP_PROD, VAL_UNIT y CANT_PROD, PRECIO . La 1FN prohbe los grupos repetidos, por lo tanto tenemos que
convertir a la primera forma normal.
Los pasos a seguir son:
Los registros quedan ahora conformados en dos tablas que llamaremos FACTURA y DETALLE_FACTURA
Factura (NUM_FAC, FECHA, NOM_CLIENTE, DIR_CLIENTE, CEDULA_CLIENTE, CIUDAD_CLIENTE, TELEF_CLIENTE)
Detalle_Factura (NUM_FAC, CATEGORIA_PROD, COD_PROD, DESP_PROD, VAL_UNIT, CANT_PROD, PRECIO)
2.2
Ahora procederemos a aplicar la segunda formal normal al ejemplo, es decir, tenemos que eliminar cualquier columna
no clave, que no dependa de la clave primaria de la tabla.
Los pasos a seguir son:
Determinar cules columnas que no son clave, no dependen de la clave primaria de la tabla.
Eliminar esas columnas de la tabla base.
Crear una segunda tabla con esas columnas y la(s) columna(s) de la PK de la cual dependen.
La tabla FACTURA est en 2FN, cualquier valor nico de NUM_FAC determina un slo valor para cada columna. Por lo
tanto, todas las columnas son dependientes de la llave primaria NUM_FAC.
Por su parte, la tabla DETALLE_FACTURA no se encuentra en 2FN ya que las columnas CATEGORIA_PROD,
DESP_PROD, VAL_UNIT son dependientes de COD_PROD, pero no son dependientes de NUM_FAC. Lo que
haremos a continuacin es eliminar estas columnas de la tabla DETALLE_FACTURA y crear una tabla PRODUCTOS
con dichas columnas y la llave primaria de la que dependen.
Las tablas quedan ahora de la siguiente manera.
Factura (NUM_FAC, FECHA, NOM_CLIENTE, DIR_CLIENTE, CEDULA_CLIENTE, CIUDAD_CLIENTE, TELEF_CLIENTE)
Detalle_Factura (NUM_FAC, COD_PROD, CANT_PROD, PRECIO)
Producto (COD_PROD, CATEGORIA_PROD, DESP_PROD, VAL_UNIT)
2.3
La tercera forma normal nos dice que tenemos que eliminar cualquier columna no clave que sea dependiente de otra
columna no clave.
Los pasos a seguir son:
Al observar las tablas, nos damos cuenta que tanto la tabla DETALLE_FACTURA como la tabla PRODUCTOS se
encuentran en 3FN. Sin embargo la tabla FACTURA no lo est, ya que NOM_CLIENTE, DIR_CLIENTE,
CIUDAD_CLIENTE, TELEF_CLIENTE son dependientes de CEDULA_CLIENTE, y esta columna no es la llave
primaria.
Para normalizar esta tabla, moveremos las columnas no clave y la columna clave de la cual dependen dentro de una
nueva tabla CLIENTES.
Por lo tanto la base de datos queda de la siguiente manera:
Factura (NUM_FAC, FECHA, CEDULA_CLIENTE)
Detalle_Factura (NUM_FAC, COD_PROD, CANT_PROD, PRECIO)
Producto (COD_PROD, CATEGORIA_PROD, DESP_PROD, VAL_UNIT)
Cliente (CEDULA_CLIENTE, NOM_CLIENTE, DIR_CLIENTE, CIUDAD_CLIENTE, TELEF_CLIENTE)
3. EJEMPLO 3
Se tiene una relacin del REPORTE_MATRICULA, aplicar las reglas de normalizacin simplificando hasta la tercera
forma normal.
Reporte_Matricula (Id_alumno, nom_alumno, especialidad, Id_curso, nom_curso, nom_docente, oficina, seccin)
4. EJEMPLO 4
Se tiene la relacin PRESTAMOS_LIBRO de una biblioteca, aplicar las reglas de normalizacin simplificando hasta la
tercera forma normal.
Prestamos_libro (cod_libro, titulo, autor, editorial, nom_lector, fecha_dev)
5. EJEMPLO 5
La Clnica SanaSana necesita normalizar los procesos.
Medico (id_med, nom_med, cod_consulta, fecha, diagnostico, receta, id_pac, nombre_pac)
6. EJEMPLO 6
La relacin a continuacin contiene la informacin de la utilizacin de los recursos de la universidad por parte de los
docentes en periodos de tiempo, aplicar las reglas de normalizacin simplificando hasta la tercera forma normal
Uso (cod__prof, nombre_prof, despacho_prof, recurso, ubicacin, fecha_inicio, fecha_fin)
7. EJEMPLO 7
Teniendo las siguientes entidades, aplicar las reglas de normalizacin hasta la tercera forma normal,
Alquiler (cod_alquiler, num_membresia, cod_cliente, nom_cliente, dir_cliente, telef_cliente, cod_cassette,
fecha_alquiler, fecha_dev, valor_alquiler)
Cassettte (cod_cassette, num_copias, formato_cassette, cod_pelicula, titulo, categora, cod_actor, nom_actor,
fechanac_actor, cod_tipo)
Dnde: