Está en la página 1de 14

Diseño de Software e

Integración de
Sistemas

Alumno(s): Yaguno Huamaní Ángel Eduardo Nota

Grupo: B Ciclo: III


Requiere
Excelente Bueno No acept. Puntaje
Criterio de Evaluación mejora
(4pts) (3pts) (0pts) Logrado
(2pts)
Diseña el modelo E/R para una base de datos
Implementa una base de datos en MongoDB
desde el modelo E/R
Implementa bases de datos
empleando documentos embebidos o
utilizando referencias entre
colecciones
Manipula información de documentos en las
bases de datos implementadas
Es puntual y redacta el
informe adecuadamente
Bases de Datos Avanzadas

Laboratorio 4: Modelado de datos en MongoDB


Objetivos
:
Al finalizar el laboratorio el estudiante será capaz de:
● Adicionar documentos a la base de datos MongoDB
● Modificar documentos de la base de datos MongoDB
● Eliminar documentos de la base de datos MongoDB
● Consultar documentos de la base de datos MongoDB

Equipos y Materiales:
● Una computadora con:
● Windows 7 o superior
● Conexión a la internet

Procedimiento:
Lab Setup

1. Inicio del equipo virtual


1.1. Encender el equipo
1.2. Inicie el Shell de MongoDB y crear una base de datos de nombre: Lab04

2. DESCRIPCIÓN DEL CASO DE ESTUDIO:

Tecsup desea implementar un sistema que permita llevar un control de los cursos que se ofertan al público
en general por el área de capacitación continua (PCC). A continuación se resumen los requerimientos
identificados por el personal del área interesada:
1. Se debe tener un registro de los diferentes departamentos que se tienen en Tecsup así como a cada uno
de los programas que integran dichos departamentos.
2. Es necesario identificar a los jefes de departamento, asi como a los planners de cada programa para
poder coordinar con ellos los temas relacionados a los cursos a ofertar
3. Tener un registro de los docentes tanto a tiempo completo como a tiempo parcial, que serán los
encargados de dictar los cursos de capacitación continua
4. Tener un registro de cada persona que se inscribe en los cursos de capacitación continua
5. Tener un registro de cada matricula que se realice en los cursos de capacitación continua
6. De los Departamentos es necesario registrar: nombre, jefe de departamento, programas que lo integran.
7. De cada Jefe de Departamento es necesario registrar: nombre, apellidos, anexo y celular
8. De cada Programa es necesario registrar: nombre, abreviatura, planer
9. De cada Planer es necesario registrar: nombres, apellidos, anexo y celular
10. De cada Docente es necesario registrar: nombres, apellidos, celular, estado, tipo (TP/TC Tiempo
Completo/Tiempo Parcial), departamento al que pertenece
11. De cada Curso programado es necesario registrar: nombre, abreviatura, duración (hrs), capacidad, nro
de inscritos, costo, aula para teoría, aula para laboratorio, fecha de inicio, fecha de fin, docente a cargo,
programa al que pertenece el curso, resultado de encuesta del curso, resultado de encuesta del docente,
resultado de encuesta del material entregado al alumno, estado actual del curso.
12. De cada Persona que se inscribe en un curso es necesario registrar: nombres, apellidos, DNI, dirección,
teléfono fijo, celular, sexo, fecha de nacimiento, email y estado
13. De cada Matricula es necesario registrar: Fecha de matrícula, Nro de documento del comprobante
entregado por Tecsup, monto de pago, curso al que se ha matriculado, Persona que se ha matriculado.
Al finalizar el curso, deberá consignarse el porcentaje de asistencias del participante, la nota final que
obtuvo en el curso y el estado actual del registro de matrícula. (algunas veces un participante decide
anular la matricula)

Guía de Laboratorio No Pág.


Bases de Datos Avanzadas

3. Diagrama entidad relación

4. Estructura de la base de datos en MongoDB

5. Creación de la base de datos en MongoDB


5.1. Solicite al instructor el archivo de script Lab04.js
5.2. Ejecute el script anterior para crear las colecciones en la base de datos Lab04 creada al inicio del
laboratorio
5.3. Implementar una sentencia que permita obtener la siguiente información sobre
Departamentos:
Nombre Nombre de Jefe de
Departamento Departamento
Mecanica Juan
Electrotecnica Henry
Informatica Alfredo

Guía de Laboratorio No Pág.


Bases de Datos Avanzadas
> db.Departamentos.find({},{_id:0,nombre:1,"jefe.nombre":1})

5.4. Implementar una sentencia que permita obtener la siguiente información sobre
Departamentos:
Nombre Nombre de Jefe de Nombre de Programas que lo integran
Departamento Departamento
Mecánica Juan - Mantenimiento de Maquinaria de Planta
- Mantenimiento de Maquinaria Pesada
Electrotecnia Henry - Electrotecnia Industrial
- Electrotecnia y Automatización Industrial
- Instalaciones Electrotécnicas
Informática Alfredo - Redes y Comunicaciones de Datos
- Diseño y Desarrollo de Software

