0% encontró este documento útil (0 votos)
210 vistas14 páginas

Lab04-BDAV Modelado de Datos

Este documento presenta un laboratorio sobre modelado de datos en MongoDB. Se propone el diseño de una base de datos para registrar cursos de capacitación continua de una universidad. Se incluye un diagrama entidad-relación y la estructura de colecciones correspondiente en MongoDB. El laboratorio guía los pasos para crear la base de datos, agregar datos de muestra y realizar consultas básicas para obtener información sobre los departamentos y sus programas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
210 vistas14 páginas

Lab04-BDAV Modelado de Datos

Este documento presenta un laboratorio sobre modelado de datos en MongoDB. Se propone el diseño de una base de datos para registrar cursos de capacitación continua de una universidad. Se incluye un diagrama entidad-relación y la estructura de colecciones correspondiente en MongoDB. El laboratorio guía los pasos para crear la base de datos, agregar datos de muestra y realizar consultas básicas para obtener información sobre los departamentos y sus programas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 14

Diseño de Software e

Integración de Sistemas

BASES DE DATOS AVANZADAS

LABORATORIO N° 04

Modelado de datos en MongoDB


use

Alumno(s): Felix Arturo Garcia M estas Nota

Grupo: Ciclo: III

Requiere No
Excelente Bueno Puntaje
Criterio de Evaluación mejora acept.
(4pts) (3pts) Logrado
(2pts) (0pts)
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. DESCRIPCION 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 4 Pág. 2


Bases de Datos Avanzadas

3. Diagrama entidad relación

Departamentos Programas Planers


- nombre - nombre - nombres
- jefe - abreviatura - apellidos
- programas - planer - anexo
- celular

Docentes Matriculas Personas


- nombres - fecha_mat - nombres
- apellidos - nro_doc - apellidos
- celular - monto - dni
- estado - curso - dirección
- tipo - persona - teléfono
- departamento - asistencias - celular
- nota_final - sexo
- estado - fecha_nac
- email
- estado

Matriculas
4. Estructura de la base de datos en MongoDB - fecha_mat
- nro_doc
Cursos - monto
Departamentos - nombre - curso Personas
- nombre - abreviatura - persona - nombres
- jefe - duración - asistencias - apellidos
- capacidad - nota_final - dni
Programas - inscritos - dirección
- nombre - estado
- costo - teléfono
- abreviatura - aula_teoria - celular
- aula_lab Docentes - sexo
Planers
- fecha_inicio - nombres - fecha_nac
- nombres
- fecha_fin - apellidos - email
- apellidos
- docente - celular - estado
- anexo
- programa - estado
- celular
- enc curso ... - tipo
- departamento
5. Creación de la base de datos en MongoDB
5.1. Solicite al instructor el archivo de script Lab04.js

Guía de Laboratorio No 4 Pág. 3


Bases de Datos Avanzadas
5.2. Ejecute el script anterior para crear las colecciones en la base de datos Lab04 creada al
inicio del laboratorio
Resultado
{
"acknowledged": true,
"insertedIds": {
"0": 1,
"1": 2,
"2": 3,
"3": 4
}
}

5.3. Implementar una sentencia que permita obtener la siguiente información sobre
Departamentos:
Nombre Nombre de Jefe de
Departamento Departamento

Código:
db.Departamentos.find(
{},
{nombre:1,'jefe.nombre':1}
);
Resultado:
[
{
"_id": 1,
"nombre": "Mecanica",
"jefe": {
"nombre": "Juan"
}
},
{
"_id": 2,
"nombre": "Electrotecnia",
"jefe": {
"nombre": "Henry"
}
},
{
"_id": 3,
"nombre": "Informatica",
"jefe": {
"nombre": "Alfredo"
}
}
]

Guía de Laboratorio No 4 Pág. 4


Bases de Datos Avanzadas
5.4. Implementar una sentencia que permita obtener la siguiente información sobre
Departamentos:
Nombre Nombre de Jefe de Nombre de Programas
Departamento Departamento que lo integran

