Normalizacion - 1 Junio

Embed Size (px)

Citation preview

  • 8/14/2019 Normalizacion - 1 Junio

    1/79

    A travs del siguiente ejercicio se intenta afirmar los conocimientos de normalizacin con unejemplo simplificado de una base de datos para una pequea biblioteca.

    CodLibro Titulo Autor Editorial NombreLector FechaDev

    1001 Variable compleja Murray Spiegel McGraw HillPrez Gmez,Juan

    15/04/2005

    1004 Visual Basic 5 E. Petroustsos Anaya Ros Tern, Ana 17/04/2005

    1005 Estadstica Murray Spiegel McGraw Hill Roca, Ren 16/04/2005

    1006 Oracle UniversityNancy Greenbergy Priya Nathan

    Oracle Corp.Garca Roque,Luis

    20/04/2005

    1007 Clipper 5.01 Ramalho McGraw HillPrez Gmez,Juan 18/04/2005

    Esta tabla no cumple el requisito de la Primera Forma Normal (1NF) de slo tener camposatmicos, pues el nombre del lector es un campo que puede (y conviene) descomponerse enapellido paterno, apellido materno y nombres. Tal como se muestra en la siguiente tabla.

    1NF

    CodLibro Titulo Autor Editorial Paterno Materno Nombres FechaDev

    1001Variablecompleja

    Murray Spiegel McGraw Hill Prez Gmez Juan 15/04/2005

    1004 Visual Basic 5 E. Petroustsos Anaya Ros Tern Ana 17/04/2005

    1005 Estadstica Murray Spiegel McGraw Hill Roca Ren 16/04/2005

    1006OracleUniversity

    NancyGreenberg

    OracleCorp.

    Garca Roque Luis 20/04/2005

    1006OracleUniversity

    Priya NathanOracleCorp.

    Garca Roque Luis 20/04/2005

    1007 Clipper 5.01 Ramalho McGraw Hill Prez Gmez Juan 18/04/2005

    Como se puede ver, hay cierta redundancia caracterstica de 1NF.

    La Segunda Forma Normal (2NF) pide que no existan dependencias parciales o dicho deotra manera, todos los atributos no clave deben depender por completo de la clave primaria.Actualmente en nuestra tabla tenemos varias dependencias parciales si consideramos comoatributo clave el cdigo del libro.

  • 8/14/2019 Normalizacion - 1 Junio

    2/79

    Por ejemplo, el ttulo es completamente identificado por el cdigo del libro, pero el nombredel lector en realidad no tiene dependencia de este cdigo, por tanto estos datos deben sertrasladados a otra tabla.

    2NF

    CodLibro Titulo Autor Editorial

    1001Variablecompleja

    Murray Spiegel McGraw Hill

    1004 Visual Basic 5 E. Petroustsos Anaya

    1005 Estadstica Murray Spiegel McGraw Hill

    1006OracleUniversity

    Nancy Greenberg Oracle Corp.

    1006OracleUniversity

    Priya Nathan Oracle Corp.

    1007 Clipper 5.01 Ramalho McGraw Hill

    La nueva tabla slo contendr datos del lector.

    Hemos creado una tabla para contener los datos del lector y tambin tuvimos que crear lacolumna CodLector para identificar unvocamente a cada uno. Sin embargo, esta nuevadisposicin de la base de datos necesita que exista otra tabla para mantener la informacinde qu libros estn prestados a qu lectores. Esta tabla se muestra a continuacin:

    CodLibro CodLector FechaDev

    1001 501 15/04/2005

    1004 502 17/04/2005

    1005 503 16/04/2005

    1006 504 20/04/2005

    CodLector Paterno Materno Nombres

    501 Prez Gmez Juan

    502 Ros Tern Ana

    503 Roca Ren

    504 Garca Roque Luis

  • 8/14/2019 Normalizacion - 1 Junio

    3/79

    CodLibro CodLector FechaDev

    1007 501 18/04/2005

    Para la Tercera Forma Normal (3NF) la relacin debe estar en 2NF y adems los atributos noclave deben ser mutuamente independientes y dependientes por completo de la claveprimaria. Tambin recordemos que dijimos que esto significa que las columnas en la tabladeben contener solamente informacin sobre la entidad definida por la clave primaria y, portanto, las columnas en la tabla deben contener datos acerca de una sola cosa.

    En nuestro ejemplo en 2NF, la primera tabla conserva informacin acerca del libro, losautores y editoriales, por lo que debemos crear nuevas tablas para satisfacer los requisitosde 3NF.

    3NF

    Aunque hemos creado nuevas tablas para que cada una tenga slo informacin acerca deuna entidad, tambin hemos perdido la informacin acerca de qu autor ha escrito qu libroy las editoriales correspondientes, por lo que debemos crear otras tablas que relacionencada libro con sus autores y editoriales.

    CodLibro Titulo

    1001 Variable compleja

    1004 Visual Basic 5

    1005 Estadstica

    1006 Oracle University

    1007 Clipper 5.01

    CodAutor Autor

    801 Murray Spiegel

    802 E. Petroustsos

    803 Nancy Greenberg

    804 Priya Nathan

    806 Ramalho

    CodEditorial Editorial

    901 McGraw Hill

    902 Anaya

    903 Oracle Corp.

    CodLibro codAutor

    1001 801

    1004 802

    1005 801

    1006 803

    1006 804

    1007 806

    CodLibro codEditorial

    1001 901

    1004 902

    1005 901

    1006 903

    1007 901

  • 8/14/2019 Normalizacion - 1 Junio

    4/79

    Y el resto de las tablas no necesitan modificacin.

  • 8/14/2019 Normalizacion - 1 Junio

    5/79

    CodLector Paterno Materno Nombres

    501 Prez Gmez Juan

    502 Ros Tern Ana

    503 Roca Ren

    504 Garca Roque Luis

    XxxxxxxxxxxxxxxxxxxClientes

    ID_Cliente Nombre

    Apellidos

    Nombre_Producto1 Costo_Producto1

    Imagen_Producto1 Nombre_Producto2 Costo_Producto2

    Imagen_Producto2 Fecha_Pedido

    Cantidad_Pedido

    Nombre_Cia_Envios

    La tabla se ha descrito de manera abreviada pero aun as representa la idea general.

    Cmo podra aadir un nuevo cliente en su tabla Clientes? Debera aadir un producto y un pedido tambin. Qu tal siquisiera emitir un informe de todos los productos que vende? No podra separar fcilmente los productos de los clientes conuna simple instruccin SQL. Lo bello de las bases de datos relacionales, si estn bien diseadas, es que puede hacer estofcilmente.

    La nomlalizacin tambin hace las cosas fciles de entender. Los seres humanos tenemos la tendencia de simplificar lascosas al mximo. Lo hacemos con casi todo desde los animales hasta con los automviles. Vemos una imagen de grantamao y la hacemos menos compleja agrupando cosas similares juntas. Las guas que la nomlalizacin provee crean elmarco de referencia para simplificar la estructura. En su base de datos de muestra es fcil detectar que usted tiene tresdiferentes grupos: clientes, productos y pedidos. Si sigue las guas de la nomlalizacin, podra crear las tablas basndoseen estos grupos.

    El proceso de nomlalizacin tiene un nombre y una serie de reglas para cada fase. Esto puede parecer un poco confuso alprincipio, pero poco a poco ir entendiendo el proceso, as como las razones para hacerlo de esta manera. A la mayora dela gente le encantan las hojas de clculo por la forma en la que manejan sus datos. El tiempo que le lleve reconfigurar suesquema para ajustarlo al proceso de nomlalizacin, siempre ser bien Iinvertido. Al fin y al cabo, esto le tomar menos

    CodLibro CodLector FechaDev

    1001 501 15/04/2005

    1004 502 17/04/2005

    1005 503 16/04/2005

    1006 504 20/04/20051007 501 18/04/2005

  • 8/14/2019 Normalizacion - 1 Junio

    6/79

    tiempo que el que tendra que invertir , para cortar y pegar sus columnas de datos para generar el infomle que quiere sujefe.

    Otra ventaja de la nomlalizacin de su base de datos es el consumo de espacio. Una base de datos nomlalizada puedeocupar menos espacio en disco que una no nomlalizada. Hay menos repeticin de datos, lo que tiene como consecuenciaun mucho menor uso de espacio en disco.

    Grados de normalizacinExisten bsicamente tres niveles de normalizacin: Primera Fomla Normal (1NF), Segunda Fomla Normal (2NF) y TerceraFomla Normal (3NF). Cada una de estas formas tiene sus propias reglas. Cuando una base de datos se conforma a unnivel, se considera nomlalizada a esa forma de nomlalizacin. Por ejemplo, supongamos que su

    base de datos cumple con todas las reglas del segundo nivel de nomlalizacin. Se considera que est en la Segunda FomlaNormal. No siempre es una buena idea tener una base de datos conformada en el nivel ms alto de normalizacin. Puedellevar aun nivel de complejidad que pudiera ser evitado si estuviera en un nivel ms bajo de normalizacin.

    Primera Forma Normal

    La regla de la Primera Forma Normal establece que las columnas repetidas deben eliminarse y colocarse en tablasseparadas. sta es una regla muy fcil de seguir. Observe el esquema de la tabla Cl ientes de la base de datos.

    .

    Clientes

    ID Cliente

    Nombre

    Apellidos

    Nombre_Producto1

    Costo_Producto1

    Imagen_Producto1

    Nombre_Producto2

    Costo_Producto2

    Imagen_Producto2

    Fecha_Pedido

    Cantidad_Pedido

    Nombre Cia Envios

    --

    La tabla tiene varias columnas repetidas. stas se refieren principalmente a los productos. De acuerdo con la regla, debeeliminar las columnas repetidas y crearles su propia tabla.

    Eliminacin de datos repetidos en una base de datos

    Clientes Pedidos

    ID_Clientes Nombre_Productos

    Nombre Costo_Producto

  • 8/14/2019 Normalizacion - 1 Junio

    7/79

    Apellidos Imagen_Producto

    Direccion

    Numero_Pedido

    Fecha_Pedido

    Cantidad_Pedido

    Clave_Cia_Envios

    Nombre_Ci_ Envios

    --

    Ahora tiene dos tablas. Pero todava hay un problema. No hay forma de relacionar los datos de la tabla original con los de lanueva tabla. Para hacerlo, debe aadir un campo clave a la segunda tabla de forma que se establezca la relacin. Aada ala tabla Productos una clave primaria que se llame ID_Producto y aada una clave a la tabla Clientes que la relacione conla tabla Productos. El campo ID_Producto es el candidato ideal.

    Primera Forma Normal

    Clientes Pedidos

    ID_Productos ID_Productos

    ID_Clientes Nombre_Productos

    Nombre Costo_Producto

    Apellidos Imagen_Producto

    Direccion

    Numero_Pedido

    Fecha_Pedido

    Cantidad_Pedido

    Clave_Cia_Envios

    --

    As, se ha establecido una relacin uno a varios. sta representa lo que la base de datos estar haciendo en la vida real. Elcliente tendr muchos productos que podr comprar,

    sin importar cuntos otros clientes quieran comprarlos tambin. Adems, el cliente necesitar haber pedido un productopara ser un cliente. Usted ya no est obligado a aadir

    un cliente cada vez que aade un nuevo producto a su inventario.

    Poner la base de datos en la Primera Forma Normal resuelve el problema de los encabezados de columna mltiples. Muy a

    menudo, los diseadores de bases de datos inexpertos harn algo similar a la tabla no normalizada. Una y otra vez, crearncolumnas que representen los mismos datos. En una empresa de servicios de electricidad, haba una base de datos para elcontrol de refacciones de una planta nuclear. La tabla de su base de datos, la cual contena los nmeros de parte de lasrefacciones, tena una columna repetida ms de treinta veces. Cada vez que una nueva parte se tena que dar de alta, secreaba una nueva columna para almacenar la informacin. Obviamente, el diseo de la base de datos era bastante pobre y,por lo mismo, resultaba una pesadilla para sus programadores/administradores.

    La normalizacin ayuda a clarificar la base de datos ya organizarla en partes ms pequeas y ms fciles de entender. Enlugar de tener que entender una tabla gigantesca y monoltica que tiene muchos diferentes aspectos, usted slo tiene queentender objetos pequeos y ms tangibles, as como las relaciones que guardan con otros objetos tambin pequeos. Noes necesario mencionar que un mejor entendimiento del funcionamiento de su base de datos conducir aun mejor

  • 8/14/2019 Normalizacion - 1 Junio

    8/79

    aprovechamiento de sus activos.

    Segunda Forma Normal

    La regla de la Segunda Forma Normal establece que todas las dependencias parciales se deben eliminar y separar dentrode sus propias tablas. Una depen dencia parcial es un trmino que describe a aquellos datos que no dependen de la clavede la tabla para identificarlos. En la base de datos de muestra, la informacin de pedidos est en cada uno de los registros.

    Sera mucho ms simple utilizar nicamente el nmero del pedido. El resto de la informacin podra residir en su propiatabla. Una vez que haya organizado la informacin de pedidos.

    Eliminacin de las dependencias parciales -Segunda Forma Normal

    Clientes Pedidos Productos

    ID_Productos ID_Productos ID_Producto

    ID_Clientes Nombre_Productos Fecha_Compra

    Nombre Cantidad_Pedido Costos_Productos

    Apellidos Imagen_Producto

    Direccion

    Numero_Pedido

    Nombre_Cia_Envios

    De nuevo, al organizar el esquema de esta forma puede reflejar el mundo real en su base de datos. Tendra que haceralgunos cambios en sus reglas del negocio para que esto fuera aplicable, pero para ilustrar la normalizacin, as est bien.

    Una de las mayores desventajas de la normalizacin es el tiempo que lleva hacerlo. La mayora de la gente est demasiadoocupada, y emplear tiempo para asegurarse de que sus datos estn normalizados cuando todo funciona ms o menos bien,parece ser un desperdicio de tiempo. Pero no es as. Usted tendr que emplear ms tiempo arreglando una base de datosno normalizada que el que empleara en una normalizada.

    Al haber alcanzado la Segunda Forma Normal, usted puede disfrutar de algunas de las ventajas de las bases de datosrelacionales. Por ejemplo, puede aadir nuevas columnas a la tabla Clientes sin afectar a las tablas Productos y Pedidos.Lo mismo aplica para las otras tablas. Alcanzar este nivel de normalizacin permite que los datos se acomoden de unamanera natural dentro de los lmites esperados.

    Una vez que ha alcanzado el nivel de la Segunda Forma Normal, se han controlado la mayora de los problemas de lgica.Puede insertar un registro sin un exceso de datos en la mayora de las tablas. Observando un poco ms de cerca la tablaClientes, vemos la columna Nombre_Cia_Envios. sta no es dependiente del cliente. El siguiente nivel de normalizacinexplicar cmo solucionar esto.

    Tercera Forma Normal

    La regla de la Tercera Forma Normal seala que hay que eliminar y separar cualquier dato que no sea clave. El valor deesta columna debe depender de la clave. Todos los valores deben identificarse nicamente por la clave. En la base dedatos de muestra, la tabla Clientes contiene la columna Nombre_Cia_Envios, la cual no se identifica nicamente por laclave. Podra separar estos datos de la tabla y ponerlos en una tabla aparte.

    Eliminacin de los datos que no son claves para la Tercera Forma Normal

    Clientes Productos PedidoMaestro PedidoDetallado Cias_Envios

    ID_cliente ID_Producto ID_Pedido ID_PedidoDetallado ID_Cia_Envios

    ID_Producto Nombre_Producto Fecha_Pedido ID_Pedido Nombre_Cia_Envios.

    Numero_Pedido Costos_Productos Cantidad_Pedidos Fecha_Pedido

    ID_Cia_Envios Foto_Producto Cantidad_Pedido

    Nombre

    Apellidos

  • 8/14/2019 Normalizacion - 1 Junio

    9/79

    Direccion

    Ahora todas sus tablas estn en la Tercera Forma Normal. Esto le da ms flexibilidad y previene errores de lgica cuandoinserta o borra registros. Cada columna en la tabla est identificada de manera nica por la clave, y no hay datos repetidos.Esto provee un esquema limpio y elegante, que es fcil de trabajar y expandir.

    Qu tan lejos debe llevar la normalizacin

    La siguiente decisin es qu tan lejos debe llevar la normalizacin? La normalizacin es una ciencia subjetiva. Determinarlas necesidades de simplificacin depende de usted. Si su base de datos va a proveer informacin aun solo usuario para unpropsito simple y existen pocas posibilidades de expansin, normalizar sus datos hasta la 3FN sea quiz algo extremoso.Las reglas de normalizacin existen como guas para crear tablas que sean fciles de manejar, as como flexibles yeficientes.

    A veces puede ocurrir que normalizar sus datos hasta el nivel ms alto no tenga sentido. Por ejemplo, suponga que aadeuna columna extra para la direccin en su base de datos. Es muy normal tener dos lneas para la direccin. El esquema dela tabla podra verse como se muestra a continuacin:

    ID_Cliente

    Nombre

    Apellidos

    Direccion1

    Direccion2

    De acuerdo con las reglas, si aplica la Primera Forma Normal, la columna de direccin debera sacarse de esta tabla yreemplazarse con la clave de una nueva tabla. El resultado de este esquema se muestra a continuacin:

    ID_Ciente ID_Direccion

    Nombre ID_Cliente

    Apellidos Direccion

    La base de datos ahora cumple con la Primera Forma Normal. Los clientes pueden tener ms de una direccin. El problemaaqu es que usted ha complicado demasiado una idea simple, por tratar de seguir las reglas de normalizacin. En elejemplo mostrado, la segunda direccin es totalmente opcional. Est ah slo para colectar informacin que pudierautilizarse como informacin de contacto. No hay necesidad de partir la tabla en dos y forzar las reglas de la normalizacin.En esta instancia, el exceso de normalizacin frustra el propsito para el que se utilizan los datos. Aade, de manerainnecesaria, un nivel ms de complejidad. Una buena forma de determinar si est l levando demasiado lejos sunormalizacin, es ver el nmero de tablas que tiene. Un nmero grande de tablas pudiera indicar que est normalizandodemasiado. Observe su esquema.

    Est dividiendo tablas slo para seguir las reglas o estas divisiones son en verdad prcticas? stas son el tipo de cosasque usted, el diseador de la base de datos, necesita decidir. La experiencia y el sentido comn lo pueden auxiliar paratomar la decisin correcta. La normalizacin no es una ciencia exacta. Es subjetiva.

    Existen seis niveles ms de normalizacin que no se han discutido aqu. Ellos son Forma Normal Boyce-Codd, CuartaForma Normal (4NF), Quinta Forma Normal (5NF) o

    Forma Normal de Proyeccin-Unin, Forma Normal de Proyeccin-Unin Fuerte, Forma Normal de Proyeccin-Unin ExtraFuerte y Forma Normal de Clave de Dominio. Estas formas de normalizacin pueden llevar las cosas ms all de lo quenecesita. stas existen para hacer una base de datos realmente relacional. Tienen que ver principalmente condependencias mltiples y claves relacionales.

    En resumenLa normalizacin es una tcnica que se utiliza para crear relaciones lgicas apropiadas entre tablas de una base de datos.

    Ayuda a prevenir errores lgicos en la manipulacin de datos. La normalizacin facilita tambin agregar nuevas columnassin romper el esquema actual ni las relaciones.

    Existen varios niveles de normalizacin: Primera Forma Normal, Segunda Forma Normal, Tercera Forma Normal, FormaNormal Boyce-Codd, Cuarta Forma Normal, Quinta Forma Normal o Forma Normal de Proyeccin-Unin, Forma Normal deProyeccin-Unin Fuerte, Forma Normal de Proyeccin-Unin Extra Fuerte y Forma

  • 8/14/2019 Normalizacion - 1 Junio

    10/79

    Normal de Clave de Dominio. Cada nuevo nivel o forma lo acerca ms a hacer su base de datos verdaderamenterelacional.

    Se discutieron las primeras tres formas. stas proveen suficiente nivel de normalizacin para cumplir con las necesidadesde la mayora de las bases de datos.

    Normalizar demasiado puede conducir a tener una base de datos ineficiente y hacer a su esquema demasiado complejo

    para trabajar. Un balance apropiado de sentido comn yprctico puede ayudarle a decidir cundo normalizar.

    Xxxxxxxxxxxxxxxxxxxxxxx

    Diseo de las tablas

    Una vez realizado este estudio llega el momento de crear las tablas,para ello colocaremos en cada tabla aquellos campos del tipoNuevo, teniendo cuidado de que en cada tabla no haya ningncampo que se repita. Por ejemplo, en la tabla de pedidos nocolocaremos el cdigo del producto ya que en un pedido puedehaber varios productos, para solucionar esto crearemos una tablaauxiliar que llamaremos Detalles de pedidos, en la que incluiremoslos campos: clave del producto, PrecioUnidad, Cantidad yDescuento.En nuestro ejemplo llegamos a la conclusin de que son necesariasseis tablas

    Tabla Clientes

    Nombre Tipo Tamao Otras propiedades

    IdCliente clave

    NombreCompaa

    NombreContacto

    CargoContacto

    Direccin

    Ciudad

    Regin

    CdPostal

    Pas

    Telfono

    Fax

    Tabla Compaas de envos

    Nombre Tipo Tamao Otras propiedades

    IdCompaaEnvos clave

    NombreCompaa

  • 8/14/2019 Normalizacion - 1 Junio

    11/79

    Telfono

    Tabla Detalles de pedidos

    Nombre Tipo Tamao Otras propiedades

    IdPedido clave

    IdProducto clave

    PrecioUnidad

    Cantidad

    Descuento

    Tabla Empleados

    Nombre Tipo Tamao Otras propiedades

    IdEmpleado clave

    Apellidos

    Nombre

    Cargo

    Tratamiento

    FechaNacimiento

    FechaContratacin

    Direccin

    Ciudad

    Regin

    CdPostalPas

    TelDomicilio

    Extensin

    Foto

    Notas

    Jefe

    Tabla Pedidos

    Nombre Tipo Tamao Otras propiedadesIdPedido clave

    IdCliente

    IdEmpleado

    FechaPedido

    FechaEntrega

  • 8/14/2019 Normalizacion - 1 Junio

    12/79

    FechaEnvo

    FormaEnvo

    Cargo

    Destinatario

    DireccinDestinatario

    CiudadDestinatario

    ReginDestinatario

    CdPostalDestinatario

    PasDestinatario

    Tabla Productos

    Nombre Tipo Tamao Otras propiedades

    IdProducto clave

    NombreProducto

    CantidadPorUnidad

    PrecioUnidad

    Mtodo de dependencias funcionales

    A continuacin vamos a ver un mtodo mecnico para disear lastablas de la base de datos (normalizar).Recordemos la definicin tcnica de dependencia funcional: dadosdos campos, A y B, se dice que B es funcionalmente dependiente deA si para cada valor de A existe un nico valor de B, asociado conl.Empezamos tomando aquellos campos que de una manera clarasern claves en alguna tabla como por ejemplo el Idcliente. Parasaber si un campo depende funcionalmente de otro nos hacemos elsiguiente razonamiento:

    Si conozco el Idcliente, existe un nico apellido del cliente asociado a el?,

    SI, luego los apellidos dependen funcionalmente del campo Idcliente.

    (Idcliente apellidos )

    Si conozco el IdPedido existe un nico Producto en el pedido asociado a el?,NO, ya que un pedido puede no tener un nico producto, por lo tanto elproducto no depende funcionalmente de IdPedido.

    IdEmpleado Nombre Obtencin de todas lasdependenciasfuncionales

  • 8/14/2019 Normalizacion - 1 Junio

    13/79

    IdEmpleado Apellidos

    IdEmpleado Cargo

    IdEmpleado TratamientoEmp

    IdEmpleado FechaNacimiento

    IdEmpleado FechaContratacin

    IdEmpleado Direccin

    IdEmpleado Ciudad

    IdEmpleado Regin

    IdEmpleado CdPostal

    IdEmpleado Pas

    IdEmpleado TelDomicilio

    IdEmpleado Extensin

    IdEmpleado Foto

    IdEmpleado Notas

    http://www.adrformacion.com/curso/video.htm
  • 8/14/2019 Normalizacion - 1 Junio

    14/79

    IdEmpleado Jefe

    IdPedido, IdProducto PrecioUnidadNotar que en el caso delPrecioVenta de un producto este depende a la vez del IdProductoy del IdPedido, es decir va a tener una clave doble.Esta relacin contiene todas las dependencias funcionales que yohe visto, aunque posiblemente podran determinarse mas de lasque aqu aparecen. A partir de ahora se trata de simplificar hastalograr una cobertura mnima, es decir que un campo no puededepender funcionalmente mas que de una clave.

    Para realizar el proceso de simplificar, nos basaremos en lasiguiente propiedad:

    Si tenemos que A B, y B C, se puede deducir la dependencia A

    C, siendo esta ltima dependencia redundante (sobrante).

    En nuestro ejemplo tenemos que IdPedidoIdEmpleado, y

    IdEmpleadoNombre, luego la expresin IdPedidoNombre,es redundante y podemos eliminarla. Continuaremos este procesode simplificacin hasta obtener una cobertura mnima en la queaparezcan todos los campos una sola vez.

    Simplificacin y obtencin de las tablas

    Simplificamos tachando las sobrantes.

    A

    s

    e

    s

    o

    r

    E

    s

    p

    ac

    i

    o

    d

    e

    IdPedido FechaPedido

    IdPedido FechaEntrega

    IdPedido FechaEnvo

    IdPedido FormaEnvo

    IdPedido Cargo

    IdPedido IdCliente

  • 8/14/2019 Normalizacion - 1 Junio

    15/79

    a

    d

    v

    C

    l

    as

    s

    1

    C

    l

    a

    s

    s

    2

    C

    l

    a

    s

    s

    3

    Hacemosl

    impieza

    bor

    randol

    IdPedido NombreCompaa

    IdPedido NombreContacto

    IdPedido Direccin

    IdPedido Ciudad

    IdPedido Regin

    IdPedido CdPostal

    IdPedido Pas

    IdPedido Destinatario

    IdPedido DireccinDestinatario

    IdPedido CiudadDestinatario

    IdPedido ReginDestinatario

    IdPedido CdPostalDestinatario

    IdPedido PasDestinatario

    IdPedido NombreProducto

    IdPedido IdEmpleado

    IdPedido NombreEmpleado

  • 8/14/2019 Normalizacion - 1 Junio

    16/79

    osq

    uesehant

    achado,yobtenemoslastablas

  • 8/14/2019 Normalizacion - 1 Junio

    17/79

    del

    abaseded

    atossinmasquedefinirunat

  • 8/14/2019 Normalizacion - 1 Junio

    18/79

    abla

    porcadac

    onjuntodedependenciasfuncio

  • 8/14/2019 Normalizacion - 1 Junio

    19/79

  • 8/14/2019 Normalizacion - 1 Junio

    20/79

    gru

    pamosporclavesob

    teniendol

    astab

  • 8/14/2019 Normalizacion - 1 Junio

    21/79

    las

    .

    xxxxxxxxxxxxxxxxxx

    Normalizar unatabla de ejemplo

    En los pasos siguientes sedemuestra el proceso denormalizacin de una tabla dealumnos ficticia.

    1.2.

    3.

    IdEmpl

  • 8/14/2019 Normalizacion - 1 Junio

    22/79

    ead

    o

    Apellid

    os

    IdEmplea

    do

    Cargo

    IdEmple

  • 8/14/2019 Normalizacion - 1 Junio

    23/79

    ado

    Tratamie

    ntoEmp

    IdEm

    pleado

    Fe

    chaNaci

  • 8/14/2019 Normalizacion - 1 Junio

    24/79

    mie

    nto

    IdEmple

    ado

    Fecha

    Contrataci

    n

    IdEmp

  • 8/14/2019 Normalizacion - 1 Junio

    25/79

    lea

    do

    Direcc

    in

    IdEmple

    ado

    Ciuda

    d

    IdEmp

  • 8/14/2019 Normalizacion - 1 Junio

    26/79

  • 8/14/2019 Normalizacion - 1 Junio

    27/79

    lea

    do

    Pas

    I

    dEmpleado

    TelDomicil

    io

    IdEm

  • 8/14/2019 Normalizacion - 1 Junio

    28/79

    ple

    ado

    Exten

    sin

    IdEmpl

    eado

    Foto

    IdEmpl

  • 8/14/2019 Normalizacion - 1 Junio

    29/79

    ead

    o

    Notas

    I

    dEmpleado

    Jefe

    4. AsesorEspacio de

    advAsesorEspacio de

    advClase #1022Jones412101071022Jones412143-

    011022Jones412159-024123Smith216201-014123Smith216211-024123Smith216214-

    01Segunda forma normal:eliminar datos redundantes

    1022 Jones 412

  • 8/14/2019 Normalizacion - 1 Junio

    30/79

    Tenga en cuenta los valoresde clase # varios para cada

    valor de los alumnos # en latabla anterior. Clase # no es

    funcionalmente depende delos alumnos # (claveprincipal), por lo que estarelacin no est en la formaen segundo lugar normal.

    Las dos tablas siguientesmuestran la segunda forma

    normal: 159-024123Smith216201-01211-

    02214-01Primera forma

    normal: no hay repeticingrupos

    Las tablas deben tener slodos dimensiones. Como cadaalumno est inscrito en variasclases, stas deben apareceren una tabla independiente.

    Los campos Clase1, Clase2 yClase3 de los registros

    anteriores indican que existeun problema en el diseo.

    En las hojas de clculo seutiliza con frecuencia la

    tercera dimensin, pero nodebe hacerse en las tablas.

    Otra forma de ver elproblema es considerar unarelacin de uno a varios; nose debe poner en la misma

    tabla el lado en el que hay unelemento y el lado en el quehay varios elementos. En sulugar, crear otra tabla en la

    primera forma normal,eliminando el grupo de

    repeticin (clase #), tal ycomo se muestra a

  • 8/14/2019 Normalizacion - 1 Junio

    31/79

    continuacin: IdPedido,

    IdProducto PrecioUnidad

    5.

    L

    Contrae

    restatabl

    aAmpliares

    tatabl

  • 8/14/2019 Normalizacion - 1 Junio

    32/79

    a

    Los alumnos #

    6.

    7. Los alumnos #

    IdPedido, IdProductoCantidad

    IdPedido, IdProductoDescuento

    IdCliente NombreCompaa

    IdCliente NombreContacto

    IdCliente CargoContacto

    IdCliente Direccin

    IdCliente Ciudad

    IdCliente Regin

    IdCliente CdPostal

    IdCliente Pas

    IdCliente Telfono

    IdCliente Fax

    IdProducto

  • 8/14/2019 Normalizacion - 1 Junio

    33/79

    NombreProducto

    IdProducto

    CantidadPorUnidad

    IdProducto PrecioUnidad

    IdCompaaEnvos NombreCompaaEnvos

    IdCompaaEnvos Telfono

    Clase #4123Smith216Registro101

    07143-01

    Contraerestatab

    laAmpli

    1022 Jones 412

  • 8/14/2019 Normalizacion - 1 Junio

    34/79

    ar

    estatabla

    Los alumnos #8. Asesor143-011022159-

    024123201-014123211-024123214-01Tercera forma

    normal: eliminar datos nodependientes en clave

    En el ltimo ejemplo, adv deespacio (nmero de oficina el

    asesor) dependefuncionalmente el atributo

    asesor. La solucin es moverdicho atributo de la tablaAlumnos a la tabla Personal,

    como se muestra acontinuacin:

    9.L

    Contrae

    1022 101 07

  • 8/14/2019 Normalizacion - 1 Junio

    35/79

  • 8/14/2019 Normalizacion - 1 Junio

    36/79

    es

    tatablaAmp

    liarestat

    abla

    Nombre

    Salar

    ioCargo

    Jones

  • 8/14/2019 Normalizacion - 1 Junio

    37/79

    Tel

    fonokbmtkb

    databasekbdesignkbinfokbusa

  • 8/14/2019 Normalizacion - 1 Junio

    38/79

  • 8/14/2019 Normalizacion - 1 Junio

    39/79

  • 8/14/2019 Normalizacion - 1 Junio

    40/79

  • 8/14/2019 Normalizacion - 1 Junio

    41/79

    cios

    Normalizacin

    1.

    Una

    escuela

    det

    erminada

  • 8/14/2019 Normalizacion - 1 Junio

    42/79

    tie

    ne

    un

    grupo

    de

    dormitori

    os

    en

    donde

    viven

    lo

  • 8/14/2019 Normalizacion - 1 Junio

    43/79

    s

    es

    tudiantes.

    L

    a

    escuela

    ta

    mbin

    tiene

    v

    arios

    c

  • 8/14/2019 Normalizacion - 1 Junio

    44/79

  • 8/14/2019 Normalizacion - 1 Junio

    45/79

    o

    m

    s

    de

    estos

    c

    lubes.

    Consi

    dere

    las

    siguientes

  • 8/14/2019 Normalizacion - 1 Junio

    46/79

    tabl

    as,

    que

    desc

    riben

    la

    sit

    uacin:

    ESTUDIANTE_DORM[ID_

    ESTUDIANTE,DORM,PRECIO_ANUAL_DORM]

  • 8/14/2019 Normalizacion - 1 Junio

    47/79

    ESTUDIANTE_CLUB[ID_E

    STUDIANTE,CLUB,PRECIO_ANUAL_CLUB]

    a)Paracadatabla,

    indicar1) laclave;2)cadadependenciafuncional; y3) laFormanormal.

    b)Transformecadatabla asuTerceraFormaNormal.

    2.

    Su

  • 8/14/2019 Normalizacion - 1 Junio

    48/79

  • 8/14/2019 Normalizacion - 1 Junio

    49/79

    incl

    uye

    informac

    in

    relativa

    a

    los

    pedido

    s,

    talco

  • 8/14/2019 Normalizacion - 1 Junio

    50/79

    mo

    si

    gue:

    CLIENTES[ID,NOMBRE,DIREC

    CION,TELEFONO,FECHA_PEDIDO,SABOR,CANTIDAD]

    Transforme

    est

    oen

    dos

  • 8/14/2019 Normalizacion - 1 Junio

    51/79

    tabl

    as

    relaciona

    les

    y

    encuentre

    las

    clave

    sadecua

  • 8/14/2019 Normalizacion - 1 Junio

    52/79

  • 8/14/2019 Normalizacion - 1 Junio

    53/79

    in.

    3.

    Un

    gru

    po

    de

    mdico

    s

    vive

    en

    un

    a

    peque

  • 8/14/2019 Normalizacion - 1 Junio

    54/79

    a

    ci

    udad.

    Cada

    m

    dico

    tiene

    varios

    pacien

    tes,

    pe

  • 8/14/2019 Normalizacion - 1 Junio

    55/79

    ro

    c

    ada

    paciente

    visita

    nic

    amente

    a

    un

    mdico.

  • 8/14/2019 Normalizacion - 1 Junio

    56/79

    a)

    Disee

    una

    tabla

    que

    re

    presente

    est

    a

    situac

  • 8/14/2019 Normalizacion - 1 Junio

    57/79

    in,

    usando

    nic

    amente

    los

    s

    iguientes

    atr

    ibutos:

  • 8/14/2019 Normalizacion - 1 Junio

    58/79

  • 8/14/2019 Normalizacion - 1 Junio

    59/79

  • 8/14/2019 Normalizacion - 1 Junio

    60/79

  • 8/14/2019 Normalizacion - 1 Junio

    61/79

    Ta

    blas

    La

    stablasen

    unabased

    edatos

  • 8/14/2019 Normalizacion - 1 Junio

    62/79

  • 8/14/2019 Normalizacion - 1 Junio

    63/79

    tos

    ,estasestr

    ucturassebasanenlasentida

  • 8/14/2019 Normalizacion - 1 Junio

    64/79

    des

    queseext

    raendelarealidad,cuandose

  • 8/14/2019 Normalizacion - 1 Junio

    65/79

    hac

    eelanlis

    isdelproblemaalqueseleq

  • 8/14/2019 Normalizacion - 1 Junio

    66/79

    uie

    redarsolu

    cinporunsistemainformtic

  • 8/14/2019 Normalizacion - 1 Junio

    67/79

    o.L

    asiguiente

    esunatablacontresregistr

  • 8/14/2019 Normalizacion - 1 Junio

    68/79

  • 8/14/2019 Normalizacion - 1 Junio

    69/79

    do

    yquetiene

    cuatroatributos.

    Nombre

    R

  • 8/14/2019 Normalizacion - 1 Junio

    70/79

    ef

    erencia

    sAhlo,

    Hamilto

    nM.,

  • 8/14/2019 Normalizacion - 1 Junio

    71/79

    R

    andyBr

    ownyPeterCol

    cloug

  • 8/14/2019 Normalizacion - 1 Junio

    72/79

    h.

    FoxPro

    2:GuideADev

    elope

  • 8/14/2019 Normalizacion - 1 Junio

    73/79

  • 8/14/2019 Normalizacion - 1 Junio

    74/79

    -46

    -87412ayud

    antecocina51

    2-47-84An

    a$100.0

    Jorge

  • 8/14/2019 Normalizacion - 1 Junio

    75/79

    00mes

    era321-45-

    42$150.00

    0

    $ 110.000

    Normalizacin de las tablas

    La normalizacin es un proceso en el que se toman los atributos de una entidad y sedecide qu hacer con ellos, para hacer un diseo donde no se dupliquen registros,donde se minimice el uso de la memoria de la mquina, se maximice la velocidad en

    las bsquedas de datos entre otros. A los pasos de este proceso se les conoce comoformas normales

    El proceso es difcil de entender al principio, puede tener tres o cinco pasosdependiendo del autor, es largo, con prctica y experiencia llega un momento en que

  • 8/14/2019 Normalizacion - 1 Junio

    76/79

    no se utiliza, porque el diseador de la base de datos llega al resultado final sinnecesidad de hacer todo el proceso. Por eso llega un momento en que losprogramadores no lo usan y se brincan todos los pasos llegando tambin a unresultado similar o mejor al que se llegara siguiendo todo el proceso. Vamos a

    utilizar nicamente las tres primeras formas normales, para el proceso las aplicamosen la factura del ejemplo visto en el tema pasado.

    Se quiere sistematizar el almacenamiento de la factura y para eso necesitamos unejemplo de una factura real.

    Antes de aplicar las formas normales a la factura, debemos extraer los atributos yhacer una lista con estos. El primer atributo que vemos en la parte superior es elnombre del restaurante, debajo el nmero de factura, luego los productos pedidos(Una lista de otras entidades) a lo que vamos a llamar detalle y por ltimo el total dela factura, hagamos una lista de los atributos encontrados

    Factura:

    Nombre Restaurante

    Nmero Factura

    Detalle

    Total

    Lo que hicimos fue crear una representacin de la entidad Factura, le dimos susatributos y podemos hacer ahora con estos datos una tabla en la base de datos. Pero

    cmo hago para guardar muchos productos en un solo atributo (detalle) que tiene latabla? Cmo hago para que no se repitan las facturas? Estos y otros problemas seresuelven siguiendo el proceso de la normalizacin.

    Primer forma normal:

  • 8/14/2019 Normalizacion - 1 Junio

    77/79

    Se dice que una tabla est en primera forma normal si garantiza que cada registro seanico.

    Para hacer esto debemos seleccionar de los atributos disponibles un atributo quenunca se repita, si no existe un atributo con esta caracterstica lo agregamos, esteatributo que hace a cada registro nico se le llama (clave principal). En este casotenemos un atributo que sirve para tal propsito, es el nmero de factura, losealamos como clave principal y listo.

    Factura: (Primera forma normal)

    Nombre Restaurante Nmero Factura

    Detalle

    Total

    IdPedido, IdProducto Cantidad

    IdPedido, IdProducto Descuento

    IdCliente NombreCompaa

    IdCliente NombreContacto

    IdCliente CargoContacto

    IdCliente Direccin

    IdCliente Ciudad

    IdCliente Regin

    IdCliente CdPostal

    IdCliente Pas

  • 8/14/2019 Normalizacion - 1 Junio

    78/79

    IdCliente Telfono

    IdCliente Fax

    IdProducto NombreProducto

    IdProducto CantidadPorUnidad

    IdProducto PrecioUnidad

    IdCompaaEnvos NombreCompaaEnvos

    IdCompaaEnvos Telfono

    Escribimos todas las dependencias funcionales.

    IdPedido FechaPedido

    IdPedido FechaEntrega

    IdPedido FechaEnvo

    IdPedido FormaEnvo

    IdPedido Cargo

    IdPedido IdCliente

    IdPedido NombreCompaa

    IdPedido NombreContacto

    IdPedido Direccin

    IdPedido Ciudad

  • 8/14/2019 Normalizacion - 1 Junio

    79/79

    IdPedido Regin

    IdPedido CdPostal

    IdPedido Pas

    IdPedido Destinatario

    IdPedido DireccinDestinatario

    IdPedido CiudadDestinatario

    IdPedido ReginDestinatario

    IdPedido

    CdPostalDestinatario

    IdPedido PasDestinatario

    IdPedido NombreProducto

    IdPedido IdEmpleado

    IdPedido NombreEmpleado