SlideShare una empresa de Scribd logo
Normalización

L.I. María Luisa Velasco Ramírez
• 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.
• 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.
• 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
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.
– 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.
• 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.
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?
• 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
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
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
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?
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.
¿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.
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?
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
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
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:
• PRESTAMO1( num_socio, nombre_socio,
  cod_libro, fec_prest )

• LIBRO( cod_libro, editorial, país_edit )
• 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.
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 .
•   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.
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.
• 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
La solución es:
• SOCIO( num_socio, nombre_socio )
• PRESTAMO2( num_socio, cod_libro,
  fec_prest ), que están en FNBC
Esquema relacional resultante:

•   LIBRO1( cod_libro, editorial )
•   EDITORIAL( editorial, país )
•   SOCIO( num_socio, nombre_socio )
•   PRESTAMO2( num_socio, cod_libro,
    fec_prest )
• Consultar en Mysql-hispano.org el artículo
  Normalización de bases de datos, del cual
  se tomaron algunos conceptos y el primer
  ejemplo.

Más contenido relacionado

La actualidad más candente

Unidad 1. Fundamentos de Base de Datos
Unidad 1. Fundamentos de Base de DatosUnidad 1. Fundamentos de Base de Datos
Unidad 1. Fundamentos de Base de Datos
hugodanielgd
 
Estructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesEstructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no lineales
José Antonio Sandoval Acosta
 
Diapositiva de prueba
Diapositiva de pruebaDiapositiva de prueba
Diapositiva de pruebaJPi2013
 
Segunda forma normal
Segunda forma normalSegunda forma normal
Segunda forma normal
ITCV
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
miranda271999
 
Programación 3: árboles de búsqueda equilibrados
Programación 3: árboles de búsqueda equilibradosProgramación 3: árboles de búsqueda equilibrados
Programación 3: árboles de búsqueda equilibrados
Angel Vázquez Patiño
 
Carlos orden bdii-t2
Carlos orden bdii-t2Carlos orden bdii-t2
Carlos orden bdii-t2
Chars Orden
 
El modelo relacional
El modelo relacionalEl modelo relacional
El modelo relacionalLuis Jherry
 
Arboles Binarios y Arboles Binarios de Busqueda
Arboles Binarios y Arboles Binarios de BusquedaArboles Binarios y Arboles Binarios de Busqueda
Arboles Binarios y Arboles Binarios de Busqueda
Kamila Nicole Molina Orellana
 
NORMALIZACIÓN
NORMALIZACIÓN  NORMALIZACIÓN
NORMALIZACIÓN
Jorge Paredes Toledo
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
Victor Quintero
 
Relational algebra in DBMS
Relational algebra in DBMSRelational algebra in DBMS
Relational algebra in DBMS
Arafat Hossan
 
SQL DDL
SQL DDLSQL DDL
SQL DDL
Vikas Gupta
 
Transformación de Modelo E-R a Modelo Relacional Ejemplo y Reporte
Transformación de Modelo E-R a Modelo Relacional Ejemplo y ReporteTransformación de Modelo E-R a Modelo Relacional Ejemplo y Reporte
Transformación de Modelo E-R a Modelo Relacional Ejemplo y Reporte
Neoinquisidor
 
4. Normalización
4. Normalización4. Normalización
4. Normalización
Marcelo Herrera
 
Normalizacion de bases de datos
Normalizacion de bases de datosNormalizacion de bases de datos
Normalizacion de bases de datos
Caro_Noirgean
 
Fundamentos de Bases de Datos - Introducción
Fundamentos de Bases de Datos - IntroducciónFundamentos de Bases de Datos - Introducción
Fundamentos de Bases de Datos - Introducción
Manuel Padilla
 
Fundamentos de BD - unidad 3 modelo relacional
Fundamentos de BD - unidad 3 modelo relacionalFundamentos de BD - unidad 3 modelo relacional
Fundamentos de BD - unidad 3 modelo relacional
José Antonio Sandoval Acosta
 
