Laboratorio#8-Base de Datos Relacionales-Toala

Programación De Sistemas Telemáticos C. Elaborado por: Ing. Christopher Vaccaro Laboratorio 8 Base de Datos Relacional

Views 123 Downloads 2 File size 2MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Programación De Sistemas Telemáticos C.

Elaborado por: Ing. Christopher Vaccaro

Laboratorio 8 Base de Datos Relacionales (MySQL) Tipo de trabajo:

X Individual

Grupal

Fecha: Paralelo:

101

Nombre: Jim Toala

Objetivo: 

Reconocer el funcionamiento y componentes de un sistema web dinámico que incluya bases de datos para el manejo de la información.

Duración: Ciento veinte (120) minutos.

Materiales y Herramientas: 

Una (1) Máquina virtual o En la nube (Azure) o Localmente (VMware / VirtualBox )



Software editor de texto (Visual Studio Code)

Investigación Pregunta 1: ¿Qué es y para qué sirve MySQL? sirve para almacenar y administrar datos en bases de datos relacionales utilizando de entre los diferentes artilujios con los que cuenta con tablas, vistas, procedimientos almacenados, funciones, etc. Pregunta 2: ¿Qué es el modelo entidad-relación? También conocido como modelo entidad relación o ERD, es un tipo de diagrama de flujo que ilustra cómo las "entidades", como personas, objetos o conceptos, se relacionan entre sí dentro de un sistema.

Procedimiento Para la práctica no será necesario hacer todas las intalaciones, puede ser solo una de ellas: W10, Ubuntu 16 (VMware) o Ubuntu 18 (Azure).

Paso 1.1: Instalación del gestor de bases de datos MySQL en Ubuntu 16 (VMware) a) Iniciar la máquina virtual (MV) b) Actualizar los repositorios y los programas desde el terminal sudo apt-get update sudo apt-get upgrade Si se muestra un error de lock reinicie la MV, si el problema persiste digite los siguientes comandos:  sudo fuser -vki /var/lib/dpkg/lock

Página 1 | 15

Programación De Sistemas Telemáticos C.

Elaborado por: Ing. Christopher Vaccaro

 sudo rm -f /var/lib/dpkg/lock  sudo dpkg --configure -a c) Ejecutar el comando sudo apt-get install mysql-server

d) Durante la instalación le pedirá una contraseña para el usuario root de MySQL, ingrese una de su preferencia e) Ingrese al entorno de consola de MySQL ingresando desde el terminal el comando sudo mysql -uroot -p Si en el literal anterior no le pidió contraseña, digite el comando “sudo mysql -uroot”

f)

Creamos un nuevo usuario con permisos de administrador CREATE USER 'estudiante'@'%' IDENTIFIED BY 'estudiante'; GRANT ALL PRIVILEGES ON *.* TO 'estudiante'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; QUIT;

Paso 1.2: Instalación del gestor de bases de datos MySQL en Ubuntu 18 (Azure) a) Iniciar la máquina virtual (MV) b) Actualizar los repositorios y los programas desde el terminal sudo apt-get update sudo apt-get upgrade Si se muestra un error de lock reinicie la MV, si el problema persiste digite los siguientes comandos:  sudo fuser -vki /var/lib/dpkg/lock  sudo rm -f /var/lib/dpkg/lock  sudo dpkg --configure -a

c) Ejecutar el comando sudo apt-get install mysql-server

d) Ingrese al entorno de consola de MySQL ingresando desde el terminal el comando sudo mysql -uroot

e) Creamos un nuevo usuario con permisos de administrador CREATE USER 'estudiante'@'%' IDENTIFIED BY 'estudiante'; GRANT ALL PRIVILEGES ON *.* TO 'estudiante'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; QUIT;

Paso 1.3: Instalación del gestor de bases de datos MySQL en Windows 10 a) Abrir en un navegador web la dirección https://dev.mysql.com/downloads/windows/installer/8.0.html

Página 2 | 15

Programación De Sistemas Telemáticos C.

Elaborado por: Ing. Christopher Vaccaro

b) Descargar el instalador

c) Ejecutar el instalador descargado

Página 3 | 15

Programación De Sistemas Telemáticos C.

Elaborado por: Ing. Christopher Vaccaro

En caso de que no tenga instalado ciertas dependencias, le pedirá instalarlas. Dé clic en Execute y luego en Instalar

Página 4 | 15

Programación De Sistemas Telemáticos C.

Elaborado por: Ing. Christopher Vaccaro

Página 5 | 15

Programación De Sistemas Telemáticos C.

Elaborado por: Ing. Christopher Vaccaro

d) Configurar el servidor

Página 6 | 15

Programación De Sistemas Telemáticos C.

Elaborado por: Ing. Christopher Vaccaro

Página 7 | 15

Programación De Sistemas Telemáticos C.

Elaborado por: Ing. Christopher Vaccaro

Si desea puede desmarcar la casilla “Start the MySQL Server at System Startup”, de ese modo no se iniciará el servicio automáticamente cada que inicie windows y deberá hacerlo manualmente

Página 8 | 15

Programación De Sistemas Telemáticos C.

Elaborado por: Ing. Christopher Vaccaro

Página 9 | 15

Programación De Sistemas Telemáticos C.

Elaborado por: Ing. Christopher Vaccaro