Código:
db.Departamentos.find(
{},
{nombre:1,'jefe.nombre':1,'programas.nombre':1}
);
Resultado:
[
{
"_id": 1,
"nombre": "Mecanica",
"jefe": {
"nombre": "Juan"
},
"programas": [
{
"nombre": "Mantenimiento de Maquinaria de Planta"
},
{
"nombre": "Mantenimiento de Maquinaria Pesada"
}
]
},
{
"_id": 2,
"nombre": "Electrotecnia",
"jefe": {
"nombre": "Henry"
},
"programas": [
{
"nombre": "Electrotecnia Industrial"
},
{
"nombre": "Electronica y Automatizacion Industrial"
},
{
"nombre": "Instalaciones Electrotecnicas"
}
]
},
{
"_id": 3,
"nombre": "Informatica",
"jefe": {
"nombre": "Alfredo"
},
"programas": [
{
"nombre": "Redes y Comunicaciones de Datos"
},
{
"nombre": "Diseno de Software e Integracion de Sistemas"
}
]
}
]

Guía de Laboratorio No 4 Pág. 5


Bases de Datos Avanzadas

5.5. Implementar una sentencia que permita obtener la siguiente información sobre
Departamentos:
Nombre Nombre de Jefe de Nombre de Nombre del Planer
Departamento Departamento Programas que lo de cada Programa
integran

Código:
db.Departamentos.find(
{},
{nombre:1,
'jefe.nombre':1,
'programas.nombre':1,
'planer.nombre':1
}
);
Resultado:
[
{
"_id": 1,
"nombre": "Mecanica",
"jefe": {
"nombre": "Juan"
},
"programas": [
{
"nombre": "Mantenimiento de Maquinaria de Planta"
},
{
"nombre": "Mantenimiento de Maquinaria Pesada"
}
]
},
{
"_id": 2,
"nombre": "Electrotecnia",
"jefe": {
"nombre": "Henry"
},
"programas": [
{
"nombre": "Electrotecnia Industrial"
},
{
"nombre": "Electronica y Automatizacion Industrial"
},
{
"nombre": "Instalaciones Electrotecnicas"
}
]
},
{
"_id": 3,
"nombre": "Informatica",
"jefe": {
"nombre": "Alfredo"
},
"programas": [
{
"nombre": "Redes y Comunicaciones de Datos"
},
{
"nombre": "Diseno de Software e Integracion de Sistemas"
}
]
}
]

Guía de Laboratorio No 4 Pág. 6


Bases de Datos Avanzadas
5.6. Implementar una sentencia que permita adicionar un curso nuevo:

Código:
db.Cursos.insert ([
{ _id: ,
nombre: 'Implementacion de I.A.',
abreviatura:'I.A.',
_id_prog: 5,
duracion: 70,
capacidad: 12,
inscritos: 7,
costo: 870,
aula_teoria: 'E9',
aula_lab: 'E9',
id_docente: 2,
fecha_inicio:'2016-10-09',
fecha_fin: '2017-01-07',
enc_curso: 0,
enc_docente: 0,
enc_material:0,
estado: 'A'
},

]);
Resultado:
{
"acknowledged": true,
"insertedIds": {
"0": 3
}
}

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

Código:
db.Docentes.insert([
{ _id: 3,
apellidos: 'Garcia',
nombres: 'Felix',
_id_dep: 1,
tipo: 'E9',
celular: '918308309',
estado: 'A'
},
]);
Resultado:
{
"acknowledged": true,
"insertedIds": {
"0": 3
}
}

Guía de Laboratorio No 4 Pág. 7


Bases de Datos Avanzadas

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

Código:
db.Matriculas.insert([
{ _id: 5,
_id_curso: 3,
_id_persona: 5,
fecha_mat: '2016-03-10',
nro_doc: '002-1001',
monto: 850,
asistencias: 1,
nota_final: 0,
estado: 'A'
}
]);
Resultado:
{
"acknowledged": true,
"insertedIds": {
"0": 3
}
}

5.9. Implementar una sentencia que permita adicionar una nueva matricula (de una persona
nueva, que no existe en la colección Personas):

Código:
db.Matriculas.insert([
{ _id: 5,
_id_curso: 3,
_id_persona: 5,
fecha_mat: '2016-03-10',
nro_doc: '002-1001',
monto: 850,
asistencias: 1,
nota_final: 0,
estado: 'A'
}
]);

