Normalizacion2
Upcoming SlideShare
Loading in...5
×
 

Normalizacion2

on

  • 3,976 views

nose po

nose po

Statistics

Views

Total Views
3,976
Views on SlideShare
3,976
Embed Views
0

Actions

Likes
1
Downloads
208
Comments
0

0 Embeds 0

No embeds

Accessibility

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Normalizacion2 Normalizacion2 Presentation Transcript

    • Normalizacion en las Bases de Datos Manuel Reyes O, Ing. en Informática Docente
    • Normalización
      • El proceso de normalización de bases de datos consiste en aplicar una serie de reglas a las relaciones obtenidas tras el paso del modelo entidad-relación al modelo relacional.
      • En un principio Codd, propuso tres formas normales, a las que llamo 1era Forma Normal (1FN), 2ª (2FN) , 3ª (3FN).
    • Normalización
      • 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.
      • En el modelo relacional es frecuente llamar tabla a una relación, aunque para que una tabla sea considerada como una relación tiene que cumplir con algunas restricciones:
            • Cada columna debe tener su nombre único.
            • No puede haber dos filas iguales. No se permiten los duplicados.
            • Todos los datos en una columna deben ser del mismo tipo.
    • Primera Forma Normal
        • 1. No hay orden de arriba-a-abajo en las filas.
        • 2. No hay orden de izquierda-a-derecha en las columnas.
        • 3. No hay filas duplicadas.
        • 4. Cada intersección de fila-y-columna contiene exactamente un valor del dominio aplicable (y nada más).
        • 5. Todas las columnas son regulares [es decir, las filas no tienen componentes como IDs de fila, IDs de objeto, o timestamps ocultos].
    • Segunda Forma Normal
      • Una tabla que está en la primera forma normal (1NF) debe satisfacer criterios adicionales para calificar para la segunda forma normal.
      • Específicamente: una tabla 1NF está en 2NF si y solo si, dada cualquier clave candidata y cualquier atributo que no sea un constituyente de la clave candidata, el atributo no clave depende de toda la clave candidata en vez de solo una parte de ella.
    • Dependencias
      • Dependencia funcional
      • Una dependencia funcional son conexiones entre uno o más atributos. Por ejemplo si conocemos el valor de FechaDeNacimiento podemos conocer el valor de Edad .
      • Las dependencias funcionales se escriben utilizando una flecha, de la siguiente manera:
        • FechaDeNacimiento -> Edad
        • Aquí a FechaDeNacimiento se le conoce como un determinante. Se puede leer de dos formas FechaDeNacimiento determina a Edad o Edad es funcionalmente dependiente de FechaDeNacimiento . De la normalización (lógica) a la implementación (física o real) puede ser sugerible tener éstas dependencias funcionales para lograr mayor eficiencia en las tablas.
    • Dependencias
      • Dependencia funcional transitiva
        • Supongamos que en la relación de la figura 3.0 los estudiantes solo pueden estar matriculados en un solo curso y supongamos que los profesores solo pueden dar un curso.
            • ID_Estudiante -> Curso_Tomando
            • Curso_Tomando -> Profesor_Asignado
            • ID_Estudiante -> Curso_Tomando -> Profesor_Asignado
        • Entonces tenemos que ID_Estudiante determina a Curso_Tomando y el Curso_Tomando determina a Profesor_Asignado , indirectamente podemos saber a través del ID_estudiante el Profesor_Asignado . Entonces en la figura 3.0 tenemos una dependencia transitiva.
    • Segunda Forma Normal
      • En términos levemente más formales: una tabla 1NF está en 2NF si y solo si ninguno de sus atributos no-principales son funcionalmente dependientes en una parte (subconjunto apropiado) de una clave candidata. (Un atributo no-principal es uno que no pertenece a ninguna clave candidata).
      • Cuando una tabla 1NF no tiene ninguna clave candidata compuesta (claves candidatas consistiendo en más de un atributo), la tabla está automáticamente en 2NF.
    • Segunda Forma Normal
      • Ejemplo: Considere una tabla describiendo las habilidades de los empleados
    • Segunda Forma Normal
      • La única clave candidata de la tabla es {Empleado, Habilidad}.
      • El atributo restante, Lugar actual de trabajo , es dependiente solo en parte de la clave candidata, llamada Empleado . Por lo tanto la tabla no está en 2NF. Observe la redundancia de la manera en que son representadas los Lugares actuales de trabajo: nos dicen tres veces que Jones trabaja en la 114 Main Street, y dos veces que Ellis trabaja en 73 Industrial Way.
      • Esta redundancia hace a la tabla vulnerable a anomalías de actualización: por ejemplo, es posible actualizar el lugar del trabajo de Jones en sus registros "Mecanografía" y "Taquigrafía" y no actualizar su registro "Tallado". Los datos resultantes implicarían respuestas contradictorias a la pregunta "¿Cuál es el lugar actual de trabajo de Jones?".
      • Un alternativa 2NF a este diseño representaría la misma información en dos tablas:
    • Segunda Forma Normal
    • Segunda Forma Normal
      • Las anomalías de actualización no pueden ocurrir en estas tablas, las cuales están en 2NF.
      • Sin embargo, no todas las tablas 2NF están libres de anomalías de actualización. Un ejemplo de una tabla 2NF que sufre de anomalías de actualización es:
    • Segunda Forma Normal
      • Aunque el Ganador y la Fecha de nacimiento del ganador están determinadas por una clave completa {Torneo, Año} y no son partes de ella, particularmente las combinaciones Ganador / Fecha de nacimiento del ganador son mostradas redundantemente en múltiples registros. Este problema es tratado por la tercera forma normal (3NF).
    • Tercera Forma Normal
      • La tercera forma normal ( 3NF ) es una forma normal usada en la normalización de bases de datos. La 3NF fue definida originalmente por E.F. Codd[1] en 1971. La definición de Codd indica que una tabla está en 3NF si y solo si las dos condiciones siguientes se mantienen:
      • La tabla está en la segunda forma normal (2NF)
      • Ningún atributo no-primario de la tabla es dependiente transitivamente de una clave candidata
    • Tercera Forma Normal
      • Un atributo no-primario es un atributo que no pertenece a ninguna clave candidata. Una dependencia transitiva es una dependencia funcional X -> Z en la cual Z no es inmediatamente dependiente de X , pero sí de un tercer conjunto de atributos Y , que a su vez depende de X . Es decir, X -> Z por virtud de X -> Y y Y -> Z .
      • Una formulación alternativa de la definición de Codd, dada por Carlo Zaniolo en 1982, es ésta: Una tabla está en 3NF si y solo si, para cada una de sus dependencias funcionales X -> A , por lo menos una de las condiciones siguientes se mantiene:
          • X contiene A , ó
          • X es una superclave, ó
          • A es un atributo primario (es decir, A está contenido dentro de una clave candidata)
    • Tercera Forma Normal
      • Ejemplo:
      • La única clave candidata es {Torneo, Año}.
      • La violación de la 3NF ocurre porque el atributo no primario Fecha de nacimiento del ganador es dependiente transitivamente de {Torneo, Año} vía el atributo no primario Ganador . El hecho de que la Fecha de nacimiento del ganador es funcionalmente dependiente en el Ganador hace la tabla vulnerable a inconsistencias lógicas, pues no hay nada que impida a la misma persona ser mostrada con diferentes fechas de nacimiento en diversos registros.
      • Para expresar los mismos hechos sin violar la 3NF, es necesario dividir la tabla en dos:
    • Tercera Forma Normal
      • Las anomalías de actualización no pueden ocurrir en estas tablas, las cuales están en 3NF.
    • Resumen
      • Grados de normalización
      • Existen básicamente tres niveles de normalización: Primera Forma Normal (1NF), Segunda Forma Normal (2NF) y Tercera Forma Normal (3NF). Cada una de estas formas tiene sus propias reglas. Cuando una base de datos se conforma a un nivel, se considera normalizada a esa forma de normalización. No siempre es una buena idea tener una base de datos conformada en el nivel más alto de normalización, puede llevar a un nivel de complejidad que pudiera ser evitado si estuviera en un nivel más bajo de normalización. En la tabla siguiente se describe brevemente en que consiste cada una de las reglas, y posteriormente se explican con más detalle.
    • Resumen
      • Tabla Normalización:
    • Ejemplo
      • Al examinar estos registros, podemos darnos cuenta que contienen un grupo repetido para NUM_ITEM, DESC_ITEM, CANT y PRECIO. La 1FN prohibe los grupos repetidos, por lo tanto tenemos que convertir a la primera forma normal. Los pasos a seguir son:
            • Tenemos que eliminar los grupos repetidos.
            • Tenemos que crear una nueva tabla con la PK de la tabla base y el grupo repetido.
            • Los registros quedan ahora conformados en dos tablas que llamaremos ORDENES y ARTICULOS_ORDENES
    • Ejemplo
    • Ejemplo
      • 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:
        • Determinar cuáles columnas que no son llave no dependen de la llave primaria de la tabla.
        • Eliminar esas columnas de la tabla base.
        • Crear una segunda tabla con esas columnas y la(s) columna(s) de la PK de la cual dependen.
    • Ejemplo
      • 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 DESC_ITEM son dependientes de NUM_ITEM, 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.
    • Ejemplo
    • Ejemplo
      • 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:
        • Determinar las columnas que son dependientes de otra columna no llave.
        • Eliminar esas columnas de la tabla base.
        • Crear una segunda tabla con esas columnas y con la columna no llave de la cual son dependientes.
        • 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.
    • Ejemplo
    • FIN