e) Abrir un terminal en Windows (CMD) y dirigirse al directorio donde se instaló MySQL cd "C:\Program Files\MySQL\MySQL Server 8.0\bin" f)

Ingrese al entorno de consola de MySQL ingresando desde el terminal el comando mysql -uroot -p

g) Creamos un nuevo usuario con permisos de administrador CREATE USER 'estudiante'@'%' IDENTIFIED BY 'estudiante'; GRANT ALL PRIVILEGES ON *.* TO 'estudiante'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; QUIT;

Creación de usuario de MySQL en terminal de cualquier Sistema Operativo (SO)

Página 10 | 15

Programación De Sistemas Telemáticos C.

Elaborado por: Ing. Christopher Vaccaro

Paso 2: Configuración MySQL en VS Code a) Instalar las siguientes extensiones: 1. “MySQL” de cweijan 2. “MySQL Syntax” de Jake Bathman b) Crear una nueva conexión en VS Code, complete el formulario como se muestra.

12 3

c) Crear una base de datos llamada espol

d) Crear la tabla estudiantes con los siguientes campos

2 1 Paso 3: Conexión de la base de datos con el Backend a) Abrir la carpeta “laboratorio6-7” en VS Code b) En el terminal ingresar a la carpeta backend e instalar el módulo mysql2

Página 11 | 15

Programación De Sistemas Telemáticos C.

Elaborado por: Ing. Christopher Vaccaro

npm install mysql2 Si está trabajando con Ubuntu deberá anteponer la palabra sudo al comando anterior (sudo npm install mysql2)

c) En la carpeta controllers eliminar el archivo llamado database.js, o cambiarle de nombre d) En la misma carpeta controllers, crear dos archivos database.js y keys.js e) Archivo keys.js module.exports = { database: { host: 'localhost', user: 'estudiante', password: 'estudiante', database: 'espol' } };

f)

Archivo database.js const mysql = require ('mysql2') const {database} = require('./keys'); const pool = mysql.createPool(database); pool.getConnection((err,con)=>{ if(err){ /*console.error(err.code); process.exit(0);*/ throw err; } if(con) con.release(); console.log('Conexión realizada'); return; }); module.exports = pool;

g) En el archivo index.js del backend ELIMINAR la línea de código “db.init( )” y la importación de dicho archivo “const db = require('./controllers/database');”

Consola del servidor con el mensaje de “Conexión realizada”

Pregunta 3: Mencione los 4 comandos SQL-DML y dé un ejemplo de cada uno. DDL DML DCL TCL

Página 12 | 15

Programación De Sistemas Telemáticos C.

Elaborado por: Ing. Christopher Vaccaro

Paso 4: Funciones SQL hacia la base de datos a) En el archivo “estudiantesControl.js” editar la función getEstudiantes: estudiantesControl.getEstudiantes = (req,res)=>{ db.query("Select * FROM estudiantes", (err,result,fields)=>{ if (err) { res.status(500).send(err); console.log(err); return; } res.json(result); }); }

b) Editar la función postEstudiante: estudiantesControl.postEstudiante = (req,res)=>{ const {id,nombre,apellido} = req.body; if(!nombre || !apellido){ res.status(400).send("Datos incompletos {nombre, apellido}"); return; } let SQLbody = {}; if(!id) SQLbody = {nombre,apellido}; else SQLbody = {id,nombre,apellido}; db.query("INSERT INTO estudiantes SET ?", [SQLbody], (err,result)=>{ if (err) { res.status(500).send(err); console.log(err); return; } res.send('Estudiante insertado con id: '+result.insertId); }); }

Captura de la base de datos y la página Web http://localhost:8080 mostrando la consola del navegador luego de hacer un POST con datos (sin id)

Página 13 | 15

Programación De Sistemas Telemáticos C.

Elaborado por: Ing. Christopher Vaccaro

Captura de la base de datos y la página Web http://localhost:8080 mostrando la consola del navegador luego de hacer un POST con todos los datos

c) Editar la función getEstudiante: estudiantesControl.getEstudiante = (req,res)=>{ if(isNaN(req.params.id)){ res.status(400).send("No es un id numérico"); return; } db.query("SELECT * FROM estudiantes WHERE id="+req.params.id, (err,result,fields)=>{ if (err) { res.status(500).send(err); console.log(err); return; } res.json(result); }); }

Pregunta 4: Edite las funciones “putEstudiante” y “deleteEstudiante” que permita editar y borrar un estudiante respectivamente de la base de datos. Haga clic o pulse aquí para escribir texto. Haga clic o pulse aquí para escribir texto.

Página 14 | 15

Programación De Sistemas Telemáticos C.

Elaborado por: Ing. Christopher Vaccaro

Captura de la base de datos y POSTMAN luego de hacer un PUT

Captura de la base de datos y la página Web http://localhost:8080 mostrando la consola del navegador luego de dar doble clic en un estudiante

Conclusiones y Recomendaciones 

Se reconoció el funcionamiento de un sistema web dinámico que incluya bases de datos para el manejo de la información haciendo uso de visual code studio y MySQL.



Se conocieron los componentes del sistema web dinámico que incluya bases de datos para poder almacenarlos o manejarlos mediante MySQL.



Se recomienda que los ejercicios de la práctica sean tipo examen para ir preparados al mismo.



Se recomienda que las preguntas no solo sea de investigación, también puede haber preguntas de lo que pensamos los estudiantes.

Página 15 | 15