Normalización de Base de Datos
Normalización de Base de DatosNormalización de Base de Datos
Normalización de Base de Datos
Jorge Luis Chalén
 

La actualidad más candente (20)

Unidad 1. Fundamentos de Base de Datos
Unidad 1. Fundamentos de Base de DatosUnidad 1. Fundamentos de Base de Datos
Unidad 1. Fundamentos de Base de Datos
 
Estructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesEstructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no lineales
 
Diapositiva de prueba
Diapositiva de pruebaDiapositiva de prueba
Diapositiva de prueba
 
Segunda forma normal
Segunda forma normalSegunda forma normal
Segunda forma normal
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
 
Programación 3: árboles de búsqueda equilibrados
Programación 3: árboles de búsqueda equilibradosProgramación 3: árboles de búsqueda equilibrados
Programación 3: árboles de búsqueda equilibrados
 
Carlos orden bdii-t2
Carlos orden bdii-t2Carlos orden bdii-t2
Carlos orden bdii-t2
 
El modelo relacional
El modelo relacionalEl modelo relacional
El modelo relacional
 
Arboles Binarios y Arboles Binarios de Busqueda
Arboles Binarios y Arboles Binarios de BusquedaArboles Binarios y Arboles Binarios de Busqueda
Arboles Binarios y Arboles Binarios de Busqueda
 
NORMALIZACIÓN
NORMALIZACIÓN  NORMALIZACIÓN
NORMALIZACIÓN
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
 
Relational algebra in DBMS
Relational algebra in DBMSRelational algebra in DBMS
Relational algebra in DBMS
 
SQL DDL
SQL DDLSQL DDL
SQL DDL
 
Transformación de Modelo E-R a Modelo Relacional Ejemplo y Reporte
Transformación de Modelo E-R a Modelo Relacional Ejemplo y ReporteTransformación de Modelo E-R a Modelo Relacional Ejemplo y Reporte
Transformación de Modelo E-R a Modelo Relacional Ejemplo y Reporte
 
Normalizacion
NormalizacionNormalizacion
Normalizacion
 
4. Normalización
4. Normalización4. Normalización
4. Normalización
 
Normalizacion de bases de datos
Normalizacion de bases de datosNormalizacion de bases de datos
Normalizacion de bases de datos
 
Fundamentos de Bases de Datos - Introducción
Fundamentos de Bases de Datos - IntroducciónFundamentos de Bases de Datos - Introducción
Fundamentos de Bases de Datos - Introducción
 
Fundamentos de BD - unidad 3 modelo relacional
Fundamentos de BD - unidad 3 modelo relacionalFundamentos de BD - unidad 3 modelo relacional
Fundamentos de BD - unidad 3 modelo relacional
 
Normalización de Base de Datos
Normalización de Base de DatosNormalización de Base de Datos
Normalización de Base de Datos
 

Destacado (20)

Practicar metodos
Practicar metodosPracticar metodos
Practicar metodos
 
Guia eejerciciospracticos
Guia eejerciciospracticosGuia eejerciciospracticos
Guia eejerciciospracticos
 
Respaldando bd
Respaldando bdRespaldando bd
Respaldando bd
 
Guia eejerciciospracticos
Guia eejerciciospracticosGuia eejerciciospracticos
Guia eejerciciospracticos
 
Ejercicio java1.1
Ejercicio java1.1Ejercicio java1.1
Ejercicio java1.1
 
Guia eejerciciospracticos
Guia eejerciciospracticosGuia eejerciciospracticos
Guia eejerciciospracticos
 
Induccion fundbd2012
Induccion fundbd2012Induccion fundbd2012
Induccion fundbd2012
 
Elementos básicos del lenguaje java alumno
Elementos básicos del lenguaje java alumnoElementos básicos del lenguaje java alumno
Elementos básicos del lenguaje java alumno
 
Ejercicio java
Ejercicio javaEjercicio java
Ejercicio java
 