> db.Departamentos.find({},{_id:0,nombre:1,"jefe.nombre":1,"programas.nombre":1})

5.5. Implementar una sentencia que permita obtener la siguiente información sobre
Departamentos:
Nombre Nombre de Jefe de Nombre de Nombre del
Departamento Departamento Programas que lo Planer de cada
integran Programa
Mecánica Juan - Mantenimiento de Nilton
Maquinaria de Planta Dario
- Mantenimiento de
Maquinaria Pesada
Electrotecnia Henry -Electrotecnia Midward
Industrial
-Electrotecnia y

Guía de Laboratorio No Pág.


Bases de Datos Avanzadas
Automatización
Industrial
-Instalaciones
Electrotécnicas
Informática Alfredo -Redes y
Comunicaciones de
Datos
- Diseño y Desarrollo
de Software

>db.Departamentos.find({},{_id:0,nombre:1,"jefe.nombre":1,"programas.nombre":1,"program
as.planer.nombre":1})

5.6. Implementar una sentencia que permita adicionar un curso nuevo:


> db.Cursos.insert ([
{ _id: 3,
nombre: 'Base de datos avanzada',
abreviatura:'BDA',
_id_prog: 6,
duracion: 50,
capacidad: 24,
inscritos: 2,
costo: 550,
aula_teoria: 'E3',
aula_lab: 'E3',

Guía de Laboratorio No Pág.


Bases de Datos Avanzadas
id_docente: 3,
fecha_inicio:'2016-04-09',
fecha_fin: '2016-05-16',
enc_curso: 0,
enc_docente: 0,
enc_material:0,
estado: 'A'
}
)

5.7. Implementar una sentencia que permita adicionar un docente nuevo:


> db.Docentes.insert(
{ _id: 3,
apellidos: 'Malaga',
nombres: 'Luis',
_id_dep: 4,
tipo: 'TC',
celular: '985165552',
estado: 'A'
},
)

5.8. Implementar una sentencia que permita adicionar una nueva matricula (de una persona
existente):

Guía de Laboratorio No Pág.


Bases de Datos Avanzadas
> db.Matriculas.insert(
{ _id: 5,
_id_curso: 3,
_id_persona: 3,
fecha_mat: '2016-03-25',
nro_doc: '001-1005',
monto: 600,
asistencias: 0,
nota_final: 0,
estado: 'A
'
},
)

5.9. Implementar una sentencia que permita adicionar una nueva matricula (de una persona nueva, que no
existe en la colección Personas):
> db.Matriculas.insert(
{ _id: 6,
_id_curso: 3,
_id_persona: 5,
fecha_mat: '2016-03-23',
nro_doc: '001-1006',
monto: 600,
asistencias: 0,
nota_final: 0,
estado: 'A
'
},
)

Guía de Laboratorio No Pág.


Bases de Datos Avanzadas

6. CASO PROPUESTO: RESERVA DE AMBIENTES

Tecsup desea implementar un sistema que permita llevar un control de las reservas de ambientes que realiza
el personal de la institución, para ello es necesario tener en cuenta lo siguiente:
1. Se debe tener un registro de los diferentes departamentos que se tienen en Tecsup así como a cada uno
de los programas que integran dichos departamentos.
2. Tener un registro del personal de la institución que son quienes solicitaran reservar un ambiente
3. Tener un registro de los ambientes que se tienen en Tecsup, considerando que cada ambiente
puede ser Aula, Laboratorio o Taller
4. Tener un registro de cada reserva que se realice.
5. De los Departamentos es necesario registrar: nombre, programas que lo integran.
6. De los Ambientes es necesario registrar: nombre, tipo (Teoría, Laboratorio, Taller), capacidad,
departamento al que pertenece.
7. De cada Persona es necesario registrar: nombres, apellidos, departamento al que pertenece, cargo, DNI,
dirección, teléfono fijo, celular, sexo, fecha de nacimiento, email y estado
8. De cada Reserva es necesario registrar: fecha de la reserva, ambiente, hora de inicio, hora de fin,
persona que hace la reserva, una descripción para conocer para que se hizo la reserva, estado final de la
reserva (Pendiente, cancelada, otras …)

Actividades a realizar:

● Elaborar el modelo E/R de la base de datos relacional


● Elaborar la estructura de la base de datos MongoDB
● Elaborar un script conteniendo sentencias que permitan adicionar algunos documentos
a la base de datos
● Elaborar algunas instrucciones en MongoDB que permitan manipular la información de
la base de datos.

Guía de Laboratorio No Pág.


Bases de Datos Avanzadas

Modelado entidad-relación:

Script:

const conn = new Mongo();


const db = conn.getDB("Lab04Tarea");

// Agregar
Departamentos const
departamentos = [
{
_id: 1,
nombre: "Departamento de Ingeniería de Software",
programas: [
{ nombre: "Ingeniería de Software" },
{ nombre: "Desarrollo Web" },
],
},
{
_id: 2,
nombre: "Departamento de Electrónica",
programas: [
{ _id: 1, nombre: "Ingeniería Electrónica" },
{ _id: 2, nombre: "Automatización Industrial" },
],
},
];
db.Departamentos.insertMany(departamentos);

Guía de Laboratorio No Pág.


Bases de Datos Avanzadas
// Agregar Ambientes

Guía de Laboratorio No Pág.


Bases de Datos Avanzadas
const ambientes = [
{
_id: 1,
nombre: "Aula
101", tipo: "Aula",
capacidad: 30,
_id_departamento: 1,
},
{
_id: 2,
nombre: "Laboratorio de Física",
tipo: "Laboratorio",
capacidad: 20,
_id_departamento: 2,
},
];
db.Ambientes.insertMany(ambientes);

// Agregar
Personas const
personas = [
{
_id: 1,
nombres: "Juan",
apellidos:
"Pérez",
_id_departamento:
1, cargo: "Profesor",
dni: "12345678",
direccion: "Av. Principal 123",
telefono_fijo: "01 2345678",
celular: "987654321",
sexo: "M",
fecha_nacimiento: "1980-01-15",
email: "juan.perez@example.com",
estado: "A",
},
{
nombres: "Ana",
apellidos:
"Gómez",
_id_departamento: 2,
cargo: "Estudiante",
dni: "98765432",
direccion: "Calle Secundaria 456",
telefono_fijo: "01 9876543",
celular: "987654321",
sexo: "F",
fecha_nacimiento: "1995-03-20",
email: "ana.gomez@example.com",
estado: "A",
},
];
db.Personal.insertMany(personas);

// Agregar
Reservas const
Guía de Laboratorio No Pág.
Bases de Datos Avanzadas
reservas = [
{
fecha_reserva: "2023-09-20",

Guía de Laboratorio No Pág.


Bases de Datos Avanzadas
hora_inicio: "09:00",
hora_fin: "11:00",
ambiente: 1,
_id_personal: 1,
descripcion: "Reunión de trabajo",
estado: "Pendiente",
},
{
fecha_reserva: "2023-09-21",
hora_inicio: "14:00",
hora_fin: "16:00",
ambiente: 2,
_id_personal: 2,
descripcion: "Clase de matemáticas",
estado: "Confirmada",
},
];
db.Reservas.insertMany(reservas);

Instrucciones para manipular la información de la base de datos:

Actualizar el nombre de un departamento:

db.Departamentos.updateOne({"_id": 1}, {$set: {"nombre": "Departamento de Ingeniería de


Sistemas"}})

Actualizar el nombre de un ambiente:

db.Ambientes.updateOne({"_id": 1}, {$set: {"nombre": "Laboratorio de Computación"}})

Actualizar el cargo de una persona:

db.Personal.updateOne({"_id": 1}, {$set: {"cargo": "Docente"}})

Guía de Laboratorio No Pág.


Bases de Datos Avanzadas

Actualizar el estado de una reserva en base al id del personal:

db.Reservas.updateOne({"_id_personal": 1}, {$set: {"estado": "Confirmada"}})

Eliminar el departamento de Ingeniería de sistemas:

db.departamentos.deleteOne({"_id": 1})

Conclusiones:
Indicar las conclusiones que llegó después de los temas tratados de manera práctica en este laboratorio.

● Gracias al uso de scripts ahora se pueden gestionar y usar la base de datos en MongoDB de una
manera más fácil y cómoda y bastante útil para cuando se quiere usar para ingresar colecciones y
documentos.
● El modelo entidad relación me ayudó a cómo desarrollar mi base de datos y cómo voy a ingresar
los documentos a esta misma.
● Esta práctica de laboratorio me ayudará en el futuro a diseñar modelos de base de datos más
eficientes y completos, utilizar MongoDB para almacenar y manipular datos de forma eficiente e
implementar relaciones entre entidades de forma correcta.
● El diseño de un modelo de datos debe tener en cuenta las necesidades de los usuarios. En este caso,
el modelo de datos se diseñó teniendo en cuenta las necesidades de los usuarios del sistema de
reservas, como el personal de Tecsup y los estudiantes.
● Las instrucciones en MongoDB son potentes y eficientes. Esto permite manipular los datos de la
base de datos de forma rápida y sencilla.

Guía de Laboratorio No Pág.

También podría gustarte