Normalizacion
-
Upload
maria-luisa-velasco -
Category
Documents
-
view
832 -
download
0
Transcript of Normalizacion
![Page 1: Normalizacion](https://reader034.fdocumento.com/reader034/viewer/2022042816/559b77b21a28ab6f4f8b489f/html5/thumbnails/1.jpg)
Normalización
L.I. María Luisa Velasco Ramírez
![Page 2: Normalizacion](https://reader034.fdocumento.com/reader034/viewer/2022042816/559b77b21a28ab6f4f8b489f/html5/thumbnails/2.jpg)
• 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](https://reader034.fdocumento.com/reader034/viewer/2022042816/559b77b21a28ab6f4f8b489f/html5/thumbnails/3.jpg)
• 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](https://reader034.fdocumento.com/reader034/viewer/2022042816/559b77b21a28ab6f4f8b489f/html5/thumbnails/4.jpg)
• 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](https://reader034.fdocumento.com/reader034/viewer/2022042816/559b77b21a28ab6f4f8b489f/html5/thumbnails/5.jpg)
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](https://reader034.fdocumento.com/reader034/viewer/2022042816/559b77b21a28ab6f4f8b489f/html5/thumbnails/6.jpg)
–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](https://reader034.fdocumento.com/reader034/viewer/2022042816/559b77b21a28ab6f4f8b489f/html5/thumbnails/7.jpg)
• 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](https://reader034.fdocumento.com/reader034/viewer/2022042816/559b77b21a28ab6f4f8b489f/html5/thumbnails/8.jpg)
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](https://reader034.fdocumento.com/reader034/viewer/2022042816/559b77b21a28ab6f4f8b489f/html5/thumbnails/9.jpg)
• 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](https://reader034.fdocumento.com/reader034/viewer/2022042816/559b77b21a28ab6f4f8b489f/html5/thumbnails/10.jpg)
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](https://reader034.fdocumento.com/reader034/viewer/2022042816/559b77b21a28ab6f4f8b489f/html5/thumbnails/11.jpg)
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](https://reader034.fdocumento.com/reader034/viewer/2022042816/559b77b21a28ab6f4f8b489f/html5/thumbnails/12.jpg)
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](https://reader034.fdocumento.com/reader034/viewer/2022042816/559b77b21a28ab6f4f8b489f/html5/thumbnails/13.jpg)
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](https://reader034.fdocumento.com/reader034/viewer/2022042816/559b77b21a28ab6f4f8b489f/html5/thumbnails/14.jpg)
¿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](https://reader034.fdocumento.com/reader034/viewer/2022042816/559b77b21a28ab6f4f8b489f/html5/thumbnails/15.jpg)
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, dónde es primaria?
![Page 16: Normalizacion](https://reader034.fdocumento.com/reader034/viewer/2022042816/559b77b21a28ab6f4f8b489f/html5/thumbnails/16.jpg)
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](https://reader034.fdocumento.com/reader034/viewer/2022042816/559b77b21a28ab6f4f8b489f/html5/thumbnails/17.jpg)
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](https://reader034.fdocumento.com/reader034/viewer/2022042816/559b77b21a28ab6f4f8b489f/html5/thumbnails/18.jpg)
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](https://reader034.fdocumento.com/reader034/viewer/2022042816/559b77b21a28ab6f4f8b489f/html5/thumbnails/19.jpg)
• PRESTAMO1( num_socio, nombre_socio, cod_libro, fec_prest )
• LIBRO( cod_libro, editorial, país_edit )
![Page 20: Normalizacion](https://reader034.fdocumento.com/reader034/viewer/2022042816/559b77b21a28ab6f4f8b489f/html5/thumbnails/20.jpg)
• 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](https://reader034.fdocumento.com/reader034/viewer/2022042816/559b77b21a28ab6f4f8b489f/html5/thumbnails/21.jpg)
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](https://reader034.fdocumento.com/reader034/viewer/2022042816/559b77b21a28ab6f4f8b489f/html5/thumbnails/22.jpg)
• 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](https://reader034.fdocumento.com/reader034/viewer/2022042816/559b77b21a28ab6f4f8b489f/html5/thumbnails/23.jpg)
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](https://reader034.fdocumento.com/reader034/viewer/2022042816/559b77b21a28ab6f4f8b489f/html5/thumbnails/24.jpg)
• 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](https://reader034.fdocumento.com/reader034/viewer/2022042816/559b77b21a28ab6f4f8b489f/html5/thumbnails/25.jpg)
La solución es:
• SOCIO( num_socio, nombre_socio )
• PRESTAMO2( num_socio, cod_libro, fec_prest ), que están en FNBC
![Page 26: Normalizacion](https://reader034.fdocumento.com/reader034/viewer/2022042816/559b77b21a28ab6f4f8b489f/html5/thumbnails/26.jpg)
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](https://reader034.fdocumento.com/reader034/viewer/2022042816/559b77b21a28ab6f4f8b489f/html5/thumbnails/27.jpg)
• Consultar en Mysql-hispano.org el artículo Normalización de bases de datos, del cual se tomaron algunos conceptos y el primer ejemplo.