Induccion fundbd2012
Induccion fundbd2012Induccion fundbd2012
Induccion fundbd2012
 
Ejercicio java1
Ejercicio java1Ejercicio java1
Ejercicio java1
 
Guia eejerciciospracticos
Guia eejerciciospracticosGuia eejerciciospracticos
Guia eejerciciospracticos
 
Proyecto finalprogramacion
Proyecto finalprogramacionProyecto finalprogramacion
Proyecto finalprogramacion
 
Arreglos java
Arreglos javaArreglos java
Arreglos java
 
Ejecutando mi primer programa en java
Ejecutando mi primer programa en javaEjecutando mi primer programa en java
Ejecutando mi primer programa en java
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
Java básico
Java  básicoJava  básico
Java básico
 
Modulos sgbd
Modulos sgbdModulos sgbd
Modulos sgbd
 
Java
JavaJava
Java
 
Guia eejerciciospracticos
Guia eejerciciospracticosGuia eejerciciospracticos
Guia eejerciciospracticos
 

Similar a Normalizacion

5. Ejercicios normalización
5. Ejercicios normalización5. Ejercicios normalización
5. Ejercicios normalización
Marcelo Herrera
 
5. ejercicios normalización
5. ejercicios normalización5. ejercicios normalización
5. ejercicios normalización
Any Saula
 
5 150111192230-conversion-gate02
5 150111192230-conversion-gate025 150111192230-conversion-gate02
5 150111192230-conversion-gate02
Dyego de Alvaro
 
5. ejercicios normalización
5. ejercicios normalización5. ejercicios normalización
5. ejercicios normalización
Doris Aguagallo
 
5. ejercicios normalización2
5. ejercicios normalización25. ejercicios normalización2
5. ejercicios normalización2
Oscar Valdivieso
 
5. ejercicios normalización
5. ejercicios normalización5. ejercicios normalización
5. ejercicios normalización
Liliana Charco
 
5. ejercicios normalización
5. ejercicios normalización5. ejercicios normalización
5. ejercicios normalización
Doris Aguagallo
 
5. ejercicios normalización
5. ejercicios normalización5. ejercicios normalización
5. ejercicios normalización
Inés Rosero
 
5. ejercicios normalización
5. ejercicios normalización5. ejercicios normalización
5. ejercicios normalización
Yoly QC
 
5. ejercicios normalización
5. ejercicios normalización5. ejercicios normalización
5. ejercicios normalizaciónWilliam Lozano
 
5. ejercicios normalización
5. ejercicios normalización5. ejercicios normalización
5. ejercicios normalizaciónjhonny tenesaca
 
5. ejercicios normalización
5. ejercicios normalización5. ejercicios normalización
5. ejercicios normalización
Cesar Yupa
 
5. ejercicios normalización
5. ejercicios normalización5. ejercicios normalización
5. ejercicios normalización
Chars Orden
 
Clase03 -ppt__228__0
Clase03  -ppt__228__0Clase03  -ppt__228__0
Clase03 -ppt__228__0
Celeste Anahi
 
Normalizacion de Base de Datos
Normalizacion de Base de DatosNormalizacion de Base de Datos
Normalizacion de Base de Datos
Ernesto
 

Similar a Normalizacion (20)

Normalizacion
NormalizacionNormalizacion
Normalizacion
 
Normalizacion
NormalizacionNormalizacion
Normalizacion
 
Normalizacion
NormalizacionNormalizacion
Normalizacion
 
Normalizacion
NormalizacionNormalizacion
Normalizacion
 
5. Ejercicios normalización
5. Ejercicios normalización5. Ejercicios normalización
5. Ejercicios normalización
 
5. ejercicios normalización
5. ejercicios normalización5. ejercicios normalización
5. ejercicios normalización
 
5 150111192230-conversion-gate02
5 150111192230-conversion-gate025 150111192230-conversion-gate02
5 150111192230-conversion-gate02
 
5. ejercicios normalización
5. ejercicios normalización5. ejercicios normalización
5. ejercicios normalización
 
