Lab BD Sesion5 Normalizacion

51
Laboratorio de Bases de Datos Prof. Arturo Díaz Pulido Sesión 5: NORMALIZACION EN MYSQL Interacción con interfaces de software a medida

description

Lab BD Sesion5 Normalizacion

Transcript of Lab BD Sesion5 Normalizacion

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    Sesin 5:

    NORMALIZACION EN MYSQL

    Interaccin con interfaces de

    software a medida

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    2

    Antes de iniciar la sesin tomaremos en cuenta el desarrollo de una

    plataforma para la utilidad de las bases de datos que se generan a partir de

    los casos tomados en cuenta en las prcticas del laboratorio.

    Plataformas a usar como complemento del desarrollo del curso:

    JAVA

    JSP

    PHP

    MS Excel

    Entonces en adelante todas nuestras aplicaciones tendrn el soporte de uno

    de estas plataformas de software.

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    3

    PRACTICA " Definicin y Concepto de Normalizacin

    1. El alumno deber conseguir informacin de 3

    fuentes bibliogrficas distintas, el concepto de

    Definicin.

    2. No olvidar hacer referencia de la bibliografa

    donde se tomaron los datos.

    3. Con las definiciones obtenidas, generar un

    concepto propio de lo que significa

    Normalizacin.

    4. Discutir la informacin recabada en el aula.

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    4

    Qu es la NORMALIZACIN?

    La normalizacin es un proceso que consiste en

    asignas atributos a las entidades. La

    normalizacin reduce las redundancias de los

    datos por extensin, ayuda a eliminar las

    anomalas de datos que se derivan de las

    redundancias.

    La normalizacin no elimina las redundancias de

    datos, pero si produce la redundancia

    controlada que permite vincular las tablas de

    base de datos.

    Palabras Claves: proceso, reduce, eliminacin,

    redundancia Cuando se crean bases de datos

    relacionales, un error comn es tener datos

    innecesarios. Por ejemplo, una tabla puede

    contener dos columnas: una puede ser la fecha

    de nacimiento de una persona en particular y la

    otra su edad. La informacin de la edad de una

    persona es redundante, debido a que fcilmente

    se puede calcular la edad de alguien si se sabe

    su fecha de nacimiento. Para eliminar la

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    5

    informacin redundante, se utiliza una tcnica

    conocida como normalizacin.

    Palabras Claves: datos innecesarios,

    eliminacin, redundancia

    Razones para NORMALIZAR.

    El proceso de normalizacin se hace necesario

    para:

    Evitar la redundancia de los datos y las

    inconsistencias.

    Evitar la incapacidad de almacenar ciertos

    datos.

    Evitar la ambigedad y prdida de

    informacin.

    Evitar problemas de actualizacin

    (anomalas de insercin, borrado y

    modificacin) de los datos en las tablas.

    Proteger la integridad de los datos.

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    6

    Reglas de la NORMALIZACIN.

    Existen bsicamente tres niveles de normalizacin:

    Primera Forma Normal (1FN)

    Segunda Forma Normal (2FN)

    Tercera Forma Normal (3FN)

    Cuando una base de datos se conforma a un

    nivel, se considera normalizada a esa forma de

    normalizacin. No siempre es una buena idea

    tener una base de datos conformada en el nivel

    ms alto de normalizacin, puede llevar a un

    nivel de complejidad que pudiera ser evitado si

    estuviera en un nivel ms bajo de normalizacin.

    A continuacin explicaremos a detalle el proceso

    de la normalizacin.

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    7

    Primera Forma Normal (1FN)

    La regla de la Primera Forma Normal establece que las columnas repetidas

    deben eliminarse y colocarse en tablas separadas.

    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, crearn columnas que representen

    los mismos datos.

    La normalizacin ayuda a clarificar la base de datos y a organizarla en partes

    ms pequeas y ms fciles de entender. En lugar de tener que entender una

    tabla gigantesca y monoltica que tiene muchos diferentes aspectos, slo

    tenemos que entender los objetos pequeos y ms tangibles, as como las

    relaciones que guardan con otros objetos tambin pequeos.

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    8

    Segunda Forma Normal (2FN)

    La regla de la Segunda Forma Normal establece que todas las dependencias

    parciales se deben eliminar y separar dentro de sus propias tablas.

    Una dependencia parcial es un trmino que describe a aquellos datos que no

    dependen de la llave primaria de la tabla para identificarlos.

    Una vez alcanzado el nivel de la Segunda Forma Normal, se controlan la

    mayora de los problemas de lgica.

    Podemos insertar un registro sin un exceso de datos en la mayora de las tablas.

    Tercera Forma Normal (3FN)

    Una tabla est normalizada en esta forma si todas las columnas que no son llave

    son funcionalmente dependientes por completo de la llave primaria y no hay

    dependencias transitivas.

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    9

    Comentamos anteriormente que una dependencia transitiva es aquella en la

    cual existen columnas que no son llave que dependen de otras columnas que

    tampoco son llave.

    Cuando las tablas estn en la Tercera Forma Normal se previenen errores de

    lgica cuando se insertan o borran registros.

    Cada columna en una tabla est identificada de manera nica por la llave

    primaria, y no debe haber datos repetidos. Esto provee un esquema limpio y

    elegante, que es fcil de trabajar y expandir.

    EJEMPLO.

    Se tiene la siguiente estructura y se desea normalizarla

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    10

    Como se puede observar, toda la informacin se encuentra concentrada en

    una sola tabla, esto hace que sea un poco ms difcil de entender y sobre todo

    que exista duplicidad de la informacin. Hacindonos ms difcil su

    actualizacin.

    Aplicaremos las reglas de Normalizacin a la tabla dada.

    Primera Forma Normal (1FN)

    La 1FN nos dice que: las columnas repetidas deben eliminarse y colocarse en tablas

    separadas.

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    11

    Al examinar estos registros, podemos darnos cuenta que contienen un grupo repetido para

    NUM_ITEM, DESC_ITEM, CANT y PRECIO.

    Los Pasos a seguir son :

    1. Tenemos que

    eliminar los

    grupos

    repetidos .

    2. Tenemos que

    crear una nueva

    tabla con la PK

    de la tabla base

    y el grupo

    repetido.

    3. Las tablas

    quedaran as :

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    12

    Segunda Forma Normal (2FN)

    La 2FN nos dice que : todas las dependencias parciales se deben eliminar y

    separar dentro de Las tablas

    quedaran as : sus propias tablas.

    La tabla ORDENES est en 2FN.

    Cualquier valor nico de ID_ORDEN

    determina un slo 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 continuacin es

    eliminar estas columnas de la tabla

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    13

    ARTICULOS_ORDENES y crear una tabla ARTICULOS con dichas columnas y la llave

    primaria de la que dependen.

    Tercera Forma Normal (3FN)

    La 3FN nos dice que: tenemos que eliminar cualquier columna no llave que sea

    dependiente de otra columna no llave.

    Los pasos a seguir son:

    1. Determinar las columnas que son dependientes de otra columna no llave.

    2. Eliminar esas columnas de la tabla base.

    3. 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.

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    14

    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 continuacin:

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    15

    PRACTICA No. 1 " Aplicando la Normalizacin

    1. El alumno deber conseguir informacin de un sistema

    de base de datos de su entorno social.

    2. Deber exponer en clase, el sistema seleccionado,

    (Nombre de la Empresa, Problemtica Presentada,

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    16

    Informacin de la Base de Datos antes de la

    Normalizacin.)

    3. Deber aplicar el proceso de Normalizacin en sus 3

    fases (1FN, 2FN, 3FN). Cada una de estas deber ser

    explicada de manera independiente.

    4. Dicho trabajo deber ser presentado en Papel Bond.

    Desarrollo de las Prcticas:

    Construir un programa con conexin a la plataforma de su

    eleccin.

    Concluir con la prctica solicitada en el laboratorio.

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    17

    Gua de Ejercicios

    Aplicar las reglas de normalizacin los siguientes ejercicios.

    1. Un dato sin normalizar no cumple con ninguna regla de normalizacin. Para explicar con

    un ejemplo en qu consiste cada una de las reglas, vamos a considerar los datos de la

    siguiente tabla.

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

    Ordenes

    Id_orde

    n

    Fecha Id_client

    e

    Nom_client

    e

    Estado Num_ar

    t

    nom_art can

    t

    Preci

    o

    2301 23/02/1

    1

    101 Martin Caracas 3786 Red 3 35,00

    2301 23/02/1

    1

    101 Martin Caracas 4011 Raquet

    a

    6 65,00

    2301 23/02/1

    1

    101 Martin Caracas 9132 Paq-3 8 4,75

    2302 25/02/1

    1

    107 Herman Coro 5794 Paq-6 4 5,00

    2303 27/02/1

    1

    110 Pedro Maraca

    y

    4011 Raquet

    a

    2 65,00

    2303 27/02/1

    1

    110 Pedro Maraca

    y

    3141 Funda 2 10,00

    PRIMERA FORMAL NORMAL (1FN)

    Al examinar estos registros, podemos darnos cuenta que contienen un grupo

    repetido para NUM_ART, NOM_ART, CANT y PRECIO. 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.

    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

    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

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    18

    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

    SEGUNDA FORMAL NORMAL (2FN)

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

    La tabla ORDENES est en 2FN. Cualquier valor nico de ID_ORDEN determina un

    slo 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 NOM_ART son dependientes de NUM_ART, pero no son

    dependientes de ID_ORDEN. Lo que haremos a continuacin 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.

    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

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    19

    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

    TERCERA FORMAL NORMAL (3FN)

    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 continuacin.

    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)

    Ordenes

    Id_cliente Nom_cliente Estado

    101 Martin Caracas

    107 Herman Coro

    110 Pedro Maracay

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    20

    Por lo tanto la base de datos queda de la siguiente manera:

    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)

    2. FACTURA DE COMPRA VENTA: La empresa COLOMBIAN SYSTEMS lo ha contratado como el

    Ingeniero Encargado para sistematizar la facturacin. En la siguiente FACTURA DE

    COMPRA VENTA, usted debe analizar toda la informacin disponible y aplique el proceso

    de normalizacin, hasta llegar a la Tercera Forma Normal.

    Se pide realizar la respectiva justificacin detallada de cada uno de los pasos que

    conduzcan al resultado final.

    Factura(NUM_FAC, FECHA_FAC, NOM_CLIENTE, DIR_CLIENTE, RIF_CLIENTE, CIUDAD_CLIENTE,

    TELEF_CLIENTE, CATEGORIA, COD_PROD, DESP_PROD, VAL_UNIT, CANT_PROD)

    Donde:

    NUM_FAC: Nmero de la factura de compra venta

    FECHA_FAC: Fecha de la factura de compra venta

    NOM_CLIENTE: Nombre del cliente

    DIR_CLIENTE: Direccin del cliente

    RIF_CLIENTE: Rif del cliente

    CIUDAD_CLIENTE: Ciudad del cliente

    TELEF_CLIENTE: Telfono del cliente

    CATEGORIA: Categora del producto

    COD_PROD: Cdigo del producto

    DESCRIPCION: Descripcin del producto

    VAL_UNIT: Valor unitario del producto

    CANT_PROD: Cantidad de productos q compra el cliente

    La llave primaria es Nmero de Factura de venta: NUM_FAC

    3. EMPRESA DE ENVIO DE MERCANCIA: a continuacin se agrupan todos los atributos que

    hacen parte de la base de datos para aplicarle las reglas de normalizacin. Donde se

    incluyen los nombres de los atributos con su significado

    * GUIA_NO = Numero de Guia

    * GUIA_FECHA= Fecha de la Guia

    * GUIA_HORA= Hora de la Guia

    * ORGN_RIF = Identificacion de Empresa Origen

    * ORGN_NOM = Nombre de Empresa Origen

    * ORGN_ACT = Actividad Comercial de Empresa Origen

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    21

    * ORGN_CIUDAD= Ciudad de Empresa Origen

    * ORGN_DIR = Direccion de Empresa Origen

    * ORGN_TEL = Telefono de Empresa Origen

    * ORGN_CEL = Celular de Empresa Origen

    * DEST_ID = Identificacion del destinatario

    * DEST_NOM = Nombre del destinatario

    * DEST_COD_CIUDAD = Codigo de la ciudad del destinatario

    * DEST_CIUDAD= Ciudad del destinatario

    * DEST_DIR = Direccion del destinatario

    * DEST_TEL = Telefono del destinatario

    * DEST_KM = Distancia kilometraje de Ciudad origen a ciudad del destinatario

    * CODIGO = Codigo del paquete

    * TIPO = Tipo de paquete

    * NOMBRE = Nombre del paquete

    * DESCRIPCION = Descripcin del paquete

    * VALR_ FLETE = Valor del flete

    4. Video club: En una tienda de video se necesita mantener informacin de alrededor de 3000

    casetas cada uno de los casetes tiene asignado un nmero por cada `pelcula se necesita

    conocer un ttulo y categora por ejemplo: comedia, suspenso, drama, accin, ciencia

    ficcin, etc. Se mantienen algunas copias de muchas pelculas. Se le da a cada pelcula

    una identificacin y se mantiene seguimiento de lo que contiene cada casete.

    Un casete puede venir en varios formatos y una pelcula es grabada en un solo casete;

    frecuentemente las pelculas son pedidas de acuerdo a un actor especifico Tom Cruise y

    Demi More son los ms populares es por esto que se debe mantener informacin de los

    actores que pertenecen a cada pelcula.

    No en todas las pelculas actan artistas famosos, a los clientes de la tienda le gusta conocer

    datos como el nombre real del actor, y su fecha de nacimiento.

    En la tienda se mantienen informacin solo de los actores que aparecen en las pelculas y

    que se tiene a disposicin. Solo se alquila videos a aquellos que pertenecen al club de

    videos. Para pertenecer al club se debe tener un buen crdito. Por cada miembro del club

    se mantiene una ficha con su nombre, telfono y direccin, cada miembro del club tiene

    asignado un nmero de membresa. Se desea mantener informacin de todos los casetes

    que un cliente alquila, cuando un cliente alquila un casete se debera conocer el nombre

    de la pelcula, la fecha en la que se alquila y la fecha de devolucin.

    Se pide aplicar las reglas de normalizacin hasta la tercera forma normal, teniendo las

    siguientes entidades con sus respectivos atributos:

    Alquiler (cod_alquiler, num_membresia, cod_cliente, nom_cliente, dir_cliente, telef_cliente,

    cod_cassette, fecha_alquiler, fecha_dev, valor_alquiler, cantidad)

    Cassettte (cod_cassette, num_copias, formato, cod_pelicula, titulo, categora, cod_actor,

    nom_actor, fechanac_actor, cod_tipo)

    Donde:

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    22

    cod_alquiler = Codigo del alquiler

    num_membresia = Numero de membresia

    cod_cliente = cdigo del cliente

    nom_cliente = nombre del cliente

    dir_cliente = direccin del cliente

    telef_cliente = telfono del cliente

    cod_cassette = cdigo del cassette

    fecha_alquiler = fecha del alquiler del al pelcula

    fecha_dev = fecha de devolucin de la pelicula

    valor_alquiler = valor del alquiler de la pelcula

    cantidad = cantidad de pelcula alquilada

    num_copias = nmeros de copias de cassette

    formato = formato del cassette

    titulo = nombre de la pelcula

    categora = categora de la pelcula

    cod_actor = cdigo del actor

    nom_actor = nombre del actor

    fechanac_actor = fecha de nacimiento del actor

    cod_tipo = cdigo del tipo de pelcula.

    5. Dada la siguiente relacin PRESTAMO_LIBROS (Colegio, profesor, asignatura/ habilidad,

    aula, curso, libro, editorial, fecha_prestamo) que contiene informacin relativa a los

    prstamos que realizan las editoriales a los profesores de primaria de los colegios para su

    evaluacin en alguna de las asignaturas/habilidades que imparten. Se pide aplicar las

    reglas de normalizacin y obtener su modelo relacional, indicar sus claves, atributos

    principales.

    Colegio Profesor Asignatura/

    habilidad Aula Curso Libro Editorial Fecha_prestamo

    C.P

    Cervantes

    Juan

    Prez

    Pensamiento

    Lgico 1.A01

    1er

    Grado

    Aprender

    y ensear

    en

    educacin

    infantil

    Gra 09/09/2010

    C.P

    Cervantes

    Juan

    Prez Escritura 1.A01

    1er

    Grado

    Preescolar

    Rubio,N56

    Tcnicas

    Rubio 05/05/2010

    C.P

    Cervantes

    Juan

    Prez

    Pensamiento

    Numrico 1.A01

    1er

    Grado

    Aprender

    y Ensear

    en

    educacin

    infantil

    Gra 05/05/2010

    C.P

    Cervantes

    Alicia

    Garca

    Pensamiento

    Espacial,

    Temporal y

    causal

    1.B01 1er

    Grado

    Educacin

    Infantil N9

    Prentice

    Hall 06/05/2010

    C.P

    Cervantes

    Alicia

    Garca

    Pensamiento

    Numrico 1.B01

    1er

    Grado

    Aprender

    y ensear

    en

    Gra 06/05/2010

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    23

    educacin

    infantil

    C.P

    Cervantes

    Andrs

    Fernndez Escritura 1.A01

    2do

    Grado

    Aprender

    y ensear

    en

    educacin

    infantil

    Gra 09/09/2010

    C.P

    Cervantes

    Andrs

    Fernndez Ingles 1.A01

    2do

    Grado

    Saber

    educar:

    gua para

    Padres y

    Profesores

    Temas

    de Hoy 05/05/2010

    C.P

    Quevedo

    Juan

    Mndez

    Pensamiento

    Lgico 2.B01

    1er

    Grado

    Saber

    educar:

    gua para

    Padres y

    Profesores

    Temas

    de Hoy 18/12/2010

    C.P

    Quevedo

    Juan

    Mndez

    Pensamiento

    Numrico 2.B01

    1er

    Grado

    Aprender

    y ensear

    en

    educacin

    infantil

    Gra 06/05/2010

    6. Se tiene una relacin del REPORTE_MATRICULA (cdigo_alumno, nombre_alumno,

    especialidad, codigo_curso, nombre_curso, nombre_docente, oficina, seccin) se pide

    aplicar las reglas de normalizacin llegando hasta las 3FN.

    Cdigo

    /

    alumno

    Nombre/

    alumno

    Especialid

    ad

    Cdigo/

    curso

    Nombre_curs

    o

    Nombre/

    docente Oficina

    curs

    o

    382145

    A

    Luis

    Zuloaga Industrial MA123

    Matemtica

    2

    Carlos

    Arambulo CB-214 U

    382145

    A

    Luis

    Zuloaga Industrial QU514

    Fsica

    Qumica

    Petra

    Rondinel CB-110 U

    382145

    A

    Luis

    Zuloaga Industrial AU521 Descriptiva

    Vctor

    Moncada CB-120 W

    360247k Ral Rojas Sistemas PA714 Investigacin

    1

    Cesar

    Fernadez SC-220 V

    360247k Ral Rojas Sistemas MA123 Matemtica

    2

    Carlos

    Arambulo CB-214 V

    360247k Ral Rojas Sistemas AU511 Dibujo Vctor

    Moncada CB-120 U

    7. Se presenta una base de datos de una biblioteca, aplicar las reglas de normalizacin

    simplificando hasta la tercera forma normal.

    Prestamos_libro (codLibro, Titulo, Autor, Editorial, NombreLector, Fechadev)

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    24

    codLibro Titulo Autor Editorial nombreLector Fechadev

    1001 Variable

    compleja

    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

    1006 Oracle

    University

    Nancy Greenberg y Priya

    Nathan

    Oracle

    Corp.

    Garca Roque,

    Luis

    20/04/2005

    1007 Clipper 5.01 Ramalho McGraw Hill Prez Gmez,

    Juan

    18/04/2005

    Observacin

    Los modelos generados despus de la normalizacin, debern

    mostrar su diccionario de datos respectivamente desde MySQL

    Workbench.

    URL de descarga: wb-datadict-plugin

    https://bitbucket.org/sirgazil/wb-datadict/downloads

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    25

    Diccionario de Datos (DD) [Un Remember]

    El diccionario de datos es una herramienta fundamental en el modelado de sistemas.

    Las herramientas grficas, como los diagramas de flujo de datos, los diagramas de

    estructura, los diagramas de transicin de estados, etc., son de mucha importancia al

    modelar la estructura de los sistemas (estructuras funcionales, estructuras de mdulos,

    estructuras de comportamiento, etc.) y permiten una interpretacin general de las

    ideas modeladas pero, no son completos. Para contar con una especificacin

    completa es preciso tener una descripcin textual de los detalles que no pueden ser

    especificados en el diagrama.

    El diccionario de datos es una lista organizada de todos los elementos de datos que le

    son pertinentes al sistema (todos los nombres de las componentes de los diagramas),

    con definiciones precisas y rigurosas para que el usuario y el analista de sistemas

    puedan conocer todas las entradas, salidas, componentes de depsitos y estructuras

    intermedias existentes en el sistema. El diccionario de datos describe:

    El significado de los flujos y depsitos presentes en los DFDs.

    La composicin de los paquetes agregados de datos (paquetes compuestos o

    tems compuestos) que son transportados por los flujos de datos y que pueden

    ser divididos en tems ms elementales.

    La composicin de las estructuras de datos en los depsitos.

    Los valores y unidades relevantes de los tems elementales de informacin de

    los flujos de datos y depsitos de datos.

    Los detalles de las relaciones entre los depsitos de datos.

    Notacin

    Existen muchas propuestas para la notacin a ser utilizada en el diccionario de

    datos. La que se presenta a continuacin es una de las ms comunes, que utiliza un

    conjunto reducido y simple de smbolos:

    Smbol

    o

    Se lee Ejemplo de

    la Sintaxis

    Interpretacin

    := Se define por o Se compone

    de

    I := Y El tem I est definido por la expresin

    Y

    + Junto con o Y

    I := A + B El tem I est compuesto de A y B (la

    concatenacin de A con B)

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    26

    ( ) Opcional I := A + ( B ) El tem I est compuesto de A y B , o de A slo (B es opcional)

    { }

    i { } s

    Repeticiones de o Iteraciones de o Secuencia de

    I := { A }

    I := 1 { A } 10

    El tem I est compuesto de una

    secuencia de As (iteracin)

    El tem I est compuesto de una

    secuencia de As (mnimo 1 y mximo

    10).

    [ | ] Uno entre" u O

    I := [ A | B |

    C ]

    El tem I est compuesto de A o B o

    C. Slo uno de ellos. (o exclusivo)

    ** Comentario

    * Texto * El Texto entre asteriscos es un

    comentario

    @ Campo Clave

    @ A El elemento A es uno de los campos

    clave de un depsito de datos.

    Ejemplos

    CLIENTE := { cliente } * el archivo de Clientes *

    cliente := nro_cliente + nombre_cliente + direccin_para_remito + crdito

    nro_cliente := * identificador interno de un cliente, campo clave del depsito

    un nmero entre 1 y 999 *

    crdito := [Positivo | Negativo]

    nombre_cliente := ttulo_de_cortesa + primer_nombre + (nombre-intermedio) +

    apellido

    ttulo_de_cortesa := [ Sr. | Srta. | Sra. | Dr. | Prof. | Don | Doa]

    primer_nombre := 1{ caracter_vlido }30

    nombre_intermedio := 1{ caracter_vlido }30

    apellido := 1{ carcter_vlido }30

    carcter_vlido := [ letra | dgito | ' | - | ]

    dgito := [0 | 1 | 2 | 3 | 4| 5| 6| 7| 8| 9]

    letra := [letra_en_mayscula | letra_en_minscula] * [A ... Z | a ... z]*

    direccin_para_remito := calle + nmero_dir + (departamento) + (localidad) *si la

    localidad no se detalla, la direccin es de Tandil*

    calle := {carcter_valido}

    nmero_dir := {dgito}

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    27

    localidad := [Tandil | Villa Cacique | Barker | Jurez | Lobera | Posadas] *

    localidades en las que se entregan pedidos *

    pedido := nro_cliente + nombre_cliente + direccin_para_remito + 1

    {item_pedido} 10 * un pedido puede contener hasta 10 items *

    item_pedido := cdigo_artculo + nombre_artculo + cantidad

    cdigo_artculo := 1 {dgito} 3 * identificador interno de un artculo, un nmero de

    hasta tres dgitos *

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    28

    Sesin 6: Conectividad de

    Bases de Datos

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    29

    JDBC

    La API de JDBC provee acceso a datos desde Java. Usando esta API podemos acceder a

    variadas fuentes de datos: bases de datos relacionales, hojas de clculo (spreadsheets) y

    archivos planos.

    Este paquete permite conectarse a una base de datos, consultarla o actualizarla usando SQL.

    Su manejo es de importancia debido a la frecuencia con que las bases de datos son usadas

    hasta hoy. En resumen es un puente a los datos

    As como con Java se logra independencia de la plataforma, al trabajar con JDBC se logra

    adems independencia del proveedor de la base de datos.

    Una dificultad enfrentada por los desarrolladores de JDBC fue que existen muchos proveedores

    de bases de datos cada uno usando su propio protocolo. Es as como se acord el desarrollo

    de una API Java para SQL, la cual accede la base de datos va un administrador de drivers de

    terceros los cuales se conectan a bases de datos especficas. Cada proveedor de bases de

    datos deba generar su propio driver conectable al administrador de drivers.

    JDBC sigue un modelo similar al de ODBC. Por esto una opcin comn es conectar JDBC a

    travs de un driver que acta como puente entre JDBC y ODBC, ver Figura .

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    30

    Es necesario instalar dicho conector para que las mquinas proveedoras de datos lo usen.

    Con MySQL instalado y el driver JDBC instalado podemos ejercitar la conexin de Java con su

    base de datos.

    Todo programa Java que desea conectarse a una base de datos necesita cargar el driver

    especfico para la base de datos a usar.

    Para esto se usa:

    1

    2

    3

    4

    5

    6

    try { // Se carga el driver JDBC

    Class.forName("com.mysql.jdbc.Driver");

    catch( Exception e ) {

    System.out.println( "No se pudo cargar el Drive." );

    return;

    }

    Luego su programa debe conectarse con la base de datos especfica, la cual debe estar

    previamente creada. Para esto se usa:

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    31

    1

    2

    3

    4

    5

    6

    7

    8

    Connection conexion;

    Statement sentencia;

    try {

    conexion = DriverManager.getConnection( "jdbc:mysql://nombreBaseDatos,"usuario","password");

    sentencia = conexion.createStatement();

    } catch( SQLException e ) {

    System.out.println("Error en la operacin" + e.getMessage());

    }

    Ejemplo

    ConsultasClientesBanco.java

    Este ejemplo supone que exite una Base de Datos "Banco" ya registrada con mySql, que

    contiene la tabla "Clientes" con los campos "rut, nunCuenta, nombre, fechaActivacion y saldo",

    para una serie de clientes.

    El programa se conectar con esta BD y realizar una serie de consultas a sta mediante un

    menu de opciones.

    1

    2

    3

    4

    5

    6

    7

    8

    import java.sql.*;

    import java.util.*;

    class ConsultasClientesBanco {

    static public void main( String[] args ) {

    Connection conexion = null;

    Statement sentencia;

    ResultSet resultado;

    int op = 0, rutbuscado = 0;

    String consulta;

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    32

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    Scanner s = new Scanner(System.in);

    System.out.println( "Conectandose con la Base de datos Banco..." );

    try { // Se carga el driver JDBC

    Class.forName("com.mysql.jdbc.Driver");

    } catch( Exception e ) {

    System.out.println( "No se pudo cargar el Drive." );

    return;

    }

    try {

    conexion = DriverManager.getConnection("jdbc:mysql://localhost/Banco",

    "root","");

    System.out.println( "Conexion establecida" );

    sentencia = conexion.createStatement();

    do {

    System.out.println("1) Mostrar todos los datos");

    System.out.println("2) Mostrar los clientes con saldo mayor a $100.000");

    System.out.println("3) Obtener el saldo promedio de todos los clientes");

    System.out.println("4) Mostrar datos de un determinado cliente");

    System.out.println("5) Fin");

    System.out.print("Ingrese opcion: ");

    op = s.nextInt();

    switch(op) {

    case 1: resultado = sentencia.executeQuery("Select * from Clientes");

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    while (resultado.next()){

    System.out.println("Rut = " + resultado.getInt("rut"));

    System.out.println("Numero de cuenta = " +

    resultado.getInt("numCuenta"));

    System.out.println("Nombre cliente = "

    + resultado.getString("nombre"));

    System.out.println("Fecha activacion = "

    + resultado.getDate("fechaActivacion"));

    System.out.println("Saldo = " + resultado.getInt("saldo"));

    System.out.println();

    }

    break;

    case 2: consulta = "Select nombre from Clientes where saldo > 100000";

    resultado = sentencia.executeQuery(consulta);

    while (resultado.next())

    System.out.println("Nombre cliente = "

    + resultado.getString("nombre"));

    break;

    case 3: consulta = "Select avg(saldo) from Clientes";

    resultado = sentencia.executeQuery(consulta);

    while (resultado.next())

    System.out.println("Saldo promedio = " + resultado.getInt(1));

    break;

    case 4: System.out.print("Ingrese rut cliente: ");

    rutbuscado = s.nextInt();

    consulta = "Select * from Clientes where rut = " + rutbuscado;

    resultado = sentencia.executeQuery(consulta);

    while (resultado.next()){

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    34

    59

    60

    61

    62

    63

    64

    65

    66

    67

    68

    69

    70

    71

    72

    73

    74

    75

    76

    77

    78

    79

    80

    81

    82

    System.out.println("Rut = " + resultado.getInt("rut"));

    System.out.println("Numero de cuenta = "

    + resultado.getInt("numCuenta"));

    System.out.println("Nombre cliente = "

    + resultado.getString("nombre"));

    System.out.println("Fecha activacion = "

    + resultado.getDate("fechaActivacion"));

    System.out.println("Saldo = " + resultado.getInt("saldo"));

    }

    break;

    }

    } while (op != 5);

    sentencia.close();

    conexion.close();

    } catch( SQLException e ) {System.out.println("Error en la operacion"

    + e.getMessage()); }

    }

    }

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    35

    Conectividad desde un lenguaje husped

    PHP puede conectarse con bases de datos de dos formas: mediante el uso directo de funciones

    propias del intrprete que dependen del gestor de base de datos usadas o a trves del estndar

    ODBC (Open Data Base Connectivity).

    En PHP el trabajo con la base de datos se basa en tres etapas fundamentales:

    1. Establecer contacto con la base de datos

    2. Realizar las operaciones necesarias

    3. Cerrar los recursos empleados

    Conectar con una base de datos MySQL - PHP

    Para conectarse con una base de datos es necesario crear una conexin con el servidor. Esto

    se logra en PHP mediante el uso de la funcin mysql_connect(). Sintaxis

    1 mysql_connect($ruta, $usuario, $password);

    Parmetro Descripcin

    $ruta Opcional. Especfica el servidor al cual se conecta. El valor por defecto es

    "localhost:3306".

    $usuario Opcional. Identifica el usuario. El valor por defecto es el nombre de usuario

    propietario del proceso.

    $password Opcional. El valor por defecto es "". No recomendado

    ruta invariablemente en un servidor de paga o remoto sera LOCALHOST

    Ejemplo de conexin de una base de datos MySQL desde PHP

    lnea 6 mediante la funcin mysql_connect nos conectamos al gestor MySQL

    La funcin mysql_error, devuelve el texto del mensaje de error de la ltima operacin MySQL

    Mediante la funcin mysql_select_db seleccionamos la base datos (lnea 8)

    mysql_close cierra la conexin a la base de datos (lnea 10).

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    36

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    Crear una base de datos en MySQL - PHP

    La sentencia CREATE DATABASE es usada para crear una base de datos en MySQL. Su

    sintaxis es la siguiente:

    1 CREATE DATABASE nombre

    Para generar esta sentencia desde PHP usaremos las siguiente funciones:

    La funcin mysql_connect() nos conecta al servidor mysql con los parmetros ruta, login y

    password. $ruta indica el sitio donde estaran nuestros datos. La rutalocalhost funciona

    regularmente cuando nos conectamos a un servidor instalados en nuestra pc o aun servidor

    de paga.

    La funcion mysql_query ejecuta una sentencia SQL.

    La funcin mysql_close() nos lleva los datos de la memoria principal a un almacenamiento

    secundario.

    die muestra el mensaje de error indicado por pantalla y finaliza el script actual en el punto en

    el que se encuentre. No devuelve valor alguno.

    Ejemplo de creacin de una base de datos MySQL desde PHP

    mysql_connect (lnea 3) hace una conexin a la base de datos

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    37

    mysql_query (lnea 8) hace una consulta en este caso crea la base de datos.

    mysql_close (lnea 13) cierra la conexin a la base de datos

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    Crear una tabla en MySQL - PHP

    El componente principal de una base de datos son las tablas, MySQL tiene varios tipos de

    tablas, nosotros usaremos en este sitio las tablas InnoDB, por razones de integridad referencial

    y concurrencia.

    Ejemplo: El Campeonato Mundial de Pilotos es otorgado por la Federacin Internacional de

    Automovilismo al piloto de Frmula 1 ms exitoso de la temporada, determinado por el sistema

    de puntuacin en relacin con los resultados de los Grandes Premios. El primer Campeonato

    Mundial de Pilotos fue otorgado en la temporada 1950 a Giuseppe Farina. Considere la

    siguiente tabla de datos correspondientes a los campeones de Formula 1 (2000 - 2011) y sus

    escuderias.

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    38

    Ao Campen Escudera

    2013 Sebastian Vettel Red Bull Racing

    2012 Sebastian Vettel Red Bull Racing

    2010 Sebastian Vettel Red Bull Racing

    2009 Jenson Button Brawn GP

    2008 Lewis Hamilton McLaren

    2007 Kimi Raikkonen Ferrari

    2006 Fernando Alonso Renault

    2005 Fernando Alonso Renault

    2004 Michael Schumacher Ferrari

    2003 Michael Schumacher Ferrari

    2002 Michael Schumacher Ferrari

    2001 Michael Schumacher Ferrari

    2000 Michael Schumacher Ferrari

    A continuacin se presenta el cdigo MySQL necesario para crear una tabla

    1

    2

    3

    4

    5

    6

    CREATE TABLE f1 (

    year INT,

    campeon CHAR( 35 ) NOT NULL,

    escuderia CHAR( 35 ) NOT NULL,

    PRIMARY KEY ( year )

    ) ENGINE = InnoDB;

    A continuacin se presenta el correspondiente cdigo PHP

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    39

    En la lnea 9 se crea una conexin a la base datos mediante la funcin mysql_connect

    La funcin mysql_select_db nos permite seleccionar la base de datos (lnea 10)

    mysql_query nos permite box10 box un query a la base de datos (lnea 12)

    Mediante la funcin mysql_close cerramos la conexin a la base de datos.

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    Ejemplo: Los XVI Juegos Panamericanos se llevaron a cabo del 14 al 30 de octubre de 2014,

    en la ciudad de Lima, Peru. sta es la tercera vez que nuestro pas organiza unos juegos

    panamericanos y la primera vez que se organizan fuera de la Ciudad de Lima. En esta actividad

    crearemos una tabla que contendr el medallero de esta competencia.

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    40

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    Insertar registros en una tabla.

    La sentencia INSERT INTO es usada para agregar registros en una tabla de base de datos.

    La sentencia tiene dos sintaxis genericas validas

    La primera se usa si insertaremos valores en todas las columnas que componen la tabla

    1

    2

    INSERT INTO nombre_tabla

    VALUES (valor1, valor2, valor3,...)

    La segunda se usa cuando solo ingresaremos datos en algunas columnas

    1

    2

    INSERT INTO nombre_tabla (columna1, columna2, columna3,...)

    VALUES (valor1, valor2, valor3,...)

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    41

    Ejemplo: Insercin de registros en MySQL con PHP usaremos el caso de Formula 1

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    42

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    mysql_select_db( $db, $conexion ) or die(mysql_error());

    $query = 'DELETE FROM panamericanos';

    mysql_query($query, $conexion) or die(mysql_error());

    $query = 'INSERT INTO panamericanos VALUES';

    $query .= "('Estados Unidos','usa.png',92,79,65,236),";

    $query .= "('Cuba','cuba.png',58,35,43,136),";

    $query .= "('Brasil','brasil.png',48,35,58,141),";

    $query .= "('Mxico','mexico.png',42,41,50,133),";

    $query .= "('Canad','canada.png',30,40,49,119),";

    ...

    $query .= "('Guyana','guyana.png',0,0,1,1),";

    $query .= "('Panam','panama.png',0,0,1,1)";

    mysql_query($query, $conexion) or die(mysql_error());

    mysql_close($conexion);

    echo 'Operacin exitosa';

    ?>

    Insertar registros en una tabla desde una forma

    La funcin isset checa si una variable fue declarada

    $_SERVER['REQUEST_METHOD'] permite determinar de donde proviene la llamada

    1

    2

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    43

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    $year = $_POST['year'];

    $campeon = $_POST['campeon'];

    $escuderia = $_POST['escuderia'];

    if(!(isset($year) && !empty($year)

    && isset($campeon) && !empty($campeon)

    && isset($escuderia) && !empty($escuderia)

    )

    ) {

    echo "Todos los campos son necesarios";

    } else {

    $n = date('Y'); // Obtiene el ao actual

    if ($year >= 1950 and $year

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    44

    28

    29

    30

    31

    32

    33

    34

    mysql_close($conexion);

    } else echo 'Ao fuera de rango';

    }

    }

    ?>

    Mostrar el contenido de una tabla

    La sentencia SELECT nos permite recuperar los registros de una tabla. La sintaxis bsica es:

    1 SELECT * FROM nombre_tabla WHERE condicin

    En el caso de una consulta usaremos bsicamente las siguientes funciones

    mysql_query() ejecuta una sentencia valida sobre la base de datos. Para el caso de

    un SELECT regresa 0 o ms registros.

    mysql_num_rows() regresa el nmero de registros otorgados por mysql_query().

    mysql_fetch_assoc regresa un conjunto de registros obtenidos por mysql_query().

    Ejemplo: Muestra los campeones de Frmula 1 desde 1950 hasta el 2010.

    1

    2

    3

    4

    5

    6

    7

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    45

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    mysql_select_db( $db, $conexion ) or die(mysql_error());

    $query = "SELECT * FROM f1 ORDER BY year DESC";

    $registros = mysql_query($query, $conexion)

    or die(mysql_error());

    $n = mysql_num_rows($registros);

    mysql_close($conexion);

    if ($n > 0) { // si hay registros

    $html = 'Campeones de Formula 1';

    $html.= '';

    $html.= 'AoCampen';

    $html.= 'Escudera';

    while ($registro = mysql_fetch_assoc($registros)) {

    $html.= '';

    $html.= ''. $registro['year'].'';

    $html.= ''. $registro['campeon'].'';

    $html.= ''. $registro['escuderia'].'';

    } $html.= '';

    echo $html;

    } ?>

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    46

    Conectividad con dispositivos moviles

    La tecnologa mvil ha mostrado un crecimiento tal que el nmero de usuario de telefona mvil

    en el mundo asciende a los 5,000 millones de usuarios [1]. En el caso de Mxico, datos de Junio

    de 2010 revelan que existen alrededor de 87 millones de usuarios de telefona celular [2].

    Este crecimiento ha trado consigo avances tecnolgicos en redes y dispositivos desde la

    llamada primera generacin analgica (1G) hasta la cuarta generaciones (4G). En la actualidad

    se cuenta con dispositivos avanzados, porttiles y de grandes capacidades tecnolgicas

    conocidos como telfonos inteligentes -denotados como smartphones en este trabajo- los

    cuales son altamente convergentes y multifuncionales [3][4].

    El primer aspecto clave para la interaccin y comunicacin de los usuarios mediante cualquier

    dispositivo smartphone independientemente del tipo o modelo, sistema operativo y navegador

    con el que cuenten (ver Figura 1).

    Figura 1 Caractersticas genricas de los smartphones con conectividad 4G

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    47

    El segundo aspecto clave es la conectividad que ofrece la tecnologa celular de tercera

    generacin que permite al usuario obtener una conexin a Internet de forma rpida y

    transparente mediante smartphones que cuentan con dicha conectividad 4G.

    Esto se logra mediante la arquitectura basada en capas que describe la funcionalidad de las

    redes 3G a travs de las funciones de transporte, control y aplicacin (ver Figura 2). La capa de

    transporte maneja la informacin del usuario y los flujos de sealizacin, la capa de control aloja

    y gestiona los servicios y sus dominios, mientras que la capa de aplicacin proporciona el

    ingreso a las plataformas mediante las cuales se accede a servicios tales como Internet.

    Figura 2 Arquitectura

    El tercer aspecto clave es la arquitectura del servidor web que integra los servicios de

    almacenamiento y las bases de datos que lo conforman. Esta arquitectura permite la operacin

    y acceso sin necesidad de desarrollar aplicaciones especficas para cada tipo y modelo de

    smartphone. Con tal premisa se opta por implementar la arquitectura de referencia para un

    servidor web descrita en la Figura 3. En esta figura se describe el flujo de datos y dependencias

    entre subsistemas para responder a las peticiones del cliente mediante el procesamiento de

    dichas peticiones para brindarle acceso de forma transparente.

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    48

    Figura 3 Arquitectura de referencia para un servidor web

    La implementacin de una arquitectura de servidor web ofrece la flexibilidad de utilizar

    tecnologas disponibles tanto comerciales y de cdigo abierto. Particularmente opt por utilizar

    las de cdigo abierto mediante la configuracin de un servidor web (Linux, Apache, JQuery,

    MySQL, PHP) lo que permite una operacin de forma transparente. Esto debido a que el usuario

    solo interacta con el cliente, es decir el smartphone.

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    49

    JMobil

    JQueryMobile es un Framework javaScript para el desarrollo rpido y fcil de sitios webs

    optimizados para telfonos mviles. Con este framework, aceleramos la velocidad de desarrollo

    de aplicaciones, encapsulando muchas tareas comunes ue se realizan cuando usamos el

    lenguaje JavaScript. Agrega una capa ms a JQuery e intenta suplir algunas necesidades que

    los programadores de dispositivos mviles padecen.

    En el pasado, un desarrollador tena que programar segn para qu dispositivo concreto, lo que

    alargaba los tiempos de desarrollo y mantenimiento de los sitios webs. Ahora con JQueryMobile,

    evitamos conocer la lgica especfica de cada dispositivo y nos centramos en la programacin

    para un solo fin, el navegador de un telfono mvil./p>

    index.html

    El siguiente script presenta una imterface de login sencilla pero funcional.Escrito con html

    5 pero con apoyo de JQuery Mobil Demo login jqm Login con JQM Usuario: Contrasea:

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    50

    Error Usuario o contrasea no valida Aceptar

    login.js

    Jquery Mobil permite la interaccin html PHP

    $(document).ready(function(){ $('#errorMsg').hide(); $('#btnLogin').click(function(){ var usu = $('#txtuser').val(); var pass = $('#txtpassword').val(); $.post('server/login.php',{ usu : usu, pass : pass},function(respuesta){ if (respuesta == true) { $.mobile.changePage('otro.html'); } else{ $.mobile.changePage('#pageError', 'pop', true, true); /*$('#errorMsg').fadeIn(300); $('#errorMsg').css('display', 'block');*/ } }); }); });

    login.php

    PHP se encarga de hacer el enlace con la cpa de Base de Datos. Y retorna uno de 2 resultados

    posibles cierto o false

  • Laboratorio de Bases de Datos

    Prof. Arturo Daz Pulido

    51

    $password = mysql_real_escape_string($_POST['pass']); $sql = 'SELECT nombre FROM usuarios WHERE nombre="$username" AND password="$password"'; if ($resultado = mysql_query($sql, $conexion)){ if (mysql_num_rows($resultado) > 0){ echo true; } } else{ echo false; } mysql_close($conexion); ?>