Post on 08-Nov-2015
description
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); ?>