You are on page 1of 9

Programacin Avanzada Prctica N 1

1.- Objetivos de la prctica


1) Familiarizarse con una herramienta visual para desarrollo de la arquitectura de
bases de datos en esta caso Mysql. Existen otras herramientas para otros
gestores.
2) Transferir el diagrama E-R creado con la herramienta de arquitectura a SQL
3) Usar un cliente de bases de datos para generar consultas SQL e insertar contenido
a las tablas. Ahorrndonos recordar de memoria y digitar algunos comandos SQL.
4) Normalizar una tabla

Al ejecutar la Prctica envi su Informe en doc a rbanda72@hotmail.com formando grupos de


mximo 5 personas.

2.- Elementos requeridos:


a) Hardware: Computador con Windows o Linux

b) Software:

Instaladores de WAMP, busque una versin compatible con su sistema (32/64bits) en:

http://www.wampserver.es/ Si usa Linux instale alguna versin de LAMP

HeidiSQL http://www.heidisql.com/

MysqlWorkbech 5.2 o superior (Modelado SQL)

3.- Conceptos tericos


Una relacin identificadora (identifying relationship), es una relacin de uno-a-muchos, en la que
la clave primaria de una entidad fuerte es absorbida por una entidad dbil. Se dice que es una
entidad dbil, porque por s misma no tiene modo de identificarse de forma nica (no tiene clave
primaria).

Un ejemplo: tenemos una aplicacin que registra el ingreso de los empleados a las instalaciones
de la organizacin. he aqu el modelo:

empleado { id_empleado, nombre, apellido, departamento, cargo }

ingreso_a_instalaciones { id_empleado, hora_ingreso, puerta }

En este caso, existe una relacin identificadora porque cada registro de ingreso_a_instalaciones
*requiere* que se especifique el id_empleado

De no especificarse, no se podra saber quin ingres a las instalaciones. Eso convierte a cada
ingreso_a_instalaciones en una entidad dbil, que depende de la existencia de otra entidad (el
empleado). El software para modelado usa este concepto.
Universidad Nacional de San Agustn Ingeniera de Telecomunicaciones - Programacin Avanzada

Docente: Ramiro Banda Valdivia


Una relacin no identificadora (non-identifying relationship) es una relacin de uno-a-muchos
donde una entidad no depende de la existencia de otra, porque tiene su propia clave principal.

Un ejemplo: tenemos una aplicacin que lleva la nmina:

empleado { id_empleado, nombre, apellido, cargo, departamento, id_empleado_jefe }

En este caso, yo puedo usar la clave fornea id_empleado_jefe para establecer qu otro
empleado es jefe de un empleado en particular, pero en s, cada empleado tiene su id_empleado,
por lo que la relacin con el *empleado jefe* no tiene para nada que ver con la existencia del
empleado comn.

Propsitos de la normalizacin:

Eliminar registros redundantes y asegurar la dependencia de datos tal que se establezcan


relaciones lgicas entre las tablas con ayuda de relaciones, claves primarias, secundarias.

4.- Procedimiento parte A


Instale el paquete WAMP en su computadora Windows, Apache, Mysql y PHP en su computadora,
asimismo MysqlWorkbench.
Descargue HeidiSQL un administrador de bases de datos MySql y conctese como root a su DBMS
local. Permita que los servicios de Wamp estn activos.

Cree en su PC una base de datos llamada TIENDA. Use el siguiente comando:

CREATE DATABASE TIENDA;

Nota: El comando tiene que ser ejecutado en la consola de comandos SQL

Figura 1: Creando una nueva base de datos mediante HeidiSQL

Universidad Nacional de San Agustn Ingeniera de Telecomunicaciones - Programacin Avanzada

Docente: Ramiro Banda Valdivia


Deje por ahora la consola SQL, ahora pase a usar el Mysql Workbench y cree un nuevo Modelo -> Agregar
diagrama, ahora mediante la herramienta visual establezca la siguiente relacin entre las tablas en notacin
E-R. Dese cuenta si le conviene usar una relacin identificadora o no,(refirase a la teora de la pgina 1)

Figura 2: Modelo E-R solicitado a implementar.

Figura 3: El resultado al crear las dos entidades

Las relaciones pueden ser 1:1, 1:n, etc.

