La normalización es un proceso para diseñar bases de datos relacionales de forma que:
1) Evite la redundancia de datos al eliminar grupos repetidos y crear tablas separadas.
2) Evite problemas de actualización al eliminar dependencias parciales mediante la segunda forma normal.
3) Proteja la integridad de los datos al eliminar dependencias transitivas mediante la tercera forma normal.
https://github.com/KamilaMolinaOrellana/ArbolBinarioImplementadoEnJava
En esta presentación se muestra la estructura básica y dinámica de los árboles, de los árboles binarios además de la búsqueda binaria en los árboles.
Al final se cuenta con con un enlace que lleva al Repositorio de GitHub donde se encuentra el código implementado en JAVA libre para descargar, para que lo puedan revisar
This is a slide on relational algebra. i have discussed some common operation of relational algebra. most impotently i have add all the sql of corresponding operation and also the syntax.
https://github.com/KamilaMolinaOrellana/ArbolBinarioImplementadoEnJava
En esta presentación se muestra la estructura básica y dinámica de los árboles, de los árboles binarios además de la búsqueda binaria en los árboles.
Al final se cuenta con con un enlace que lleva al Repositorio de GitHub donde se encuentra el código implementado en JAVA libre para descargar, para que lo puedan revisar
This is a slide on relational algebra. i have discussed some common operation of relational algebra. most impotently i have add all the sql of corresponding operation and also the syntax.
2. • 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.
3. • 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.
4. • 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
5. 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.
6. – 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.
7. • 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.
8. 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?
9. • 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 el grupo
repetido y la llave que lo identifica
10. Se tienen ahora 2 relaciones:
Orden
Id_orden Fecha Id_cliente Nom_cliente Estado
Item_Orden
2301 23/03/11 101 Martí VE Id_Orden Num_Item Desc_Item Cant Precio
2302 25/03/11 102 Sports NL
2303 27/03/11 103 Mr. Tenis VE
2301 3786 Red 3 100
2301 4011 Raqueta 6 700
¿Qué atributo tienen en común las 2 2301 9132 Paq-3 8 25
relaciones?
2302 5794 Paq-6 4 55
2303 4011 Raqueta 2 700
2303 3141 Funda 2 125
11. Ahora hay que aplicar la 2FN a las relaciones resultantes
• Determinar cuáles columnas que no son llave dependen parcialmente 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.
Item_Orden
Id_Orden Num_Item Desc_Item Cant Precio
¡Observar que la
llave primaria 2301 3786 Red 3 100
(PK) de esta
2301 4011 Raqueta 6 700
relación es
compuesta! 2301 9132 Paq-3 8 25
2302 5794 Paq-6 4 55
2303 4011 Raqueta 2 700
2303 3141 Funda 2 125
12. Las relaciones resultantes son:
Item
Num_Item Desc_Item Precio Item_Orden
Id_Orden Num_Item Cant
3786 Red 100
2301 3786 3
4011 Raqueta 700
2301 4011 6
9132 Paq-3 25
2301 9132 8
5794 Paq-6 55
2302 5794 4
4011 Raqueta 700
2303 4011 2
3141 Funda 125
2303 3141 2
¿Qué representa Num_Item, en la relación Artículos_Ordenes?
¿La llave primaria de la relación Artículos_Ordenes es
compuesta?
13. Analizar la relación Ordenes
Orden
Id_orden Fecha Id_cliente Nom_cliente Estado
¿Cumple la 2FN?
Si, porque cualquier
valor único de
2301 23/03/11 101 Martí VE ID_ORDEN
determina un sólo
2302 25/03/11 102 Sports NL
valor para
2303 27/03/11 103 Mr. Tenis VE cada columna. Por lo
tanto, todas las
columnas son
dependientes de la
llave primaria
ID_ORDEN.
14. ¿Cumple la 3FN?
Orden Observar que las columnas
Id_orden Fecha Id_cliente Nom_cliente Estado
Nom_cliente y Estado son
dependientes de ID_cliente,
que es una columna no
clave o no llave
2301 23/03/11 101 Martí VE
2302 25/03/11 102 Sports NL
2303 27/03/11 103 Mr. Tenis VE
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 de la cual son
dependientes.
15. Al crear otra relación o tabla se
obtiene:
Llave foránea
Orden Cliente
Id_orden Fecha Id_cliente Id_cliente Nom_cliente Estado
2301 23/03/11 101 101 Martí VE
2302 25/03/11 102 102 Sports NL
2303 27/03/11 103 103 Mr. Tenis VE
¿La llave foránea Id_cliente, en dónde es primaria?
16. Las relaciones resultantes son:
Item Item_Orden Orden
Num_Item Desc_Item Precio Id_Orden Num_Item Cant Id_orden Fecha Id_cliente
3786 Red 100 2301 3786 3 2301 23/03/11 101
4011 Raqueta 700 2301 4011 6 2302 25/03/11 102
9132 Paq-3 25 2301 9132 8 2303 27/03/11 103
5794 Paq-6 55 2302 5794 4
Cliente
4011 Raqueta 700 2303 4011 2
Id_cliente Nom_cliente Estado
3141 Funda 125 2303 3141 2
101 Martí VE
102 Sports NL
103 Mr. Tenis VE
17. 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
18. 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:
20. • 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.
21. 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 .
22. • 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.
23. 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.
24. • 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
25. La solución es:
• SOCIO( num_socio, nombre_socio )
• PRESTAMO2( num_socio, cod_libro,
fec_prest ), que están en FNBC