Guía de Ejercicios

Aplicar las reglas de normalización los siguientes ejercicios.

  1. Un dato sin normalizar no cumple con ninguna regla de normalización. Para explicar con un ejemplo en qué consiste cada una de las reglas, vamos a considerar los datos de la siguiente tabla.

    ordenes (id_orden, fecha, id_cliente, nom_cliente, estado, num_art, nom_art, cant, precio)

Ordenes

Id_orden

Fecha

Id_cliente

Nom_cliente

Estado

Num_art

nom_art

cant

Precio

2301

23/02/11

101

Martin

Caracas

3786

Red

3

35,00

2301

23/02/11

101

Martin

Caracas

4011

Raqueta

6

65,00

2301

23/02/11

101

Martin

Caracas

9132

Paq-3

8

4,75

2302

25/02/11

107

Herman

Coro

5794

Paq-6

4

5,00

2303

27/02/11

110

Pedro

Maracay

4011

Raqueta

2

65,00

2303

27/02/11

110

Pedro

Maracay

3141

Funda

2

10,00

PRIMERA FORMAL NORMAL (1FN)

Al examinar estos registros, podemos darnos cuenta que contienen un grupo repetido para NUM_ART, NOM_ART, CANT y PRECIO. La 1FN prohíbe 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, estado)

Articulos_ordenes (id_orden, num_art, nom_art, cant, precio)

Ordenes

Id_orden

Fecha

Id_cliente

Nom_cliente

Estado

2301

23/02/11

101

Martin

Caracas

2302

25/02/11

107

Herman

Coro

2303

27/02/11

110

Pedro

Maracay

Articulos_ordenes

Id_orden

Num_art

nom_art

cant

Precio

2301

3786

Red

3

35,00

2301

4011

Raqueta

6

65,00

2301

9132

Paq-3

8

4,75

2302

5794

Paq-6

4

5,00

2303

4011

Raqueta

2

65,00

2303

3141

Funda

2

10,00

SEGUNDA FORMAL NORMAL (2FN)

Ahora procederemos a aplicar la segunda formal normal, es decir, tenemos que eliminar cualquier columna no llave que no dependa de la llave primaria de la tabla. Los pasos a seguir son:


La tabla ORDENES está en 2FN. Cualquier valor único de ID_ORDEN determina un sólo 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 NUM_ART, pero no son dependientes de ID_ORDEN. Lo que haremos a continuación 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, num_art, cant)


Articulos_ordenes

Id_orden

Num_art

cant

2301

3786

3

2301

4011

6

2301

9132

8

2302

5794

4

2303

4011

2

2303

3141

2

Articulos ( num_art, nom_art, precio)

Articulos

Num_art

nom_art

Precio

3786

Red

35,00

4011

Raqueta

65,00

9132

Paq-3

4,75

5794

Paq-6

5,00

3141

Funda

10,00


TERCERA FORMAL NORMAL (3FN)

La tercera forma normal nos dice que tenemos que eliminar cualquier columna no llave que sea dependiente de otra columna no llave. Los pasos a seguir son:


Al observar las tablas que hemos creado, 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 ESTADO son dependientes de ID_CLIENTE, y esta columna no es la llave primaria.


Para normalizar esta tabla, moveremos las columnas no llave y la columna llave de la cual dependen dentro de una nueva tabla CLIENTES. Las nuevas tablas CLIENTES y ORDENES se muestran a continuación.


ordenes (id_orden, fecha, id_cliente)

Ordenes

Id_orden

Fecha

Id_cliente

2301

23/02/11

101

2302

25/02/11

107

2303

27/02/11

110

Clientes (id_cliente, nom_cliente, estado)

Ordenes

Id_cliente

Nom_cliente

Estado

101

Martin

Caracas

107

Herman

Coro

110

Pedro

Maracay

Por lo tanto la base de datos queda de la siguiente manera:

ordenes (id_orden, fecha, id_cliente)

Clientes (id_cliente, nom_cliente, estado)

Articulos ( num_art, nom_art, precio)

Articulos_ordenes (id_orden, num_art, cant)

  1. FACTURA DE COMPRA VENTA: La empresa COLOMBIAN SYSTEMS lo ha contratado como el “Ingeniero Encargado” para sistematizar la facturación. En la siguiente FACTURA DE COMPRA VENTA, usted debe analizar toda la información disponible y aplique el proceso de normalización, hasta llegar a la Tercera Forma Normal.

Se pide realizar la respectiva justificación detallada de cada uno de los pasos que conduzcan al resultado final.

