Normalizacion

27
Normalización L.I. María Luisa Velasco Ramírez

Transcript of Normalizacion

Page 1: Normalizacion

Normalización

L.I. María Luisa Velasco Ramírez

Page 2: Normalizacion

• La teoría de la Normalización es un método objetivo y riguroso que se aplica en el diseño de bases de datos relacionales.

Page 3: Normalizacion

• El proceso de normalización de una base de datos consiste en aplicar una serie de reglas a las relaciones obtenidas tras el paso del modelo E-R (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.

Page 4: Normalizacion

• Dependencias:– Funcional: dado un atributo B de una entidad o

relación, este es funcionalmente dependiente de otro A, si para cualquier valor dado del atributo A existe un valor simple asociado en el atributo B.

• Siempre existe entre los atributos no clave respecto del clave

• Que es clave?– Un Identificador único– Claves, son:

» primaria» candidatas

Page 5: Normalizacion

Ejemplos:

• Matrícula -> Nombre_alumno

• Un valor único de matrícula determina un solo valor para Nombre_alumno

• ISBN-> Título, igualmente un valor único de ISBN determina un solo valor de Título de libro.

Page 6: Normalizacion

–Parcial: un atributo B (no clave) depende de un subconjunto A (clave)

–Transitiva: un atributo B (no clave) depende de un atributo C no clave

–Boyce Codd: un atributo B (Clave o parte de clave) depende de un atributo que no es clave. Todo determinante es clave.

Page 7: Normalizacion

• Formas normales– Primera Forma: todos los atributos tiene

cardinalidad 0 o 1. Evitar grupos repetidos.

– Segunda Forma: una tabla está en 2NF si está en 1NF y no existen dependencias parciales.

– Tercer Forma: una tabla está en 3NF si está en 2NF y no existen dependencias transitivas

– Boyce Codd Forma: una tabla está en BCNF si está en 3NF y no existen dependencias de B-C.

Page 8: Normalizacion

Por ejemplo, dada la siguiente relación:Id_orden Fecha Id_cliente Nom_cliente Estado Num_Item Desc_Item Cant Precio

2301 23/03/11 101 Martí VE 3786 Red 3 100

2301 23/03/11 101 Martí VE 4011 Raqueta 6 700

2301 23/03/11 101 Martí VE 9132 Paq-3 8 25

2302 25/03/11 102 Sports NL 5794 Paq-6 4 55

2303 27/03/11 103 Mr. Tenis VE 4011 Raqueta 2 700

2303 27/03/11 103 Mr. Tenis VE 3141 Funda 2 125

Observen bien las tuplas de la relación, ¿Qué observan en los campos Id_Orden, Fecha, Id_Cliente, Nom_Cliente, Estado?

Page 9: Normalizacion

• La relación no cumple con la 1FN, ya que existen grupos repetidos, qué se debe hacer:

• Eliminar los grupos repetidos

• Crear una nueva relación con la llave primaria (PK, por sus siglas en inglés) de la relación base y el grupo repetido

Page 10: Normalizacion

Se tienen ahora 2 relaciones:Id_orden Fecha Id_cliente Nom_cliente Estado

2301 23/03/11 101 Martí VE

2302 25/03/11 102 Sports NL

2303 27/03/11 103 Mr. Tenis VE

Id_Orden Num_Item Desc_Item Cant Precio

2301 3786 Red 3 100

2301 4011 Raqueta 6 700

2301 9132 Paq-3 8 25

2302 5794 Paq-6 4 55

2303 4011 Raqueta 2 700

2303 3141 Funda 2 125

Ordenes

Artículos_Ordenes

¿Qué atributo tienen en común las 2 relaciones?

Page 11: Normalizacion

Ahora hay que aplicar la 2FN a las relaciones resultantes• Determinar cuáles columnas que no son llave no dependen de la llave primaria de la tabla.• Eliminar esas columnas de la tabla base, para lo cual se debe:• Crear una segunda tabla con esas columnas y la PK de la cual dependen.• Analizar la relación Artículos_Ordenes• Observar que las columnas PRECIO y DESC_ITEM son dependientes de NUM_ITEM ( un

subconjunto de la llave primaria), pero no son dependientes de ID_ORDEN. CANT sin embargo, si depende de la PK, ya que se refiere a la cantidad de artículos que lleva la orden.

Id_Orden Num_Item Desc_Item Cant Precio

2301 3786 Red 3 100

2301 4011 Raqueta 6 700

2301 9132 Paq-3 8 25

2302 5794 Paq-6 4 55

2303 4011 Raqueta 2 700

2303 3141 Funda 2 125

Artículos_Ordenes

¡Observar que la llave primaria (PK) de esta relación es compuesta!

Page 12: Normalizacion

Id_Orden Num_Item Cant

2301 3786 3

2301 4011 6

2301 9132 8

2302 5794 4

2303 4011 2

2303 3141 2

Artículos_OrdenesNum_Item Desc_Item Precio

3786 Red 100

4011 Raqueta 700

9132 Paq-3 25

5794 Paq-6 55

4011 Raqueta 700

3141 Funda 125

Artículos

Las relaciones resultantes son:

¿Qué representa Num_Item, en la relación Artículos_Ordenes?¿La llave primaria de la relación Artículos_Ordenes es compuesta?

Page 13: Normalizacion

Analizar la relación Ordenes

Ordenes

Id_orden Fecha Id_cliente Nom_cliente Estado

2301 23/03/11 101 Martí VE

2302 25/03/11 102 Sports NL

2303 27/03/11 103 Mr. Tenis VE

¿Cumple la 2FN?

Si, porque cualquier valor único de ID_ORDEN determina un sólo valor paracada columna. Por lo tanto, todas las columnas son dependientes de la llave primaria ID_ORDEN.

Page 14: Normalizacion

¿Cumple la 3FN?

Id_orden Fecha Id_cliente Nom_cliente Estado

2301 23/03/11 101 Martí VE

2302 25/03/11 102 Sports NL

2303 27/03/11 103 Mr. Tenis VE

Ordenes

La tercera forma normal indica que se debe eliminar cualquier columna no llave que sea dependiente de otra columna no llave (dependencia transitiva). Los pasos a seguir son:» Determinar las columnas que son dependientes de otra columna no llave.» Eliminar esas columnas de la tabla base.» Crear otra tabla con esas columnas y con la columna no llave de la cual son dependientes.

Observar que las columnas Nom_cliente y Estado son dependientes de ID_cliente, que es una columna no clave

Page 15: Normalizacion

Al crear otra relación o tabla se obtiene:

Id_orden Fecha Id_cliente

2301 23/03/11 101

2302 25/03/11 102

2303 27/03/11 103

OrdenesId_cliente Nom_cliente Estado

101 Martí VE

102 Sports NL

103 Mr. Tenis VE

Clientes

Llave foránea

¿La llave foránea Id_cliente, en dónde es primaria?

Page 16: Normalizacion

Las relaciones resultantes son:

Id_Orden Num_Item Cant

2301 3786 3

2301 4011 6

2301 9132 8

2302 5794 4

2303 4011 2

2303 3141 2

Artículos_OrdenesNum_Item Desc_Item Precio

3786 Red 100

4011 Raqueta 700

9132 Paq-3 25

5794 Paq-6 55

4011 Raqueta 700

3141 Funda 125

ArtículosId_orden Fecha Id_cliente

2301 23/03/11 101

2302 25/03/11 102

2303 27/03/11 103

Ordenes

Id_cliente Nom_cliente Estado

101 Martí VE

102 Sports NL

103 Mr. Tenis VE

Clientes

Page 17: Normalizacion

Analizar ahora la siguiente relación Préstamo

La relación PRESTAMO( num_socio, nombre_socio, cod_libro, fec_prest, editorial, país_edit )

las claves candidatas son: (num_socio, cod_libro) y (nombre_socio, cod_libro)

La combinación de num_socio y cod_libro son las ideales para formar la llave primaria, sin embargo la combinación nombre_socio y cod_libro también es una clave candidata.

¿La relación está en primera forma normal?

–Primera Forma: todos los atributos tiene cardinalidad 0 ó 1.

Si está en 1FN, todos los atributos tienen cardinalidad 0 ó 1

Page 18: Normalizacion

Segunda Forma: una tabla está en 2NF si está en 1NF y no existen dependencias parciales.

• PRESTAMO( num_socio, nombre_socio, cod_libro, fec_prest, editorial, país_edit )

• Se puede observar que ciertos atributos que no forman parte de las claves candidatas, tales como editorial y país editorial, constituye información acerca del libro, pero no acerca de las claves candidatas (que son compuestas).

Por lo tanto, la relación préstamo no se encuentra en 2FN.

• La solución es descomponer esta relación en las siguientes:

Page 19: Normalizacion

• PRESTAMO1( num_socio, nombre_socio, cod_libro, fec_prest )

• LIBRO( cod_libro, editorial, país_edit )

Page 20: Normalizacion

• En la relación PRESTAMO1, el único atributo que no forma parte de las claves candidatas es fec_prest, pero es determinado funcionalmente por la clave completa. Por lo que está en 2FN.

• La relación LIBRO, la clave es cod_libro, y los dos atributos: editorial y país son determinados funcionalmente por la clave completa. Por lo tanto, está en 2FN.

Page 21: Normalizacion

Tercer Forma: una tabla está en 3NF si está en 2NF y no existen dependencias transitivas

• Tercera Forma Normal (3FN), propuesta por Codd. Una relación está en 3FN, si además de estar en 2FN, los atributos que no forman parte de ninguna clave candidata facilitan información sólo acerca de la(s) clave(s) y no acerca de otros atributos.

• En la relación PRESTAMO1, el atributo fec_prest es determinado por la clave, ya que no existen más atributos. Por lo que está en 3FN.

• En la relación LIBRO, el atributo país entrega información acerca de la editorial que publica el libro, por lo que no está en 3FN, país es una columna no clave que es determinado por otra columna no clave que es editorial .

Page 22: Normalizacion

• La solución es descomponerla en:

• LIBRO1( cod_libro, editorial )

• EDITORIAL( editorial, país ), • que están en 3FN, ya que todo atributo no

clave facilita información acerca de la clave.

Page 23: Normalizacion

Boyce Codd: un atributo B (Clave o parte de clave) depende de un atributo que no es clave. Todo determinante es clave.

• Forma Normal de Boycce y Codd (FNBC). La relación PRESTAMO1, que está en 3FN, todavía presenta anomalías, ya que num_socio y nombre_socio, se repiten innecesariamente por cada cod_libro.

• Una relación no cumple con la FNBC si un atributo B (clave o parte de clave) depende de un atributo que no es clave. Todo determinante es clave.

Page 24: Normalizacion

• En la relación PRESTAMO1, num_socio es información acerca de nombre_socio y viceversa. Ninguno de estos atributos son clave (aunque formen parte de la clave).

• Es decir

• num_socio -> nombre_socio

• nombre_socio->num_socio• Un atributo no clave determina a otro que

es clave o parte de ella

Page 25: Normalizacion

La solución es:

• SOCIO( num_socio, nombre_socio )

• PRESTAMO2( num_socio, cod_libro, fec_prest ), que están en FNBC

Page 26: Normalizacion

Esquema relacional resultante:

• LIBRO1( cod_libro, editorial )

• EDITORIAL( editorial, país )

• SOCIO( num_socio, nombre_socio ) • PRESTAMO2( num_socio, cod_libro,

fec_prest )

Page 27: Normalizacion

• Consultar en Mysql-hispano.org el artículo Normalización de bases de datos, del cual se tomaron algunos conceptos y el primer ejemplo.