5
55
5
 
5. ejercicios normalización2
5. ejercicios normalización25. ejercicios normalización2
5. ejercicios normalización2
 
5. ejercicios normalización
5. ejercicios normalización5. ejercicios normalización
5. ejercicios normalización
 
5. ejercicios normalización
5. ejercicios normalización5. ejercicios normalización
5. ejercicios normalización
 
5. ejercicios normalización
5. ejercicios normalización5. ejercicios normalización
5. ejercicios normalización
 
5. ejercicios normalización
5. ejercicios normalización5. ejercicios normalización
5. ejercicios normalización
 
5. ejercicios normalización
5. ejercicios normalización5. ejercicios normalización
5. ejercicios normalización
 
5. ejercicios normalización
5. ejercicios normalización5. ejercicios normalización
5. ejercicios normalización
 
5. ejercicios normalización
5. ejercicios normalización5. ejercicios normalización
5. ejercicios normalización
 
5. ejercicios normalización
5. ejercicios normalización5. ejercicios normalización
5. ejercicios normalización
 
Clase03 -ppt__228__0
Clase03  -ppt__228__0Clase03  -ppt__228__0
Clase03 -ppt__228__0
 
Normalizacion de Base de Datos
Normalizacion de Base de DatosNormalizacion de Base de Datos
Normalizacion de Base de Datos
 

Más de María Luisa Velasco (20)

Sql
SqlSql
Sql
 
Sql
SqlSql
Sql
 
Ejercicios normalización
Ejercicios normalizaciónEjercicios normalización
Ejercicios normalización
 
Guia eejerciciospracticos
Guia eejerciciospracticosGuia eejerciciospracticos
Guia eejerciciospracticos
 
Paradigmas de programación
Paradigmas de programaciónParadigmas de programación
Paradigmas de programación
 
Proyecto final de algoritmica
Proyecto final de algoritmicaProyecto final de algoritmica
Proyecto final de algoritmica
 
Ejercicios arreglos4
Ejercicios arreglos4Ejercicios arreglos4
Ejercicios arreglos4
 
Ejercicios arreglos2
Ejercicios arreglos2Ejercicios arreglos2
Ejercicios arreglos2
 
Seguridad bd
Seguridad bdSeguridad bd
Seguridad bd
 
Ejercicios3parte
Ejercicios3parteEjercicios3parte
Ejercicios3parte
 
Ejercicio privilegios
Ejercicio privilegiosEjercicio privilegios
Ejercicio privilegios
 
Ejercicios2parte
Ejercicios2parteEjercicios2parte
Ejercicios2parte
 
Arreglos
ArreglosArreglos
Arreglos
 
Ejercicios arreglos
Ejercicios arreglosEjercicios arreglos
Ejercicios arreglos
 
Ejercicios arreglos
Ejercicios arreglosEjercicios arreglos
Ejercicios arreglos
 
Practica controlconcurrencia
Practica controlconcurrenciaPractica controlconcurrencia
Practica controlconcurrencia
 
Arreglos
ArreglosArreglos
Arreglos
 
Practicacandados
PracticacandadosPracticacandados
Practicacandados
 
Concurrencia
ConcurrenciaConcurrencia
Concurrencia
 
Ejercicio 2 transacciones
Ejercicio 2 transaccionesEjercicio 2 transacciones
Ejercicio 2 transacciones
 

Normalizacion

  • 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:
  • 19. • PRESTAMO1( num_socio, nombre_socio, cod_libro, fec_prest ) • LIBRO( cod_libro, editorial, país_edit )
  • 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
  • 26. Esquema relacional resultante: • LIBRO1( cod_libro, editorial ) • EDITORIAL( editorial, país ) • SOCIO( num_socio, nombre_socio ) • PRESTAMO2( num_socio, cod_libro, fec_prest )
  • 27. • Consultar en Mysql-hispano.org el artículo Normalización de bases de datos, del cual se tomaron algunos conceptos y el primer ejemplo.