Resultado:
{
"acknowledged": true,
"insertedIds": {
"0": 5
}
}

Guía de Laboratorio No 4 Pág. 8


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 (Teoria, 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

Sedes Reservas Personas


- Id - Fecha_R - Id
- Departamento - Ambiente - Nombre
- Inauguración - H_Inicio - Sexo
- H_Fin
- Celular
- Nombre
- Info - Fecha_N
Ambientes - Email
- Estado
- Nombre - Estado
- Capacidad - DNI
- Abreviatura
- Sede
- Tipo

Guía de Laboratorio No 4 Pág. 9


Bases de Datos Avanzadas
• Elaborar la estructura de la base de datos MongoDB
Código:
db.Personas.insert([
{
fecha_r:"2022-11-10",
ambiente:"patio",
h_inicio:"08:00",
h_fin:"10:00",
nombre:"Felix",
info:"asdsaasdasdsaddasdasd",
estado:"A"
},
{
fecha_r:"2022-11-10",
ambiente:"clase",
h_inicio:"12:00",
h_fin:"10:00",
nombre:"Daniel",
info:"",
estado:"A"
}, {
fecha_r:"2022-11-10",
ambiente:"clase",
h_inicio:"12:00",
h_fin:"02:00",
nombre:"Adrie",
info:"fasfaskfjasjdasldmas",
estado:"A"
}, {
fecha_r:"2022-11-10",
ambiente:"patio",
h_inicio:"08:00",
h_fin:"10:00",
nombre:"Elias",
info:"asdasdsadasdasdsdad",
estado:"A"
},
{
fecha_r:"2022-11-10",
ambiente:"clase",
h_inicio:"09:30",
h_fin:"11:30",
nombre:"Andrea",
info:"asddasadasdasdasdad",
estado:"A"
}
]);

Guía de Laboratorio No 4 Pág. 10


Bases de Datos Avanzadas

Resultado;
{
"acknowledged": true,
"insertedIds": {
"0": {
"$oid": "63254166866ddcc4561c6f48"
},
"1": {
"$oid": "63254166866ddcc4561c6f49"
},
"2": {
"$oid": "63254166866ddcc4561c6f4a"
},
"3": {
"$oid": "63254166866ddcc4561c6f4b"
},
"4": {
"$oid": "63254166866ddcc4561c6f4c"
}
}
}

Código:
db.Personas.insert([
{_id:010,
nombre:"Felix",apellidos:"Garcia",sexo:"M",celular:"965483225",fecha_n:"
1995-06-
10",email:"[email protected]",estado:"A",dni:"73639471",sede:"Arequipa"
},
{_id:011,
nombre:"Dereck",apellidos:"Bautista",sexo:"M",celular:"987825554",fecha_
n:"2004-08-
30",email:"[email protected]",estado:"A",dni:"73696541",sede:"Arequipa"}
,
{_id:012,
nombre:"Daniela",apellidos:"Rodriguez",sexo:"F",celular:"928768554",fech
a_n:"2000-09-
14",email:"[email protected]",estado:"A",dni:"7332471",sede:"Trujillo"},
{_id:013,
nombre:"Andrea",apellidos:"Guerra",sexo:"F",celular:"954254371
",fecha_n:"1998-02-
01",email:"[email protected]",estado:"A",dni:"78422585",sede:"Lima"},
{_id:014,
nombre:"Denis",apellidos:"Madera",sexoa:"M",celular:"974856123",fecha_n:
"2001-01-
05",email:"[email protected]",estado:"A",dni:"73479471",sede:"Trujil
lo"},
{_id:015,
nombre:"Elias",apellidos:"Rigio",sexo:"M",celular:"944736258",fecha_n:"2
003-07-
17",email:"[email protected]",estado:"A",dni:"52684863",sede:"Arequipa"},
{_id:016,
nombre:"Sally",apellidos:"Torres",sexo:"F",celular:"971846812",fecha_n:"
1995-03-

Guía de Laboratorio No 4 Pág. 11


Bases de Datos Avanzadas
20",email:"[email protected]",estado:"A",dni:"73186671",sede:"Lima"},
{_id:017,
nombre:"Adrie",apellidos:"Rojas",sexo:"F",celular:"965842651",fecha_n:"2
005-06-
24",email:"[email protected]",estado:"A",dni:"73679471",sede:"Lima"}
,
]);
Resultado:
{
"acknowledged": true,
"insertedIds": {
"0": 8,
"1": 9,
"2": 10,
"3": 11,
"4": 12,
"5": 13,
"6": 14,
"7": 15
}
}

Código:
db.Sedes.insert([
{_id:1,departamento:"Arequipa",inauguracion:"2009-02-
12",ambientes:[
{nombre:"A1",capcidad:"60",abreviatura:"AT1",tipo:"Teoria"},
{nombre:"A5",capcidad:"45",abreviatura:"AL5",tipo:"Laborator
io"},
{nombre:"B1",capcidad:"60",abreviatura:"BL1",tipo:"Laborator
io"},
{nombre:"A3",capcidad:"30",abreviatura:"AT3",tipo:"Teoria"},
{nombre:"A2",capcidad:"38",abreviatura:"AT2",tipo:"Taller"},
{nombre:"C1",capcidad:"40",abreviatura:"CC1",tipo:"Cafeteria
"}
]},
{_id:2,departamento:"Lima",inauguracion:"2005-11-19",ambientes:[
{nombre:"C2",capcidad:"40",abreviatura:"Ct2",tipo:"Taller"},
{nombre:"A1",capcidad:"60",abreviatura:"AT1",tipo:"Teoria"},
{nombre:"A5",capcidad:"45",abreviatura:"AL5",tipo:"Laborator
io"},
{nombre:"B1",capcidad:"60",abreviatura:"BL1",tipo:"Laborator
io"},
{nombre:"A3",capcidad:"30",abreviatura:"AT3",tipo:"Teoria"},
{nombre:"A2",capcidad:"38",abreviatura:"AT2",tipo:"Taller"},
{nombre:"C1",capcidad:"40",abreviatura:"CC1",tipo:"Cafeteria
"}
]},

Guía de Laboratorio No 4 Pág. 12


Bases de Datos Avanzadas
{_id:3,departamento:"Trujillo",inauguracion:"2012-05-
05",ambientes:[
{nombre:"A1",capcidad:"60",abreviatura:"AT1",tipo:"Teoria"},
{nombre:"A5",capcidad:"45",abreviatura:"AL5",tipo:"Laborator
io"},
{nombre:"B1",capcidad:"60",abreviatura:"BL1",tipo:"Laborator
io"},
{nombre:"A2",capcidad:"38",abreviatura:"AT2",tipo:"Taller"},
]}
])
Resultado
{
"acknowledged": true,
"insertedIds": {
"0": 1,
"1": 2,
"2": 3
}
}

• Elaborar un script conteniendo sentencias que permitan adicionar algunos documentos


a la base de datos

Código:
db.Personas.insert([
{_id:018, nombre:"Arti",
apellidos:"Aragon",sexo:"",celular:"965483225",fecha_n:"1995-06-
10",email:"[email protected]",estado:"A",dni:"73639471",sede:"Ar
equipa"},
]);
Resultado:
{
"acknowledged": true,
"insertedIds": {
"0": 18
}
}

• Elaborar algunas instrucciones en MongoDB que permitan manipular la información de


la base de datos.

Código:
db.Personas.update(
{_id:12},
{$set:{
sexoa:"M",

Guía de Laboratorio No 4 Pág. 13


Bases de Datos Avanzadas
celular:"564856123",
email:"[email protected]",
estado:"B"
}
});

Resultado:
{
"acknowledged": true,
"insertedId": null,
"matchedCount": 1,
"modifiedCount": 1,
"upsertedCount": 0
}

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

Se concluye Que gracias al de Grama de relación se puede hacer una visualización


mucho más clara y simple de las tablas y sus tablas y sus relaciones entre sí, el
diagrama entidad relación no tiene límite para la relación de tablas ni la cantidad de
tablas que se gráfica, las tablas no pueden estar relacionadas si están en diferentes
bases de datos.

Guía de Laboratorio No 4 Pág. 14

También podría gustarte