Factura(NUM_FAC, FECHA_FAC, NOM_CLIENTE, DIR_CLIENTE, RIF_CLIENTE, CIUDAD_CLIENTE, TELEF_CLIENTE, CATEGORIA, COD_PROD, DESP_PROD, VAL_UNIT, CANT_PROD)

Donde:

NUM_FAC: Número de la factura de compra venta

FECHA_FAC: Fecha de la factura de compra venta        

NOM_CLIENTE: Nombre del cliente

DIR_CLIENTE: Dirección del cliente

RIF_CLIENTE: Rif del cliente

CIUDAD_CLIENTE: Ciudad del cliente        

TELEF_CLIENTE: Teléfono del cliente        

CATEGORIA: Categoría del producto        

COD_PROD: Código del producto

DESCRIPCION: Descripción del producto        

VAL_UNIT: Valor unitario del producto        

CANT_PROD: Cantidad de productos q compra el cliente        

La llave primaria es Número de Factura de venta: NUM_FAC

  1. EMPRESA DE ENVIO DE MERCANCIA: a continuación se agrupan todos los atributos que hacen parte de la base de datos para aplicarle las reglas de normalización. Donde se incluyen los nombres de los atributos con su significado

   * GUIA_NO = Numero de Guia

   * GUIA_FECHA= Fecha de la Guia

   * GUIA_HORA= Hora de la Guia

   * ORGN_RIF = Identificacion de Empresa Origen

   * ORGN_NOM = Nombre de Empresa Origen

   * ORGN_ACT = Actividad Comercial de Empresa Origen

   * ORGN_CIUDAD= Ciudad de Empresa Origen

   * ORGN_DIR = Direccion de Empresa Origen

   * ORGN_TEL = Telefono de Empresa Origen

   * ORGN_CEL = Celular de Empresa Origen

   * DEST_ID = Identificacion del destinatario

   * DEST_NOM = Nombre del destinatario

   * DEST_COD_CIUDAD = Codigo de la ciudad del destinatario

   * DEST_CIUDAD= Ciudad del destinatario

   * DEST_DIR = Direccion del destinatario

   * DEST_TEL = Telefono del destinatario

   * DEST_KM = Distancia kilometraje de Ciudad origen a ciudad  del destinatario

   * CODIGO = Codigo del paquete

   * TIPO = Tipo de paquete

   * NOMBRE = Nombre del paquete

   * DESCRIPCION = Descripción del paquete

   * VALR_ FLETE = Valor del flete

  1. Video club: En una tienda de video se necesita mantener información de alrededor de 3000 casetas cada uno  de los casetes  tiene asignado un número por cada `película se necesita conocer un titulo y categoría por ejemplo: comedia, suspenso, drama, acción, ciencia ficción, etc. Se mantienen algunas copias de muchas películas. Se le da a cada película una identificación y se mantiene seguimiento de lo que contiene cada casete.

Un casete puede venir en varios formatos y una película es grabada en un solo casete; frecuentemente las películas son pedidas  de acuerdo a un actor especifico Tom Cruise y Demi More son los más populares es por esto que se debe mantener información de los actores que pertenecen a cada película.

No en todas las películas actúan artistas famosos, a los clientes de la tienda le gusta conocer datos como el nombre real del actor, y su fecha de nacimiento.

En la tienda se mantienen información solo de los actores que aparecen en las películas y que se tiene a disposición. Solo se alquila videos a aquellos que pertenecen al club de videos. Para pertenecer al club se debe tener un buen crédito. Por cada miembro del club se mantiene una ficha con su nombre, teléfono y dirección, cada miembro del club tiene asignado un número de membresía. Se desea mantener información de todos los casetes que un cliente alquila, cuando un cliente alquila un casete se debería conocer el nombre de la película, la fecha en la que se alquila y la fecha de devolución.

Se pide aplicar las reglas de normalización hasta la tercera forma normal, teniendo las siguientes entidades con sus respectivos atributos:

Alquiler (cod_alquiler, num_membresia, cod_cliente, nom_cliente, dir_cliente, telef_cliente, cod_cassette, fecha_alquiler, fecha_dev, valor_alquiler, cantidad)

Cassettte (cod_cassette, num_copias, formato, cod_pelicula, titulo, categoría, cod_actor, nom_actor, fechanac_actor, cod_tipo)

Donde:

cod_alquiler = Codigo del alquiler

num_membresia = Numero de membresia

cod_cliente = código del cliente

nom_cliente = nombre del cliente

dir_cliente = dirección del cliente

telef_cliente = teléfono del cliente

cod_cassette = código del cassette

fecha_alquiler = fecha del alquiler del al película

fecha_dev = fecha de devolución de la pelicula

valor_alquiler = valor del alquiler de la película

cantidad = cantidad de película alquilada

num_copias = números de copias de cassette

formato = formato del cassette

titulo = nombre de la película

categoría = categoría de la película

cod_actor = código del actor

nom_actor = nombre del actor

fechanac_actor = fecha de nacimiento del actor

cod_tipo = código del tipo de película.

  1. Dada la siguiente relación PRESTAMO_LIBROS (Colegio, profesor, asignatura/ habilidad, aula, curso, libro, editorial, fecha_prestamo) que contiene información relativa a los préstamos que realizan las editoriales a los profesores de primaria de los colegios para su evaluación en alguna de las asignaturas/habilidades que imparten. Se pide aplicar las reglas de normalización y obtener su modelo relacional, indicar sus claves, atributos principales.

Colegio

Profesor

Asignatura/

habilidad

Aula

Curso

Libro

Editorial

Fecha_prestamo

C.P Cervantes

Juan Pérez

Pensamiento Lógico

1.A01

1er  Grado

Aprender y enseñar en educación infantil

Graó

09/09/2010

C.P Cervantes

Juan Pérez

Escritura

1.A01

1er  Grado

Preescolar Rubio,N56

Técnicas Rubio

05/05/2010

C.P Cervantes

Juan Pérez

Pensamiento Numérico

1.A01

1er  Grado

Aprender y Enseñar en educación infantil

Graó

05/05/2010

C.P Cervantes

Alicia García

Pensamiento Espacial, Temporal y causal

1.B01

1er  Grado

Educación Infantil N9

Prentice Hall

06/05/2010

C.P Cervantes

Alicia García

Pensamiento Numérico

1.B01

1er  Grado

Aprender y enseñar en educación infantil

Graó

06/05/2010

C.P Cervantes

Andrés Fernández

Escritura

1.A01

2do  Grado

Aprender y enseñar en educación infantil

Graó

09/09/2010

C.P Cervantes

Andrés Fernández

Ingles

1.A01

2do  Grado

Saber educar: guía para Padres y Profesores

Temas de Hoy

05/05/2010

C.P Quevedo

Juan Méndez

Pensamiento Lógico

2.B01

1er  Grado

Saber educar: guía para Padres y Profesores

Temas de Hoy

18/12/2010

C.P Quevedo

Juan Méndez

Pensamiento Numérico

2.B01

1er  Grado

Aprender y enseñar en educación infantil

Graó

06/05/2010

  1. Se tiene una relación del REPORTE_MATRICULA (código_alumno, nombre_alumno, especialidad, código_curso, nombre_curso, nombre_docente, oficina, sección) se pide aplicar las reglas de normalización llegando hasta las 3FN.

Código/

alumno

Nombre/

alumno

Especialidad

Código/

curso

Nombre_curso

Nombre/

docente

Oficina

curso

382145A

Luis Zuloaga

Industrial

MA123

Matemática 2

Carlos Arambulo

CB-214

U

382145A

Luis Zuloaga

Industrial

QU514

Física Química

Petra Rondinel

CB-110

U

382145A

Luis Zuloaga

Industrial

AU521

Descriptiva

Víctor Moncada

CB-120

W

360247k

Raúl Rojas

Sistemas

PA714

Investigación 1

Cesar Fernadez

SC-220

V

360247k

Raúl Rojas

Sistemas

MA123

Matemática 2

Carlos Arambulo

CB-214

V

360247k

Raúl Rojas

Sistemas

AU511

Dibujo

Víctor Moncada

CB-120

U

  1. Se presenta una base de datos de una biblioteca, aplicar las reglas de normalización simplificando hasta la tercera forma normal.

Prestamos_libro (codLibro, Titulo, Autor, Editorial, NombreLector, Fechadev)

codLibro

Titulo

Autor

Editorial

nombreLector

Fechadev

1001

Variable compleja

Murray Spiegel

McGraw Hill

Pérez Gómez, Juan

15/04/2005

1004

Visual Basic 5

E. Petroustsos

Anaya

Ríos Terán, Ana

17/04/2005

1005

Estadística

Murray Spiegel

McGraw Hill

Roca, René

16/04/2005

1006

Oracle University

Nancy Greenberg y Priya Nathan

Oracle Corp.

García Roque, Luis

20/04/2005

1007

Clipper 5.01

Ramalho

McGraw Hill

Pérez Gómez, Juan

18/04/2005

/9