Ahora exporte su diagrama (mire la figura 4) a un archivo SQL el modelo creado(omitiendo el


esquema calificador, es decir el prefijo de base de datos ), luego cargue el contenido en la consola
de comandos de HeidiSql. Previamente debe seleccionar la base de datos creada antes y dentro de
ella ejecutar el contenido de comandos SQL provenientes del Mysql WorkBech.

Universidad Nacional de San Agustn Ingeniera de Telecomunicaciones - Programacin Avanzada

Docente: Ramiro Banda Valdivia


Figura 4: Exportando el modelo creado a SQL

Figura 5: La consola de comandos SQL desde HeidiSql

Proceda a insertar registros a las tablas creadas en HeidiSQL

TABLA: FABRICANTES

CLAVE_FABRICANTE NOMBRE

1 Microsoft

2 Samsung

3 Easy Mouse

Universidad Nacional de San Agustn Ingeniera de Telecomunicaciones - Programacin Avanzada

Docente: Ramiro Banda Valdivia


4 Toshiba

5 Kingston

6 Sony

TABLA: ARTICULOS

CLAVE_ARTICULO NOMBRE PRECIO CLAVE_FABRICANTE

1 Teclado $ 100 3

2 Disco duro 300 Gb $ 500 5

3 Mouse $ 80 3

4 Memoria USB 500GB $ 140 4

5 Memoria RAM (16GB) $ 290 1

6 Disco duro extrable 250 Gb $ 650 5

7 Memoria USB $ 279 1

8 DVD Rom $ 450 2

9 CD Rom $ 200 2

10 Tarjeta de red $ 180 3

Para insertar prueba usando la herramienta visual de HeidiSQL y tambin usando comandos Sql
como por ejemplo:

INSERT INTO FABRICANTES VALUES ( 1 , Microsoft);

Pruebe la diferencia, explique en su informe, en qu casos conviene insertar datos mediante


commandos SQL?

a) Obtener todos los datos de los productos de la tienda

SELECT * FROM ARTICULOS;

b) Obtener los nombres de los productos de la tienda

SELECT Nombre FROM ARTICULOS;

Universidad Nacional de San Agustn Ingeniera de Telecomunicaciones - Programacin Avanzada

Docente: Ramiro Banda Valdivia


c) Obtener los nombres y precio de los productos de la tienda

SELECT Nombre,Precio FROM ARTICULOS;

d) Obtener los nombres de los artculos sin repeticiones

SELECT DISTINCT Nombre FROM ARTICULOS;

e) Obtener todos los datos del artculo cuya clave de producto es 5

SELECT * FROM ARTICULOS WHERE Clave_articulo=5;

f) Obtener todos los datos del artculo cuyo nombre del producto es Teclado

SELECT * FROM ARTICULOS WHERE Nombre=Teclado;

g) Obtener todos los datos de la Memoria RAM y memorias USB

SELECT * FROM ARTICULOS WHERE Nombre=Memoria RAM OR Nombre=Memoria USB ;

h) Obtener todos los datos de los artculos que empiezan con M

SELECT * FROM ARTICULOS WHERE Nombre LIKE M%;

i) Obtener el nombre de los productos donde el precio sea $ 100

SELECT Nombre FROM ARTICULOS WHERE Precio = 100;

j) Obtener el nombre de los productos donde el precio sea mayor a $ 200

SELECT Nombre FROM ARTICULOS WHERE Precio > 200;

Universidad Nacional de San Agustn Ingeniera de Telecomunicaciones - Programacin Avanzada

Docente: Ramiro Banda Valdivia


k) Obtener todos los datos de los artculos cuyo precio este entre $100 y $350

/* OPERADOR AND */

SELECT * FROM ARTICULOS WHERE Precio >= 100 AND Precio<=350;

/* OPERADOR BETWEEN */

SELECT * FROM ARTICULOS WHERE Precio BETWEEN 100 AND 350;

l) Obtener el precio medio de todos los productos

SELECT AVG(Precio) FROM ARTICULOS;

m) Obtener el precio medio de los artculos cuyo cdigo de fabricante sea 2

SELECT AVG(Precio) FROM ARTICULOS WHERE Clave_fabricante=3;

n) Obtener el nombre y precio de los artculos ordenados por Nombre

SELECT Nombre, Precio FROM ARTICULOS ORDER BY Nombre;

o) Obtener todos los datos de los productos ordenados descendentemente por Precio

SELECT * FROM ARTICULOS ORDER BY Precio DESC;

p) Obtener el nombre y precio de los artculos cuyo precio sea mayor a $ 250 y ordenarlos
descendentemente por precio y luego ascendentemente por nombre

SELECT Nombre, Precio FROM ARTICULOS

WHERE Precio >= 250 ORDER BY Precio DESC, Nombre;

q) Obtener un listado completo de los productos, incluyendo por cada articulo los datos del articulo y del
fabricante

SELECT * FROM ARTICULOS, FABRICANTES

WHERE ARTICULOS.Clave_fabricante=FABRICANTES.Clave_fabricante

r) Obtener la clave de producto, nombre del producto y nombre del fabricante de todos los productos
en venta
SELECT ARTICULOS.Clave_articulo, ARTICULOS.Nombre, FABRICANTES.Nombre

FROM ARTICULOS, FABRICANTES


Universidad Nacional de San Agustn Ingeniera de Telecomunicaciones - Programacin Avanzada
WHERE ARTICULOS.Clave_fabricante=FABRICANTES.Clave_fabricante
Docente: Ramiro Banda Valdivia
s) Obtener el nombre y precio de los artculos donde el fabricante sea Logitech ordenarlos
alfabticamente por nombre del producto
SELECT ARTICULOS.Nombre, ARTICULOS.Precio FROM ARTICULOS, FABRICANTES

WHERE FABRICANTES.Nombre=Easy Mouse AND

ARTICULOS.Clave_fabricante=FABRICANTES.Clave_fabricante

t) Obtener el nombre, precio y nombre de fabricante de los productos que son marca Lexar o Kingston
ordenados descendentemente por precio

SELECT ARTICULOS.Nombre, ARTICULOS.Precio, FABRICANTES.Nombre

FROM ARTICULOS, FABRICANTES

WHERE FABRICANTES.Nombre=Microsoft OR FABRICANTES.Nombre=Toshiba

AND ARTICULOS.Clave_fabricante=FABRICANTES.Clave_fabricante

ORDER BY ARTICULOS.Precio DESC;

u) Aade un nuevo producto: Clave del producto 11, Altavoces de $ 120 del fabricante 2

INSERT INTO ARTICULOS VALUES (11 ,Altavoces, 120, 2);

v) Cambia el nombre del producto 6 a Impresora Laser

UPDATE ARTICULOS SET Nombre=Impresora Laser WHERE Clave_articulo = 8

w) Aplicar un descuento del 10% a todos los productos.

UPDATE ARTICULOS SET Precio=Precio *0.10

x) Aplicar un descuento de $ 10 a todos los productos cuyo precio sea mayor o igual a $ 300

UPDATE ARTICULOS SET Precio=Precio 10


WHERE Precio >= 300

Universidad Nacional de San Agustn Ingeniera de Telecomunicaciones - Programacin Avanzada

Docente: Ramiro Banda Valdivia


y) Borra el producto numero 6

DELETE FROM ARTICULOS WHERE Clave_articulo= 6

Y1) Use un left Join y comente el resultado


select * from fabricantes left join articulos on
fabricantes.codigo=articulos.fabricantes_codigo

Y2) Cree una consulta que devuelva el producto ms caro


Y3) Cree otra tabla que relacione los artculos, fabricantes con clientes y una tabla
de ordenes.

4.1.- Procedimiento parte B


Investigue sobre las 3 formas normalizadas y normaliza la siguiente tabla de estudiantes.

Id Nombre Direccin Cursos


401 Adam Noida Bio
402 Alex Panipat Maths
403 Stuart Jammu Maths
404 Adam Noida Physics

Informe Final

Responda las preguntas formuladas a lo largo de la presente Prctica, desarrolle las consulta SQL,
sus resultados y agregue sus conclusiones y observaciones. Finalmente enve por email su trabajo
a rbanda72@hotmail.com a ms tardar el 13 de octubre pm.

Universidad Nacional de San Agustn Ingeniera de Telecomunicaciones - Programacin Avanzada

Docente: Ramiro Banda Valdivia

You might also like