Clase 01 Normalizacion

download Clase 01 Normalizacion

of 31

description

base de datos 1

Transcript of Clase 01 Normalizacion

  • FACULTAD DE INGENIERIA

    EAP DE INGENIERA DE SISTEMAS

    GESTIN DE DATOS E INFORMACIN II

    Sesin01: Formas Normales de una Base de Datos

    Mg. Orleans Moiss Glvez Tapia

  • Mg. Orleans Moiss Glvez Tapia

    DEPENDENCIA FUNCIONAL

    Es una conexin entre dos o ms atributos. Por ejemplo si conocemos el valor

    de FechaDeNacimiento podemos conocer el valor de edad.

    Las dependencias funcionales del sistema se escriben utilizando una flecha,

    de la siguiente manera:

    B es funcionalmente dependiente de A

  • Mg. Orleans Moiss Glvez Tapia

    DEPENDENCIA FUNCIONAL

    Es una conexin entre dos o ms atributos. Por ejemplo si conocemos el DNI

    podemos conocer el Apellido o el Nombre de una persona en particular.

    Las dependencias funcionales del sistema se escriben utilizando una flecha,

    de la siguiente manera:

    B es funcionalmente dependiente de A

    DNI Apellido o Nombre

  • Mg. Orleans Moiss Glvez Tapia

    DEPENDENCIA FUNCIONAL TRANSITIVA

    Simblicamente:

    Con la fecha de nacimiento podemos deducir la edad, con la edad

    podemos deducir si una persona tiene permiso de conducir.

  • Cada atributo debe ser monovaluado

    Nro_Suc Nombre Localidad Departamento

    1 Sacramento 4234322 4234467 Toranzo 350 Norte Desamparados Capital

    2 Higueras 4332323 C.Cabot 3350 Oeste Rivadavia Rivadavia

    3 Espigas 4223434 4221367 Aberastain 333 Sur Concepcion Capital

    4 Santa Rita 4221123 4335678 Av. Libertador 1230 Oeste Desamparados Capital

    5 Excelencia 4228976 4223490 Av. Libertador 30 Oeste Capital Capital

    6 Castillo 4962579 Ig. de la Roza 671 Caucete Caucete

    Direccion Telefonos

    no es vlido

    atributo multivaluado

    no es vlido

    atributo compuesto

    Sucursales

    Aspectos importantes a considerar a la hora

    de disear

    Mg. Orleans Moiss Glvez Tapia

  • Nro_Suc Nombre Localidad Departamento

    1 Sacramento 4234322 4234467 Toranzo 350 Norte Desamparados Capital

    2 Higueras 4332323 C.Cabot 3350 Oeste Rivadavia Rivadavia

    3 Espigas 4223434 4221367 Aberastain 333 Sur Concepcion Capital

    4 Santa Rita 4221123 4335678 Av. Libertador 1230 Oeste Desamparados Capital

    5 Excelencia 4228976 4223490 Av. Libertador 30 Oeste Capital Capital

    6 Castillo 4962579 Ig. de la Roza 671 Caucete Caucete

    Direccion Telefonos

    Sucursales

    Mg. Orleans Moiss Glvez Tapia

  • Cada atributo debe ser monovaluado: Esto implica que la relacin anterior debiera reemplazarse por las siguientes:

    Aspectos importantes a considerar a la hora de disear

    Nro_Suc Nombre Localidad Departamento

    1 Sacramento Toranzo 350 Norte Desamparados Capital

    2 Higueras C.Cabot 3350 Oeste Rivadavia Rivadavia

    3 Espigas Aberastain 333 Sur Concepcion Capital

    4 Santa Rita Av. Libertador 1230 Oeste Desamparados Capital

    5 Excelencia Av. Libertador 30 Oeste Capital Capital

    6 Castillo Ig. de la Roza 671 Caucete Caucete

    Direccion

    Sucursales

    Mg. Orleans Moiss Glvez Tapia

  • Nro_Suc Telefono

    1 4234467

    3 4221367

    4 43356785 4223490

    1 4234322

    2 4332323

    3 4223434

    4 4221123

    5 4228976

    6 4962579

    Telefonos_Suc

    Aspectos importantes a considerar a la hora de disear

    Mg. Orleans Moiss Glvez Tapia

  • Reduccin de valores redundantes:

    Dentro de los principales objetivos en el

    diseo de relaciones

    Minimizar el espacio de

    almacenamiento

    que ocupan las relaciones

    base (archivos)

    Evitar anomalas de

    actualizacin

    Aspectos importantes a considerar a la hora de disear

    Mg. Orleans Moiss Glvez Tapia

  • Normalizacin

    Tcnica para producir un conjunto de relaciones

    pertinentes a travs de la mejor estructuracin de las entidades involucradas.

    Permite eliminar redundancia de datos y simplificar el mantenimiento de los datos

    Inicia examinando las relaciones existentes entre atributos.

    Mg. Orleans Moiss Glvez Tapia

  • 2FN Si y slo si est en 1FN y los atributos NO CLAVE dependen funcionalmente de la llave primaria (completa).

    1FN o Si los valores en las celdas son atmicos o Si dos filas o tuplas no son idnticas

    Proceso de Normalizacin

    Mg. Orleans Moiss Glvez Tapia

    B

    A C

    D

    E

    B

    A

    D

    E

    A C

  • 3FN Si est en 2FN y no existen dependencias transitivas.

    Mg. Orleans Moiss Glvez Tapia

    A B

    A C

    A E

    C D

    E F

  • 1. ordenes (id_orden, fecha, id_cliente, nom_cliente, estado, num_art, nom_art, cant, precio)

    Ordenes

    Id_orden Fecha Id_cliente Nom_cliente Estado Num_art nom_art cant Precio 2301 23/02/11 101 Martin Caracas 3786 Red 3 35,00

    2301 23/02/11 101 Martin Caracas 4011 Raqueta 6 65,00 2301 23/02/11 101 Martin Caracas 9132 Paq-3 8 4,75

    2302 25/02/11 107 Herman Coro 5794 Paq-6 4 5,00 2303 27/02/11 110 Pedro Maracay 4011 Raqueta 2 65,00

    2303 27/02/11 110 Pedro Maracay 3141 Funda 2 10,00

    PRIMERA FORMAL NORMAL (1FN)

    La 1FN prohbe 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 (los cuales forman una nueva tabla).

    Tenemos que crear una nueva tabla con la PK de la tabla base y el grupo que no se

    repite.

    EJERCICIO COMPLETO - 01

    Mg. Orleans Moiss Glvez Tapia

  • Los registros quedan ahora conformados en dos tablas que llamaremos

    ORDENES y ARTICULOS_ORDENES

    ordenes (id_orden, fecha, id_cliente, nom_cliente, estado) Articulos_ordenes (id_orden, num_art, nom_art, cant, precio)

    Ordenes Id_orden Fecha Id_cliente Nom_cliente Estado

    2301 23/02/11 101 Martin Caracas 2302 25/02/11 107 Herman Coro

    2303 27/02/11 110 Pedro Maracay

    Articulos_ordenes

    Id_orden Num_art nom_art cant Precio 2301 3786 Red 3 35,00

    2301 4011 Raqueta 6 65,00 2301 9132 Paq-3 8 4,75

    2302 5794 Paq-6 4 5,00 2303 4011 Raqueta 2 65,00

    2303 3141 Funda 2 10,00

    EJERCICIO COMPLETO

  • SEGUNDA FORMAL

    NORMAL (2FN)

    Determinar cules 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.

    Las tablas quedan ahora de la siguiente manera. Articulos_ordenes (id_orden, num_art, cant)

    Articulos_ordenes

    Id_orden Num_art cant

    2301 3786 3 2301 4011 6

    2301 9132 8 2302 5794 4

    2303 4011 2 2303 3141 2

    Articulos ( num_art, nom_art, precio)

    Articulos

    Num_art nom_art Precio 3786 Red 35,00

    4011 Raqueta 65,00 9132 Paq-3 4,75

    5794 Paq-6 5,00 3141 Funda 10,00

    Mg. Orleans Moiss Glvez Tapia

  • TERCERA FORMAL NORMAL

    (3FN)

    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.

    ordenes (id_orden, fecha, id_cliente)

    Ordenes Id_orden Fecha Id_cliente

    2301 23/02/11 101 2302 25/02/11 107

    2303 27/02/11 110

    Clientes (id_cliente, nom_cliente, estado)

    Clientes

    Id_cliente Nom_cliente Estado

    101 Martin Caracas

    107 Herman Coro 110 Pedro Maracay

    Por lo tanto la base de datos quedara: ordenes (id_orden, fecha, id_cliente)

    Clientes (id_cliente, nom_cliente, estado)

    Articulos ( num_art, nom_art, precio)

    Articulos_ordenes (id_orden, num_art, cant)

    Mg. Orleans Moiss Glvez Tapia

  • ordenes (id_orden, fecha, id_cliente)

    Ordenes Id_orden Fecha Id_cliente

    2301 23/02/11 101 2302 25/02/11 107

    2303 27/02/11 110

    Clientes (id_cliente, nom_cliente, estado)

    Clientes

    Id_cliente Nom_cliente Estado

    101 Martin Caracas

    107 Herman Coro 110 Pedro Maracay

    Por lo tanto la base de datos quedara: ordenes (id_orden, fecha, id_cliente)

    Clientes (id_cliente, nom_cliente, estado)

    Articulos ( num_art, nom_art, precio)

    Articulos_ordenes (id_orden, num_art, cant)

    Mg. Orleans Moiss Glvez Tapia

    Cul sera el Modelo Relacional?

  • Ejemplo de

    1FN

    Mg. Orleans Moiss Glvez Tapia

  • IDCliente Nombre Telefono

    45 Francisco 444444444

    275 Miguel 555555555,666666666

    No se permiten vectores de campos en una columna

    IDCliente Nombre Telefono Telefono2 Telefono3

    45 Francisco 444444444 NULL NULL

    275 Miguel 555555555 666666666 NULL

    No se permiten grupos repetidos en varias columnas

    IDCliente Nombre Telefono

    45 Francisco 444444444

    275 Miguel 555555555

    275 Miguel 666666666 Mg. Orleans Moiss Glvez Tapia

  • IDCliente Nombre

    45 Francisco

    275 Miguel

    IDCliente Telefono

    45 444444444

    275 555555555

    275 666666666

    IDCliente Nombre Telefono

    45 Francisco 444444444

    275 Miguel 555555555

    275 Miguel 666666666

    PRIMERA FORMAL NORMAL (1FN)

    Tenemos que eliminar los grupos repetidos (los cuales forman una nueva tabla).

    Tenemos que crear una nueva tabla con la PK de la tabla base y el grupo que no se

    repite.

    CLIENTES

    CLIENTES TELEFONOS_CLIENTES

    Mg. Orleans Moiss Glvez Tapia

  • IDCliente Nombre Telefono

    45 Francisco 444444444

    275 Miguel 555555555

    275 Miguel 666666666

    PRIMERA FORMAL NORMAL (1FN)

    Tenemos que eliminar los grupos repetidos (los cuales forman una nueva tabla).

    Tenemos que crear una nueva tabla con la PK de la tabla base y el grupo que no se

    repite.

    CLIENTES

    IDCliente Nombre

    45 Francisco

    275 Miguel

    CLIENTES

    IDCliente Telefono

    45 444444444

    275 555555555

    275 666666666

    TELEFONOS_CLIENTES

    Mg. Orleans Moiss Glvez Tapia

  • Ejemplo de

    2FN

    Mg. Orleans Moiss Glvez Tapia

  • IDCliente IDProducto Cantidad Nombre_producto

    29 42 1 Zapatillas deportivas de tenis

    46 9 5 Baln reglamentario de baloncesto

    204 42 1 Zapatillas deportivas de tenis

    144 10 1 Zapatillas deportivas de rugby

    Los pasos para aplicar la segunda forma normal son muy sencillos: encontrar las claves

    candidatas (compuestas), que identifican de manera nica el registro; comprobar que los campos

    que no forman parte de la clave candidata y no son parte de ella (en el ejemplo de antes ni

    IDCliente ni IDProducto deben ser analizados) dependen totalmente de la clave candidata.

    IDCliente IDProducto Cantidad

    29 42 1

    46 9 5

    204 42 1

    144 10 1

    LINEAS_PEDIDO

    IDProducto Nombre_producto

    9 Baln reglamentario de baloncesto

    10 Zapatillas deportivas de rugby

    42 Zapatillas deportivas de tenis

    PRODUCTOS

    LINEAS_PEDIDO

    Mg. Orleans Moiss Glvez Tapia

  • Ejemplo de

    3FN

    Mg. Orleans Moiss Glvez Tapia

  • IDServidor Fecha IDServicio Nombre_servicio Carga

    21 2009-01-14 1 Oracle 100

    21 2009-01-15 9 MySQL 100

    21 2009-01-16 22 Apache 85

    34 2009-01-14 3 PostgreSQL 74

    34 2009-01-15 22 Apache 58

    34 2009-01-16 22 Apache 67

    66 2009-01-14 9 MySQL 98

    66 2009-01-15 22 Apache 94

    66 2009-01-16 1 Oracle 10g 84

    Una tabla est en tercera forma normal siempre que est en segunda forma normal (y por

    consiguiente en primera) y todos sus campos no primarios (campos que no forman parte de una

    clave candidata) dependen nicamente de la clave candidata.

    CARGA_DIARIA

    IDServidor Fecha IDServicio Carga

    21 2009-01-14 1 100

    21 2009-01-15 9 100

    21 2009-01-16 22 85

    34 2009-01-14 3 74

    34 2009-01-15 22 58

    34 2009-01-16 22 67

    66 2009-01-14 9 98

    66 2009-01-15 22 94

    66 2009-01-16 1 84

    CARGA_DIARIA

    IDServicio Nombre_servicio

    1 Oracle

    9 MySQL

    22 Apache

    3 PostgreSQL

    22 Apache

    22 Apache

    9 MySQL

    22 Apache

    1 Oracle 10g

    SERVICIOS

    Mg. Orleans Moiss Glvez Tapia

    Fecha

    Carga

    Nombre_servicio IdServidor IdServicio

    Suponiendo:

  • Ejercicio Calificado

    Tenemos una empresa pblica donde los puestos de trabajo estn regulados por el

    Estado, de modo que las condiciones salariales estn determinadas por el puesto.

    Se ha creado el siguiente esquema relacional:

    EMPLEADOS(nss, nombre, puesto, salario, emails) con nss como clave primaria.

    Mg. Orleans Moiss Glvez Tapia

  • EMPLEADOS

    EMPLEADOS

    Mg. Orleans Moiss Glvez Tapia

    Reescribiendo

  • EMPLEADOS EMAILS

    Mg. Orleans Moiss Glvez Tapia

    Luego de aplicar 1 FN se obtiene:

    Las tablas anteriores al mismo tiempo tambin estn en 2 FN.

    nombre

    salario nss puesto

    Para la 3 FN qu

    tabla analizar?

  • puesto salario

    Jefe de rea 3000

    Administrativo 1500

    Administrativo 1500

    ... ...

    EMPLEADOS PUESTOS

    Mg. Orleans Moiss Glvez Tapia

    Luego de aplicar 3 FN se obtiene:

    Cul sera el Modelo Relacional?

  • Mg. Orleans Moiss Glvez Tapia

    Resumiendo:

  • Mg. Orleans Moiss Glvez Tapia

    Resumiendo: