Вы находитесь на странице: 1из 25

Programación Avanzada Práctica N° 1

1.- Objetivos de la práctica

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. Ahorrándonos recordar de memoria y digitar algunos comandos SQL.
4) Normalizar una tabla

2.- Elementos requeridos:

a) Hardware: Computador con Windows o Linux

b) Software:

 Instaladores de WAMP, busque una versión compatible con su sistema (32/64bits) en:

http://www.wampserver.es/ Si usa Linux instale alguna versión de LAMP

 HeidiSQL http://www.heidisql.com/

 MysqlWorkbech 5.2 o superior (Modelado SQL)

3.- Conceptos teóricos

Una relación identificadora (identifying relationship), es una relación de uno-a-muchos, en la que la clave primaria de
una entidad fuerte es absorbida por una entidad débil. Se dice que es una entidad débil, porque por sí misma no tiene
modo de identificarse de forma única (no tiene clave primaria).

Un ejemplo: tenemos una aplicación que registra el ingreso de los empleados a las instalaciones de la organización.
He aquí el modelo:

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

ingreso_a_instalaciones { id_empleado, hora_ingreso, puerta }

En este caso, existe una relación identificadora porque cada registro de ingreso_a_instalaciones *requiere* que se
especifique el id_empleado
De no especificarse, no se podría saber quién ingresó a las instalaciones. Eso convierte a cada ingreso_a_instalaciones
en una entidad débil, que depende de la existencia de otra entidad (el empleado). El software para modelado usa este
concepto.

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

Un ejemplo: tenemos una aplicación que lleva la nómina:

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


}

En este caso, yo puedo usar la clave foránea 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 relación con el *empleado
jefe* no tiene para nada que ver con la existencia del empleado común.

Propósitos de la normalización:
Eliminar registros redundantes y asegurar la dependencia de datos tal que se establezcan relaciones lógicas 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 conéctese como root a su DBMS local. Permita que
los servicios de Wamp estén 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

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 relación entre las tablas en notación E-R. Dese cuenta si
le conviene usar una relación identificadora o no,(refiérase a la teoría de la página 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.

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

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 extraíble 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 también 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?

Conviene insertar datos mediante comandos SQL cuando queremos especificar el orden de todos los datos de la tabla
en forma rápida y sencilla. También el uso de esos comandos permite el mejor manejo y aplicación de los datos a
insertar.

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


b) Obtener los nombres de los productos de la tienda
c) Obtener los nombres y precio de los productos de la tienda
d) Obtener los nombres de los artículos sin repeticiones

e) Obtener todos los datos del artículo cuya clave de producto es ‘5’
f) Obtener todos los datos del artículo cuyo nombre del producto es ‘’Teclado”

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


h) Obtener todos los datos de los artículos que empiezan con ‘M’

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


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

k) Obtener todos los datos de los artículos cuyo precio este entre $100 y $350
l) Obtener el precio medio de todos los productos
m) Obtener el precio medio de los artículos cuyo código de fabricante sea 3

n) Obtener el nombre y precio de los artículos ordenados por Nombre


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

p) Obtener el nombre y precio de los artículos cuyo precio sea mayor a $ 250 y ordenarlos descendentemente
por precio y luego ascendentemente por nombre
q) Obtener un listado completo de los productos, incluyendo por cada artículo los datos del articulo y del
fabricante

r) Obtener la clave de producto, nombre del producto y nombre del fabricante de todos los productos en
venta
s) Obtener el nombre y precio de los artículos donde el fabricante sea "Easy Mouse" ordenarlos
alfabéticamente por nombre del producto

t) Obtener el nombre, precio y nombre de fabricante de los productos que son marca Lexar o Kingston
ordenados descendentemente por precio
u) Añade un nuevo producto: Clave del producto 11, Altavoces de $ 120 del fabricante 2

v) Cambia el nombre del producto 6 a ‘Impresora Laser’


w) Aplicar un descuento del 10% a todos los productos.
x) Aplicar un descuento de $ 10 a todos los productos cuyo precio sea mayor o igual a $ 300
y) Borra el producto numero 6
Y1) Use un left Join y comente el resultado

El resultado final,trae todos los registros de la tablade laizquierda y losvaloresdelatabla de la derecha (solo aquellos
que coinciden con la comparación)

Mostramos todos los registros de la tabla izquierda tengan o no correspondencia con la tabla derecha.
Y2) Cree una consulta que devuelva el producto más caro

Y3) Cree otra tabla que relacione los artículos, fabricantes con clientes y una tabla
de órdenes.
4.1.- Procedimiento parte B
Investigue sobre las 3 formas normalizadas y normaliza la siguiente tabla de estudiantes.

Id Nombre Dirección Cursos


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

CURSO
IdCurso Curso
001 Bio
002 Maths
003 Physics

CURSO_ESTUDIANTE
Id Nombre Curso
401 Adam Bio
402 Alex Maths
403 Stuart Maths
404 Adam Physics

ESTUDIANTE
Id Nombre Dirección
001 Adam Noida
002 Alex Panipat
003 Stuart Jammu

6. CONCLUSIONES

• Logramos familiarizarnos con estas herramientas visuales que vienen a ser MYSQL
Workbench, una herramienta completa de administración de servidor de
administración de configuración, el usuario y mucho más; por otra parte usamos el
Heidi SQL que permite ver y editar los datos, crear y editar tablas, vistas,
procedimientos, triggers y eventos programados. Además, pudimos exportar la
estructura y los datos ya sea para archivo SQL, porta papeles o en otros servidores.

• Por lo tanto al usar un cliente para generar una consulta a SQL hemos dispuesto de
la instrucción SELECT. Con ella podemos consultar una o varias tablas. Es sin duda el
comando más versátil del lenguaje SQL. El resultado de una consulta SELECT nos
devuelve una tabla lógica. Es decir, los resultados son una relación de datos, que
tiene filas/registros, con una serie de campos/columnas. Cada vez que ejecutamos
la consulta se vuelve a calcular el resultado.

• Por ultimo al realizar las tres FN de normalización, estas nos aseguran a eliminar
redundancias e inconsistencias de dependencia en el diseño de las tablas lo que nos
da a concluir que ayudan a realizar un código PHP más fácil de comprender,
ampliar, y en determinados casos, incluso hacer tu aplicación más rápida.

7. OBSERVACIONES
• Una de las cosas que más impactan sobre el rendimiento de la base de datos es el
hacer búsquedas de texto en cadenas, especialmente en campos de tipo (TEXT) y
usando (%). Intenta evitar que tus aplicaciones realicen este tipo de operaciones.

• Por regla general es buena idea crear índices sobre campos que seleccionas a
menudo, agrupas, ordena, el contrapunto es que cada índice ocupa un espacio
proporcional al número de filas en la tabla.

• En la normalización se tiene que tener en cuenta un conocimiento básico de esta


terminología resulta útil al tratar el diseño de una base de datos relacional.

Вам также может понравиться