Está en la página 1de 99

1

Universidad Peruana de Ciencias Aplicadas

Ingeniería de Sistemas de Información | Ciencias de la Computación

Diseño de Base de Datos – CC42

Docente: Juan Carlos Morales Arevalo

CC52 | Ingeniería de SoftwareD

COURSE PROJECT
Informe de Trabajo Final

PIVYTeam Members
Amarillo Alejos, Nicolle Francesca U202119197

Contreras Castellano, Nicolas U202119663

Felix Dolores, Yanely U20211D914

Mendoza Apolaya, Italo Rodrigo U20211E474

Valverde Cora, Piero Salvador U202124051

Ciclo 2022- 02
www.companywebsite.com
2

Registro de Versiones:

Versión Fecha Autor Descripción de modificación


1.0 25/08/2022 Grupo Se crea la edición básica, la cual incluye la creación del informe
4 y división del Student Outcome, la descripción de la startup y el
perfil de los integrantes del equipo.

1.5 27/08/2022 Grupo Como en el caso anterior, esta edición afina los detalles de la
4 startup y su solution profile, gracias al registro de los
antecedentes y la técnica de las 5W y 2H.

2.0 30/08/2022 Grupo Un paso más allá, tenemos la segunda edición del trabajo
4 grupal, contiene el desarrollo del Lean UX Process y definición
del segmento objetivo.

2.3 10/09/2022 Grupo En esta versión lo que se registra es el análisis de competidores


4 para tener el panorama más amplio y se mejoraron aspectos del
primer entregable. Además, se diseñó un modelo claro de
entrevistas.

2.5 12/09/2022 Grupo Se integran amplios conocimientos y técnicas del Needfinding


4 (User Persona, As-Is Scenario Mapping, etc).

3.0 23/09/2022 Grupo Para el presente entregable se empiezan a formar los primeros
4 elementos dentro de la próxima base de datos del trabajo grupal
y trae consigo el uso de Entities, Attributes y Logical Data Model.

Para el presente entregable se empiezan a formar los primeros


3.5 20/10/22 Grupo elementos dentro de la próxima base de datos del trabajo grupal
4 y trae consigo el uso de Relational Database Management
System y Physical Data Model

4.0 9/10/2022 Grupo Se integran amplios conceptos de colecciones en el nuevo motor


4 de base de datos y justificación en base a lo implementado para
la entrega del cuarto hito que trae consigo Collections, Schema
Validation, Data Model Patterns y NonRelational Database
Management System.

4.5 24/11/2022 Grupo Se realizaron las queries de base de datos SQL y NoSQL,
4 validaciones, procedures, agregattes, video about the team y
anexos.

www.companywebsite.com
3

CONTENTS
Student outcome ................................................................................................................................................... 4
Introducción .......................................................................................................................................................... 6
1.1. Startup Profile ...................................................................................................................................................... 6
Nombre del Startup: PIVY .................................................................................................................................................. 6
1.1.1. Descripción de la Startup ................................................................................................................................................... 6
1.1.2. Perfiles de integrantes del equipo .................................................................................................................................... 7

1.2. Solution Profile .................................................................................................................................................. 9


1.2.1. Antecedentes y problemática (5W - 2H) ........................................................................................................................... 9
1.2.2. Lean UX Process ............................................................................................................................................................... 11

1.3 Segmento Objetivo ..................................................................................................................................................... 18

Capítulo II: Requirements Elicitation & Analysis.................................................................................................. 19


2.1. Competidores ............................................................................................................................................................. 19
2.1.1 Análisis competitivo ......................................................................................................................................................................... 19
2.1.2. Estrategias y tácticas frente a competidores................................................................................................................................ 21

2.2. Entrevistas ................................................................................................................................................................. 22


2.2.1. Diseño de las entrevistas ................................................................................................................................................................ 22
2.2.2. Registro de entrevista..................................................................................................................................................................... 22
2.2.3. Análisis de entrevista ...................................................................................................................................................................... 26

2.3. Need Find .................................................................................................................................................................. 27


2.3.3. Empathy mapping .......................................................................................................................................................................... 29
2.3.4 As-is scenario mapping .................................................................................................................................................................... 31

Capítulo III: Database Design ............................................................................................................................. 33


3.1. Entities ............................................................................................................................................................... 33
3.2. Attributes ............................................................................................................................................................ 35
3.3 Logical Data Model ..................................................................................................................................................... 39
3.4. Collections ................................................................................................................................................................. 44
3.5. Schema Validation .................................................................................................................................................... 51
3.6 Data Model Patterns ................................................................................................................................................... 56

Capítulo IV: Database Implementation ................................................................................................................ 59


4.1 Relational Database Management System ............................................................................................................... 59
4.3. NonRelational Database ........................................................................................................................................... 65
4.4. Queries ...................................................................................................................................................................... 68
4.4.1. Relational Database Queries ................................................................................................................................. 68
4.4.2. Non-Relational Database Queries ......................................................................................................................... 74

Conclusiones....................................................................................................................................................... 81
Vídeo about-the-team ......................................................................................................................................... 83
Bibliografía .......................................................................................................................................................... 83
Anexos ................................................................................................................................................................ 86

www.companywebsite.com
4

STUDENT OUTCOME
Ingeniería de Software e Ingeniería de Sistemas (ABET-EAC-Student Outcome 7)
Demuestra la capacidad de adquirir y aplicar nuevos conocimientos según sea necesario, utilizando
estrategias de aprendizaje apropiadas.

Criterio específico Acciones realizadas Conclusiones

Actualiza conceptos Nicolle Francesca Amarillo Alejos Entender estos segmentos


y conocimientos TB1: y cuadros nos ayudó a
necesarios para su -Aprender, analizar y entender los cuadros poder entender mejor los
desarrollo del Lean UX problemas, las necesidades,
profesional y en TB2: las hipótesis, los supuestos
especial para su -Hacer un registro de entrevista para poder analizar nuestra
proyecto en -Diseño de estrategias competitivas startup y los segmentos
soluciones de TP: objetivos para así crear una
ingeniería de -Innovation sólida startup, posiblemente
software. TB3: un unicornio.
-Database Implementation
| Gracias al contenido de las
Italo Rodrigo Mendoza Apolaya entrevistas de los dos
TB1: segmentos objetivos
-Lean UX Problem Statements principales se concluye
TB2: tener un panorama más
-User Task Matrix amplio y focalizado sobre
TP: las necesidades del usuario
-Entities por resolver y se reformula
TB3: las verdaderas necesidades
-Innovation de cada tipo de usuario.
Yanely Felix Dolores
TB1: Se integra el uso de las
-Lean UX Assumption estrategias competitivas
-Lean UX Hypothesis Statements para solucionar mediante el
TB2: ingenio grupal las
-Attributes debilidades de nuestros
TP: competidores directos.
-Logical Data Model
TB3:
-Database Implementation
TF1:
-Queries NoSQL
-Queries SQL
-Inserción de datos SQL

Piero Salvador Valverde Cora


TB1:
-Lean UX Canvas

www.companywebsite.com
5

TB2:
-Diseño y registro de entrevistas
TP:
-Entities
TB3:
-Physical Data Model
TF1:
Queries NoSQL
Inserción de datos SQL
Nicolas Fernando Contreras Castellano
TB3:
-Physical Data Model

Reconoce la Nicolle Francesca Amarillo Alejos Para la entrega del trabajo


necesidad del TB1: aprendimos de ambas
aprendizaje -Lograr y analizar nuevas maneras de entender bases de datos sql y nosql
permanente para el UX Assumption los queries, los agregates
TB4:
desempeño las condiciones, las
-Schema Validation
profesional y el agreaciones, y más,
TF1:
desarrollo de además que aplicar la
-Queries NoSQL
proyectos en mejora continúa volviendo a
-Queries SQL
soluciones de rehacer algunas partes que
-Inserción de datos SQL
tecnologías de Piero Salvador Valverde Cora
pudieron estar mal y los
ingeniería de TB2: consejos de las
software. -Analizar entrevistas retroalimentaciones.
TB4:
-Data Model Patterns
TF1:
-Queries NoSQL
-Inserción de datos SQL
Italo Rodrigo Mendoza Apolaya
TB2:
-Analizar entrevistas
Italo Rodrigo Mendoza Apolaya
TB3:
Introducción al startup
TB4:
-Schema Validation
TF1:
-Queries NoSQL
-Queries SQL

Nicolas Fernando Contreras Castellano


TB4:
-Data Model Patterns
TF1:
-Queries NoSQL
-Queries SQL
-Inserción de datos NOSQL

www.companywebsite.com
6

CAPÍTULO
INTRODUCCIÓN
1.1. Startup Profile
Nombre del Startup: PIVY
1
• Nombre del proyecto: PIVY

• El equipo desarrollador detrás de PIVY, está conformado por jóvenes estudiantes


universitarios, decididos a tomar la iniciativa de combatir la escasez estudiantil en el
Perú. Por esta razón, el enfoque de nuestro proyecto es incentivar a los estudiantes a
cambio de la adquisición de un bien tangible o intangible.

Nombre del Startup:

LOGOTIPO:

1.1.1. Descripción de la Startup


PIVY es una empresa innovadora dentro del mercado tecnológico. Su enfoque principal
es el sector estudiantil de estudios técnicos y/o superiores. Además, toma muy a detalle
los problemas que presentan todos los jóvenes universitarios para darles una óptima
solución desde sus posibilidades. Durante este último periodo múltiples círculos
estudiantiles empezaron a reportar desgano en los estudios o falta de compromiso y
responsabilidad en sus quehaceres diarios. Por ello, se diseñó un aplicativo conectado
a red que sirva como incentivo para la mejora del sector educativo de universidades e
institutos. El proyecto consiste en mantener a los alumnos motivados a incrementar su
www.companywebsite.com
7

desempeño académico a través del acceso a un sistema de recompensas monetarias


que se mide según las notas académicas que obtiene cada alumno de manera individual
o grupal, ya que cada nota representa un puntaje diferente dentro de este sistema. Este
objetivo se logra a través de una alianza estratégica con Amazon, Wish, Shein, entre
otras, ya que, gracias a su colaboración, el puntaje obtenido por cada alumno le
permitirá realizar compras dentro del portal web de cualquiera de estas empresas
asociadas.

FUENTE DE INGRESOS:

La principal fuente de ingresos es la contratación por el servicio de universidades e


institutos. En segundo plano van las promociones que tengamos a favor de empresas
que soliciten publicidad en nuestro portal web y las comisiones por membresías
obtenidas de nuestro público con las empresas asociadas al proyecto.

• MISIÓN:
Incentivar el aprendizaje autónomo y continuo de los estudiantes dentro de nuestro
sector objetivo y apoyar el esfuerzo de estudiantes con bajos recursos gracias a las
ganancias que obtendrán por sus buenas calificaciones.

• VISIÓN:
Erradicar en un 75% las estadísticas de personas sin estudios técnicos o superiores
en el Perú por los principales motivos constantes como falta de recursos y el bajo nivel
pedagógico.

1.1.2. Perfiles de integrantes del equipo

Nicolle Francesca Amarillo Alejos


U202119197
Ingeniería de Sistemas

• Fascinada con el mundo de la


tecnología, tengo muchas expectativas
sobre mi desarrollo profesional. Soy una
persona ambiciosa y con muchas ganas
de aprender, además cuento con una
alta capacidad de liderazgo y soy muy
proactiva cuando se trata de proyectos o
trabajos en equipo

www.companywebsite.com
8

Italo Rodrigo Mendoza Apolaya


U20211E474
Ingeniería de Sistemas

● Me considero capaz de adaptarme a los


diferentes planes informáticos.
Adicionalmente, cuento con una gran
capacidad de análisis de la información y
experiencia en la gestión de equipos

Piero Salvador Valverde Cora


U202124051
Ingeniería de Sistemas

● Soy una persona que está acostumbrado


al trabajo bajo presión, tengo varios años
de experiencia en atención al cliente y en
búsqueda de oportunidades
comerciales. También me considero una
persona resolutiva, con buen ánimo y
capaz de resolver problemas fácilmente.

Nicolás Contreras Castellano


U202119663
Ingeniería de Sistemas

• Me considero una persona introvertida y


audaz. Me gustan mucho los proyectos
que tienen que ver con mejorar de una u
otra manera la vida de los demás. Tengo
experiencia en programación web y
gestión de redes sociales.

www.companywebsite.com
9

Yanely Felix Dolores


U20211D914
Ingeniería de Sistemas

● Soy una persona emprendedora, que


adora los retos y no se rinde fácilmente.
Muy detallista y autodidacta cada día,
nunca dejo de aprender y tengo un
especial don de gentes

1.2. Solution Profile


En los últimos años, el sector educativo a nivel nacional ha sido afectado debido a la
desmotivación del aprendizaje y los problemas económicos que sufren la mayoría de los
jóvenes universitarios. Según Apaza y Huamán (2012):

Entre 40 y 50 mil jóvenes abandonan sus estudios universitarios cada año,


lo que representa no menos de cien millones de dólares desperdiciados
por los padres de familia, con la consecuente frustración que ello
representa para ellos mismos y para sus hijos (p.78).

1.2.1. Antecedentes y problemática (5W - 2H)


Dentro de este punto focalizamos el desarrollo del problema en concreto, pero no la solución
en primera instancia para definir las causas del problema a resolver.

1.2.1.1. What (Qué)


Se decidió impulsar la aplicación para disminuir las complejidades que aprecian los
universitarios peruanos, ya que estas situaciones provocan que abandonen sus
carreras, obstaculizando su desarrollo personal. De esta forma, el despido de la
universidad es un tema que afecta a todos los países del mundo en diversos grados.
|En este contexto, la aplicación se enfocará en crear una percepción de los estudiantes
universitarios en la que su investigación es más relevante para mejorar su calidad de
vida. Esto se basará en personalizar su desempeño en estudios con beneficios reales;
Además, podrán ayudarse mutuamente a resolver problemas económicos extranjeros
con los mismos intereses.

1.2.1.2. When (Cuándo)


Las dificultades para acceder a la investigación pueden ocurrir en cualquier momento
de la vida diaria del estudiante, pues es necesario estudiar y repasar lo aprendido. Sin
embargo, el enfoque total durante las lecciones sincrónicas y asincrónicas es
importante.
www.companywebsite.com
10

1.2.1.3. Where (dónde)


Los problemas surgen cuando, al finalizar una lección virtual o presencial simultánea,
los estudiantes no cuentan con el espacio y los materiales didácticos para consolidar
sus conocimientos. En base a esto, la aplicación brinda pruebas dinámicas, con las
cuales los usuarios podrán recibir monedas y materiales de estudio, que les permitirán
seguir desarrollándose e integrarse plenamente a la sociedad. Los clientes utilizarán la
aplicación cuando se acerquen a una evaluación universitaria o deseen profundizar en
temas extracurriculares de la red relevantes para su profesión.

1.2.1.4. Who (quién)


Los actores involucrados son estudiantes, universidades y docentes. Las universidades
desempeñarán el papel de comprar servicios, mientras que los docentes serán
responsables de producir materiales de investigación que serán desarrollados por los
estudiantes.

En particular, esta aplicación está dirigida a los estudiantes universitarios, que por
escasos o limitados recursos económicos no pueden obtener materiales y fondos para
la investigación, y que gracias a esta aplicación enriquecen los materiales didácticos
para sus clases, podrán obtener a ellos. De esta manera, los estudiantes mejorarán en
gran medida su rendimiento académico y serán recompensados por su alto rendimiento.

1.2.1.5. Why (por qué)


La principal razón es la inestable educación en el Perú, que no reúne las condiciones
necesarias para ser considerada favorable a los estudiantes. La pobreza extrema, la
corrupción, los métodos de enseñanza inadecuados y el escaso desarrollo tecnológico
se encuentran entre los principales factores de la mala educación.

1.2.1.6. How (cómo)


Los usuarios utilizan el Servicio cuando se encuentran en circunstancias peligrosas.
Esto se refleja en la inestabilidad económica que están presenciando. Asimismo, el
dilema se deriva de factores sociales, económicos y políticos del contexto nacional. El
índice de pobreza extrema continúa aumentando, afectando la calidad de vida de la
población objetivo, ya que dificulta su óptima integración a la sociedad, particularmente
en el sector educativo. Aquí es donde los estudiantes universitarios priorizan el servicio,
ya que les brinda un medio para obtener ingresos económicos y enriquecerse. Podrán
intercambiar sus mejores notas a través de una solicitud en línea de materiales de
estudio y fondos. Esto les permitirá desarrollar aún más el pensamiento superior que
controlan gracias a la financiación de las universidades que garantizan su educación
superior. Los jóvenes de entornos económicos más bajos eventualmente podrán
integrarse en la sociedad de manera equitativa.

1.2.1.7. How much (cuánto)


El tema del problema en cuestión es la mala educación. Es la principal causa de
desempleo, bajos salarios y pobreza, entre otros. En este contexto, la tasa de educación
en los últimos años ha oscilado entre 35-45% debido a la falta de materiales educativos

www.companywebsite.com
11

basados en tecnología. Otros problemas significativos incluyen la baja pedagogía, una


tasa de riesgo nacional del 12,5 %, capacitación docente limitada y licencia escolar
anticipada. Durante la pandemia, se ha demostrado que el sistema educativo es
inapropiado para realizar magia. Sin embargo, alrededor del 40% de la población tiene
dificultades para acceder a los recursos económicos y tecnológicos. De igual forma,
estudios han demostrado que la enseñanza virtual está asociada a la desigualdad
educativa y digital.

1.2.2. Lean UX Process

1.2.2.1. Lean UX Problem Statements


Los problems statements se definen como sentencias concisas, las cuales establecen los
objetivos que, el negocio, busca alcanzar a largo plazo. Su relevancia recae en abordar
problemas de interés para los stakeholders del negocio sin brindarles una solución en
específico. A continuación, se presentarán cuatro enunciados postulados por el equipo de
trabajo:

✓ Problem Statement 1

La actualidad exige una elevada búsqueda de profesionales sensatos, líderes y aficionados a


su carrera profesional que no solo velen por intereses propios, sino que también que muestren
predisposición de ayuda y capacidades de indagación.

Hemos observado que, recientemente, resulta complicado impulsar el autoestudio en un


estudiante universitario, ya que muestran desinterés por profundizar temas de estudios de las
clases sincrónicas o, incluso, acrecentar temas nuevos de preferencia. De lo antedicho, se
percibe a la monotonía de las rutinas en la etapa universitaria como factor estimulante de la
desmotivación estudiantil.

¿Cómo lograr incentivar la motivación en los estudiantes universitarios para que puedan
fomentar el autoestudio y llegar a ser profesionales competitivos?

✓ Problem Statement 2

La construcción de conocimientos dentro de la etapa universitaria depende de, además de la


autonomía del estudiante, la eficacia de las metodologías de enseñanza de una institución
educativa. Ante ello, el rendimiento académico resulta ser propicio para examinar estos
aspectos.

A partir de un análisis a los usuarios, se determina como problemática el bajo rendimiento


académico. Los estudiantes universitarios comienzan a desaprobar las asignaturas de la malla
curricular exigida por su carrera profesional. El motivo de este problema recae en el estrés
ocasionado por el déficit de material de apoyo y/o refuerzo para el autoestudio.

¿Cómo impulsar la mejora de las calificaciones en los estudiantes de bajo rendimiento


académico?

✓ Problem Statement 3

Como efectos de la globalización, los jóvenes requieren del término de estudios superiores
para la correcta inserción dentro del mercado laboral. De igual forma, las habilidades

www.companywebsite.com
12

adquiridas, tanto intelectuales como socioemocionales, contribuyen en el desarrollo personal


intrínseco y, a su vez, en la mejora de la calidad de vida.

La universidad, como espacio público y social, es un entorno latente de desafíos que, muchas
veces, no solo es ocasionado por factores externos involuntarios, sino también por los propios
jóvenes universitarios. El más resaltante es el abandono de estudios. Las tasas de este
problema continúan en aumento, en lugar de despreciarse, lo que se traduce en una incorrecta
orientación pedagógica o en una escasa vocación profesional.

¿Cómo reducir la deserción estudiantil en las universidades para que los estudiantes disfruten
del sistema de educación?

✓ Problem Statement 4

La universidad se constituye como un espacio de interrelación orientada a la educación


superior y a la óptima preparación de las competencias, tanto académicas como sociales,
dentro de las diversas áreas de trabajo. Ello implica la vivencia de principios de respeto y
equidad entre los estudiantes.

Dentro de este contexto, se valora como escasa la integración de los jóvenes universitarios
provenientes de sectores económicos vulnerables.

¿Cómo conseguir que las universidades constituyan diferentes formas de financiamiento para
los estudiantes y, así, estos continúen con su formación competitiva?

1.2.2.2. Lean UX Assumption


Los Assumption, conocidos como “supuestos” en español, permiten identificar los riesgos del
proyecto e incentivar en el equipo de trabajo la expresión de opinión y participación. Dentro de
este contexto, el equipo de trabajo formuló las siguientes interrogantes, cada una cuenta con
las alternativas de rescate (plan).

Preguntas

1. ¿Quién es el usuario?

a. Mis usuarios serán universitarios de bajos recursos económicos

b. Mis usuarios serán estudiantes universitarios que desean un extra estudiando,


que tienen un reducido interés por continuar con sus estudios de carrera.

c. Mis usuarios serán las universidades acreditadas en el Perú con dificultades


para retener a sus estudiantes en sus planes de carrera universitaria.

2. ¿Dónde encaja nuestro producto en su trabajo o vida?

a. Cuando el estudiante tiene que elegir entre ocupar su tiempo en sus estudios o
trabajar para cubrir sus necesidades.

b. Cuando un estudiante no se encuentra satisfecho con las metodologías de


estudio de sus cursos.

www.companywebsite.com
13

c. Cuando las personas quieran tener una mejor experiencia comprando ropa a
precios cómodos.

3. ¿Qué problemas tiene nuestros productos? ¿Resolver?

a. Existe una alta tasa de deserción universitaria generada en su mayoría por


factores socioeconómicos.

b. Las metodologías de enseñanza tradicionales no resultan atractivas para los


estudiantes.
c. Las universidades pierden ingresos y ven comprometida su imagen al no retener
a sus estudiantes.

4. ¿Cuándo y cómo es nuestro producto? ¿Usado?

a. La conexión será por aulas conectadas entre sí, al mismo tiempo.


b. Mediante alarmas de notificaciones de alerta para el avance del producto.
c. Dará uso cuando se obtenga dificultad en su modalidad de aprendizaje.

5. ¿Qué características son importantes?

a. Multi Recompensas que serán canjeables conforme den uso al producto.

b. Alarmas y/o notificaciones para el cambio como motivación a los estudiantes.

c. Actualizaciones de múltiples variedades de temas con respecto a las plantillas o


las diferentes metodologías de aprendizaje.

6. ¿Cómo debe verse nuestro producto y cómo comportarse?

a. Como un servicio beneficioso ante aquellos que tienen problemas


socioeconómicos, ya que contará con un sistema de recompensas.

b. Como la aplicación que dará un cambio en la motivación en los estudiantes


universitarios.

c. Como un servicio que se desarrollará en las universidades ofreciendo un añadido


en las actividades de plan calendario.

ENUNCIADOS

1. Creo que mis clientes necesitan _______.


a. Un modelo de estudios atractivo y efectivo.
b. Una nueva forma de aportar a su economía personal.
c. Una app que brinda ofertas especiales para los universitarios.

2. Estas necesidades se pueden resolver con ______.

a. Una app que aporta eficiencia, rapidez y seguridad al acceder a las evaluaciones.

www.companywebsite.com
14

b. Un sistema que te recompense en relación con tu desempeño académico con bienes


útiles o dinero efectivo.
c. Un programa adaptativo que les permita a las universidades agregar a sus
programas de estudios metodologías sin una inversión mayor.

3. Mis clientes iniciales son (o serán) ______.

a. Universidades acreditadas en Perú, con una tasa de deserción universitaria elevada.


b. Estudiantes universitarios con poca motivación o interés.
c. Usuarios que quieran tener una mejor experiencia al momento de estudiar.

4. El valor # 1 que un cliente quiere de mi servicio es _______.

a. Una app con una interfaz sencilla y facilidad de navegación en la app, encontrando
las mejores metodologías de estudios.
b. Agilidad y rendimiento de app, para poder navegar y encontrar miles de galerías con
evaluaciones y premiadas.
c. Contenido optimizado, que le permita al usuario centrarse en aquello que realmente
le pueda interesar.

5.El cliente también puede obtener estos beneficios adicionales ______.

d. Las universidades podrán adquirir también beneficios dependiendo del


desempeño de sus alumnos adheridos al servicio.

6. Voy a adquirir la mayoría de mis clientes a través de _______.

a. A través de las redes sociales.

7. Haré dinero a través de ______.

a. Pago por suscripción de membresía por nuestro producto.

b. Pago anual o mensual por las actualizaciones dinámicas de nuestro sistema.


c. Pagos opcionales para aquellos usuarios que quieran obtener atajos para el avance
eficaz con el uso de nuestra app.

8. Mi competencia principal en el mercado será ______.

a. Las páginas web y aplicaciones conocidas como Quizizz y Buff.

9. Los venceremos debido a ______.

a. La diferenciación en la metodología de ventas en beneficio de las personas y de los


usuarios.
b. Recompensas con puntos canjeables con la finalidad de que sean intercambiables
por objetos tangibles.
c. Actualizaciones automáticas para distintos métodos de ventas dinámicos - eficaces.

10. Mi mayor riesgo de producto es ______.

www.companywebsite.com
15

a. Que sea de poco interés e innovador o que influya una baja motivación con el uso
de nuestra app a largo plazo.

11. Resolvemos esto a través de ______.

a. Distintas actualizaciones de interfaz y temas dinámicos que serán enviadas por un


sistema durante cada tiempo determinado.
b. La implementación de una buena campaña de marketing enfocado en las personas
que les gusta comprar ropa.
c. Recompensas tangibles que serán obtenidas por medio del uso constante de
nuestra app.

12. ¿Qué otras suposiciones tenemos? ¿Eso, si se prueba que es falso, causará que nuestro
negocio/ proyecto no funcione?

a. Que no seamos lo correctamente justos con todas las personas en el sistema de


recompensas.

1.2.2.3. Lean UX Hypothesis Statements


Para la creación del proyecto, el progreso se medirá en función de los resultados. Por ello, es
importante el enfoque tanto en soluciones como en resultados. En este contexto, el equipo de
trabajo planteó cuatro hipótesis que serán redactadas a continuación.

✓ Hipótesis 1

Creemos que al implementar un sistema de recompensas que reduzca gradualmente el


costo de cada estudiante, brindará un mejor apoyo financiero en términos de pensión o
gastos mensuales.

Sabremos que lo hemos logrado.

Como vemos las universidades aumentan la demanda de nuestros servicios en el


mercado nacional en un 15%.

✓ Hipótesis 2

Creemos que al implementar un sistema de recompensas que motive a los estudiantes


a través de un aprendizaje dinámico y creativo, disminuirá el porcentaje de deserción
de estudiantes universitarios.

Sabremos que hemos tenido éxito.

Cuando veamos un decremento en el porcentaje de deserción estudiantil universitario


anual del 25% en las universidades que adquieran nuestro servicio.

✓ Hipótesis 3

www.companywebsite.com
16

Creemos que al implementar secciones con un grupo de investigación para motivar a


más estudiantes universitarios a través de reuniones o transmisiones en vivo,
aumentará el porcentaje de motivación de los estudiantes universitarios.

Sabremos que lo hemos logrado.

A medida que vemos un aumento en el número de estudiantes universitarios que


utilizan estas nuevas secciones implementadas.

✓ Hipótesis 4

Creemos que al idear un método diferente y más dinámico para manejar pruebas,
evaluaciones o trabajos académicos, la tasa de interés de los estudiantes
universitarios aumentará.
Sabremos que lo hemos logrado.
Cuando se observó un aumento en el rendimiento académico de cada estudiante
universitario, ya sea durante el análisis del perfil de desempeño individual o durante el
seguimiento.

www.companywebsite.com
17

1.2.2.4. Lean UX Canvas

www.companywebsite.com
18

1.3 Segmento Objetivo


Descripción de cada segmento objetivo:

Universidad: Instituciones públicas y privadas acreditadas por la SUNEDU, con


domicilio en Lima. Estas personas podrán obtener servicios como resultado del
problema principal, que es retener a los estudiantes hasta el final de su carrera
universitaria.

Profesores: Son la estructura docente de las universidades mencionadas. Los


participantes, que mantienen pleno contacto y comunicación con cada alumno,
muestran una mayor conciencia de las dificultades del alumno. Gracias a eso,
comparten algunas correcciones.

Estudiantes: Jóvenes universitarios con residencia permanente en Lima, de 16 a


26 años de edad de entornos económicamente desfavorecidos. Esto plantea el
desafío de que los estudiantes universitarios están desmotivados y abandonan.

Datos cuantitativos del problema:

Universidades: La organización no respetó las condiciones básicas de calidad,


los estándares requeridos para la acreditación. Estos factores incluyen la falta de
empleo, incentivos educativos, objetivos académicos y disponibilidad de
profesores calificados de al menos el 25%.

Estudiantes: El público objetivo califica la deserción universitaria como el


principal desafío que llama la atención. Para 2017, la tasa de deserción
universitaria llegó al 30%, lo que indica falta de orientación profesional y
dificultades económicas (Andina, 2017). Por tanto, la previsión de matrícula
universitaria es de 300 000. Sin embargo, entre 40 000 y 50 000 jóvenes han
abandonado los estudios. De estos, el 70% pertenecen a universidades privadas
y el 30% restante pertenecen a universidades públicas.

Docentes: La percepción de la educación superior virtual se ha frustrado. Con un


estudio de 650 estudiantes, el 61,85% estaba insatisfecho con la calidad general
de la educación. De igual forma, el 55,23% de los estudiantes no está satisfecho
con la información que brinda su universidad.

Variables geográfica, demográfica y psicográfica:

Variable geográfica:
• País: Perú.
• Ciudad: Lima Metropolitana.

Variable demográfica:
• Género: Femenino / Masculino.
• Edad y etapa de ciclo de vida:
o Ciudadanos de 18 a 25 años.
• Ocupación: Universitarios

www.companywebsite.com
19

• Estado civil: Todos los estados.

Variable psicográfica:
• Nivel Socioeconómico (NSE): C, D o E
• Características de personalidad:
o Valiente
o Perseverante

CAPÍTULO

CAPÍTULO II: REQUIREMENTS ELICITATION & ANALYSIS

2.1. Competidores
2
Existen diversas apps en el mercado parecidas a nuestro producto, entre algunos
podemos mencionar:

2.1.1 Análisis competitivo

Competitive Analysis Landscape

¿Por qué llevar a cabo ¿Cómo identificar a nuestros principales competidores?


este análisis?

La importancia de desarrollar un análisis competitivo se centra en reconocer las debilidades, fortalezas,


amenazas y oportunidades que muestran nuestros oponentes. De igual forma, dicho análisis nos permite
generar estrategias empresariales propias para cumplir con nuestros objetivos corporativos. Dentro de los
aplicativos más usados por los segmentos objetivos tenemos: Clickworker, Remostask y Swagbucks.

Nuestro producto Edusolution Clickworker Remostask Swagbucks


/ Competidores

www.companywebsite.com
20

Overview Impulsar e Relacionar a sus Conectar a sus Recompensar a sus


Perfil incentivar la vida clientes mediante usuarios desde usuarios mediante el
universitaria equipos para el cualquier parte del uso examenes de corto
mediante desarrollo de tareas mundo para la plazo
recompensas según en conjunto. realización de tareas
actividades con relación a
extracurriculares y empresas y
notas aptitudinales. freelancers.

Ventaja Incentivar el Promover el trabajo Fácil de usar, Implementación de un


competitiva desarrollo de en equipo y conectividad programa de
¿Qué valor habilidades blandas desarrollar la toma de alrededor del mundo, recompensas y puntos
ofrece a los y desempeño decisiones.. plataforma de fácil para poder acceder a
clientes? académico, acceso. ganancias de valor
mejorando la considerable.
experiencia de la
vida universitaria.

Mercado Estudiantes universitarios.


Perfil de Marketing objetivo Docentes destacados en planilla de centro educativo.

Estrategias - Publicidad en - Buenas reseñas - Posicionamiento en - Ofrece premios y


de redes sociales. - Posicionamiento en buscadores bonus por uso de la
marketing - Anuncios en buscadores aplicación
Youtube - Marketing a través
- Ofertas y de experiencias y
descuentos dentro estadísticas
de la aplicación - Activa participación
- Relación en eventos
proporcional a
calidad-precio.

Productos & - Servicio de - Servicio de - Servicio de tareas - Soporte al usuario


Perfil de Producto seguridad online relacionamiento multitask de manera - Administración de
Servicios
para la toma de automático en virtual. finanzas con software
evaluaciones.. conjuntos de predefinido.
- Servicio de estudiantes.
almacenamiento
completo por
historial de cada
alumno (notas y
actividades).
- Servicio de
compras online.
- Administración de
bonus por misiones,
tareas y/o
exámenes.

Precios y Semestral: Mensual: Estándar: Gratuito


Costos S/. 14.90/alumno al Depende la $30/agente
ciclo personalización

Canales de Móvil Web


distribución (iOS, Android)
(Web y/o Sistemas operativos
Móvil) (iOS, Windows,
Linux)
Web

Fortalezas - Seguro - Colaborativo - Contacto directo con - Gratuito


Análisis SWOT - Práctica - Eficaz empresas
- Completa - Útil - Universal
- Interactiva

www.companywebsite.com
21

Debilidades Nuevo en el -Omiten la mala - No está en español -Requiere de saber


mercado. selección de grupos por lo que el público múltiples idiomas para
automáticos ya que, peruano tendrá la realización de las
al no cumplir, se dificultad en su uso. tareas con más
pierde la ganancia -Requiere de saber puntaje.
completa. múltiples idiomas para - El pago no es en su
- Trabaja con poca la realización de las mayoría seguro.
transparencia en su tareas con más - Sus pruebas no son
plataforma para el puntaje. altamente seguras.
colaborador. - La accesibilidad es
muy baja a pesar de
su alta demanda.

Oportunidades Conecta bastantes Alta demanda de En el proceso de Más tiempo de uso


servicios que trabajos y búsqueda por este gracias las
dependen del otro stakeholders internos. tipo de aplicaciones recompensas
en una sola este fue el primer
aplicación resultado
siempre

Amenazas Demasiada Portal web con poca Pago remunerado de Mal manejo en el
competencia. información, trae manera sector de estrategias
desconfianza al desproporcionada. competitivas.
contratista. Mercado pequeño y
Puede ser fácil de expuesto a
reemplazar competencias con
mayor alcance

2.1.2. Estrategias y tácticas frente a competidores


En este punto definimos las estrategias para llevar a cabo el cumplimiento de
nuestros objetivos como empresa a corto, mediano y largo plazo. Entre las principales
estrategias como empresa tenemos:

• Aplicaremos la técnica de las 3B’s, al brindar distintos planes para nuestros clientes,
desde el más económico hasta el VIP, y mejorar el acceso para su conjunto estudiantil
mediante una plataforma amigable y segura.

• Aplicaremos la técnica de diversificación capitalizada, al ampliar la variedad de


tiendas online para los estudiantes, asegurando una mayor satisfacción al momento
de elegir su elección de compra.

• Aplicaremos la técnica calendario fiscal financiero, al garantizar la remuneración


económica apropiada por puntaje obtenido mediante múltiples canales de pago como
billeteras online, depósitos directos a la tarjeta, Paypal, Yape, Plin, entre otros.

• Aplicaremos la técnica de la evaluación con inteligencia artificial, al asegurar mediante


nuestro sistema de seguridad por sensor, la fiabilidad de las pruebas realizadas de
manera online en nuestras plataformas.

• Aplicaremos la técnica del presupuesto accionario, al reinvertir gran parte de las


ganancias en la mejora continua de las plataformas, incluyendo innovación en
software y relación proporcional en precio por prestación de servicio.

• Aplicaremos la técnica del trabajo honesto, al manejar el aplicativo con transparencia,


mediante un reporte semanal de los movimientos de cada parte de la StartUP, para
mejorar la relación con nuestros inversionistas, clientes y usuarios.

www.companywebsite.com
22

2.2. Entrevistas
En esta parte del informe se comenzará con la investigación de los segmentos objetivos
y se realizarán entrevistas para recopilar los datos y crear nuestro Needfinding.

2.2.1. Diseño de las entrevistas


Segmento 1: Universitarios
Preguntas demográficas:
• ¿Cuál es tu nombre?
• ¿Cuál es tu edad?
• ¿Cuál es tu estado social?
• ¿Cuál es tu ocupación profesional? ¿te encuentras laborando en la actualidad?

Preguntas Emocionales:

• ¿Qué emociones se generan en tu persona al escuchar que la tasa de deserción


estudiantil continúa en incremento?
• En relación con el desinterés estudiantil, ¿cuál es tu posición crítica?
• ¿Cuáles son los propósitos que postulas al momento de reforzar los aprendizajes
obtenidos en sesiones académicas sincrónicas?
• Si existiera alguna plataforma de intercambio monetario cuya finalidad se orientará a
integrar a estudiantes de sectores económicos vulnerables dentro del entorno
estudiantil, ¿qué buscarías conseguir en la solución de este servicio?
• ¿Qué marcas le gustaría que se incluyera en el proyecto?
• ¿Qué factores consideras tu como estimulantes para la continuación de tus estudios?

Segmento 2: Profesores

Preguntas Demográficas:
• ¿Cuál es su nombre?
• ¿Cuál es su edad?
• ¿Cuál es su ocupación profesional?
• ¿Se encuentra laborando en la actualidad?

Preguntas Emocionales:

• Durante su labor como docente ¿Qué tan frecuente observó problemas de


desmotivación y desinterés en los estudiantes, según su percepción?
• ¿Qué factores considera que son estimulantes para que un estudiante no deje la
carrera y tenga un buen desempeño estudiantil?
• ¿Cómo cree que influirá en el rendimiento académico, el premiarlos con un bien
tangible o intangible?
• Si existiera una plataforma que le permitiría incentivar la vida universitaria ¿Considera
que es una buena iniciativa de StartUp?
• Para finalizar ¿Cuáles serían sus propuestas para la mejora de la StartUp
(plataforma)?

2.2.2. Registro de entrevista


www.companywebsite.com
23

Segmento 1: Universitarios

Entrevistado N° 1:

• Nombre y Apellido: Kathia Jamira Levano Levano


• Edad: 18
• Evidencia de la reunión:

• Url del video: https://youtu.be/iDA4aybceqY


• Informe resumen de la entrevista:
La entrevista fue realizada a Kathia Levano, estudiante de 18 años,
universitaria de la carrera de Ingeniería Empresarial y de Sistemas con residencia en
Ica. Las respuestas obtenidas fundamentan los obstáculos que atraviesan los jóvenes
del país, para poder continuar sus estudios superiores en una universidad o instituto.
Dicho esto, a veces no pueden costear sus estudios superiores debido a la falta de
recursos económicos. Es por esa razón que las personas por las carencias de
oportunidades optan por buscar un trabajo para poder solventar sus estudios. A veces
resulta muy difícil debido a la falta de apoyo para poder trabajar y estudiar a la vez.
Respecto a los objetivos de la entrevistada, trata de encontrar nuevas maneras
de seguir desarrollándose académicamente y expandir sus conocimientos para lograr
titularse con las mejores notas. Finalmente, el personaje identifica la falta de nuevas
maneras parcialmente que aporte a sus conocimientos, además de falta de
estimulación para poder esforzarse cada vez más y además que desea graduarse
como una de las mejores estudiantes de su carrera.

Entrevistado N° 2:

• Nombre y Apellido: Maria Elena Quispe Buendia


• Edad: 18
• Evidencia de la reunión:

www.companywebsite.com
24

• Url del video: https://youtu.be/iDA4aybceqY?t=213


• Informe resumen de la entrevista:
La entrevista fue realizada a Maria Elena Quispe, estudiante de 18 años,
universitaria de la carrera de Ingeniería Civil con residencia en Lima. Las respuestas
obtenidas dan a muchos factores sobre lo jóvenes en el país no llegan a seguir sus
estudios por la falta de autoridades en el país que no hacen nada contra este
problema social, la cual contribuye a que más jóvenes no terminen sus estudios y
además que la pobreza del país genera que los jóvenes repliquen una vida no apta
para ellos, como trabajar.
Respecto a los objetivos de la entrevistada, es que ella busca mejorar en su
promedio, las nuevas maneras de enseñanza virtual no contribuyen mucho a su
desarrollo profesional, debido a que es muy fácil distraerse, en cambio en clases
presenciales se puede tomar apuntes y aprender con más facilidades. Finalmente, lo
que busca es un buen estado emocional continuando en su mejora académica, para
poder terminar su carrera y así poder más adelante contribuir a su familia.

Entrevistado N° 3:

• Nombre y Apellido: Javier Martin Sebastian Tasayco


• Edad: 18
• Evidencia de la reunión:

• Url del video: https://youtu.be/iDA4aybceqY?t=447


• Informe resumen de la entrevista:

www.companywebsite.com
25

La entrevista fue realizada a Javier Sebastian, estudiante de 18 años,


universitario de la carrera de Ingeniería de Software con residencia en Ica. Las
respuestas obtenidas dan existencia que muchos talentos son desaprovechados,
además que no todos gozan de una buena condición para poder continuar sus
estudios y que las autoridades no se preocupan por esta situación y no le toman
mucha atención ante este problema social que afecta a la mayoría de los jóvenes.
Respecto a los objetivos del entrevistado, es que busca que nuestro proyecto
tenga parte de apoyo de Faber-Castell quien es productor principal para proveer los
productos donde sirve para apuntes de los estudiantes, también que nuestra página
web seria de mucha ayuda para sus aspiraciones, de acuerdo al progreso que vaya
presentando de acuerdo a las asesorías que pueda recibir para lograr terminar sus
estudios superiores.

Segmento 2: Profesores
Entrevistado N° 1:
• Nombre y Apellido: Leonardo Ivan Amarillo Raqui
• Edad: 58
• Evidencia de la reunión:

• Url del video: https://youtu.be/iDA4aybceqY?t=706


• Informe resumen de la entrevista:
La entrevista fue realizada a Leonardo Amarillo, Actualmente
Asesor universitario de la carrera de Ingeniería de Sistemas con residencia en Lima.
Las respuestas obtenidas dan existencia que, si existe problemas de desmotivación o
desinterés por parte de los alumnos, causado por factores económicos, sociales y por
falta de apoyo. El profesor está de acuerdo con que ofrecer una recompensa al esfuerzo
de los estudiantes universitarios los motivará a mejorar. Finalmente, ofrece como
propuesta implementar concursos o actividades extracurriculares que también otorgan
puntos, además de añadir métricas de calificación distintas para cada alumno.

Entrevistado N° 2:
• Nombre y Apellido: Jose del Carmen Santa Maria Aldoradin
• Edad: 34
• Evidencia de la reunión:

www.companywebsite.com
26

• Url del video: https://youtu.be/iDA4aybceqY?t=1050


• Informe resumen de la entrevista:
La entrevista fue realizada a José Santa Maria, actualmente profesor
universitario del curso denominado como Matemática Computacional. Las respuestas
obtenidas dan existencia que el docente percibe el problema de desmotivación y
desinterés por parte de los alumnos ocasionado por los temas con mayor complejidad.
Además, considera que es importante no centrarse en la parte académica sino
desarrollar más las habilidades blandas, que sumado con un premio al esfuerzo y una
plataforma que ayude a mejorar su rendimiento académico sería satisfactorio para los
alumnos. Finalmente ofrece como aporte a la Startup que sea una plataforma intuitiva
y divertida para que los alumnos la utilicen.

2.2.3. Análisis de entrevista

Segmento 1: Universitarios

Respecto a las entrevistas a los estudiantes universitarios, podemos concluir que


todos tienen algo en común, y es la frustración y la tristeza de la deserción escolar,
además que más del 90% de los entrevistados, sienta enojo al saber que algunos
estudiantes no valoran las oportunidades que se les presenta para poder continuar sus
estudios superiores a diferencia de otros estudiantes que tienen que trabajar para poder
solventar sus estudios, padeciendo de carencias para seguirlos. En consecuencias
todos los entrevistados desean tener nuevas plataformas para poder nuevas técnicas
de aprendizaje y obtener recompensas, que les motivara para poder alcanzar las
mejores notas y más del 100% desean graduarse satisfactoriamente y poder ayudar a
su familia a salir adelante.

Segmento 2: Profesores
Con respecto a las entrevistas realizadas a los docentes universitarios, podemos
concluir que el 100% está de acuerdo con que hay alumnos desmotivados con su vida
universitaria. Además, algunos factores que ellos identifican son económicos, falta de
apoyo, temas complejos y desinterés en leer el material ofrecido. Por otra parte, el 100%
de los docentes universitarios está de acuerdo con que recompensar el esfuerzo de los
estudiantes por sus buenos resultados académicos podría ser una buena práctica para
motivarlos a mantener a seguir con éxitos sus estudios e incentivar a más a seguir este

www.companywebsite.com
27

ejemplo. Finalmente, los docentes opinan que su implementación en la universidad


sería muy buena opción para motivar a los alumnos y guiarlos en su vida universitaria.

2.3. Need Find

Tras identificar nuestros segmentos objetivos, se han realizado entrevistas


individuales con el objetivo de recolectar cualidades y necesidades de cada segmento.
Esta información nos orientará en el proceso de diseño del producto final, pero para
ello, aún es necesario unificar dicha información mediante la ayuda de metodologías
estratégicas. En esta sección se incluirá los esquemas de User Personas.

El User persona es una representación semi ficticia o arquetípica de un segmento


objetivo la cual nos servirá para identificar qué tipo de contenidos o características del
producto son percibidas por el usuario para de esta manera resolver cualquier tipo de
inconveniente presentado o cubrir las necesidades del segmento.

User Persona de segmento objetivo 1: Universitarios

User Persona de segmento objetivo 2: Docentes

www.companywebsite.com
28

2.3.2. User task matrix

Task Matrix Elena Buendia Quispe

Frequency Importance

Encontrar mejores opciones de estudios Sometimes High

Obtener reconocimientos por sus esfuerzos Often High

Programar sesiones para adecuarse a su horario Often High

Fijar nuevas aspiraciones para adquirir mejores conocimientos Always High

Tener consultas sobre su aprendizaje Sometimes Medium

Apreciar mejor nuestra página web. Often High

www.companywebsite.com
29

Task Matrix Carlos Martin Campos


Magallanes

Frequency Importance

Encontrar mejores opciones para apoyar a sus Always High


alumnos

Indicar la manera de lograr que sus Often High


estudiantes obtengan apoyo económico

Dar prescripciones sobre nuestra página web Usually High


de apoyo al estudiante

Medir las posibilidades de aprendizaje de sus Often Medium


alumnos

Evaluación de sus jóvenes universitarios Always High

Diagnosticar y clasificar nuevas plataformas de Usually High


enseñanza

2.3.3. Empathy mapping


Es una herramienta de colaboración que los equipos pueden usar para obtener una visión
más profunda de sus clientes.

Segmento 1: Estudiantes

www.companywebsite.com
30

Segmento 2: Docentes

www.companywebsite.com
31

2.3.4 As-is scenario mapping


Los As-Is Scenario Mapping es un flujo de trabajo para una o más personas, estos Mapas
son escenarios que capturan en forma escrita que nos sirve como un guion gráfico para
identificar los puntos débiles para las expectativas de los usuarios y las oportunidades de
diseño.

www.companywebsite.com
32

www.companywebsite.com
33
CAPÍTULO

CAPÍTULO III: DATABASE DESIGN 3


3.1. Entities
Las Entities son parte fundamental del desarrollo de una base de datos, puesto que una Entidad es
algo sobre lo que almacenaremos datos, por ello no son necesariamente tangibles. Las Entities o
Entidades poseen a los “Attributes” o “Atributos”, puesto que son las por decirlo de una manera sencilla
las características que describen a nuestras Entities. Además que cuando representamos una Entity
en nuestra base de datos solo estamos almacenando los atributos.

De esta manera, con respecto a nuestra Startup hemos considerado las siguientes Entities que
formarán parte de la base de datos de nuestra Startup.

Usuario

Breve descripción:
En esta entidad el usuario podrá crear una cuenta el cual tendrá un ID y una contraseña para poder
acceder a su cuenta.

Universitarios

Breve descripción:
Hemos definido a la entidad universitarios, porque serán nuestros principales clientes para nuestra
aplicación, por ello es primordial definirlos.

Profesor

Breve descripción:
La entidad profesor será la parte donde dictan sus clases a los universitarios que accedan a nuestra
aplicación.

Detalle Universitario

Breve descripción:
En esta entidad se guardarán la información académica de los universitarios, además de información
académica durante su estadía en la app.

www.companywebsite.com
34

Salón

Breve descripción:
En esta entidad se guardará la información y atributos del salón de clases que le toque cursar al
universitario al comenzar a usar la app.

Facultad

Breve descripción:
En esta entidad se guarda la faculta a la que pertenece el universitario y también el nombre de su
universidad donde cursa sus estudios superiores

Curso

Breve descripción:
En esta entidad se acreditará los cursos que llevará el universitario para poder reforzar los temas que
está llevando en su universidad, además contará con las horas que le dedique a la app .

Recompensa Obtenida

Breve descripción:
Esta entidad se tomará las recompensas que se le dará a los universitarios por sus logros obtenidos
al terminar un curso, además que contará puntos adicionales para sus exámenes.

Universidad

Breve descripción:

www.companywebsite.com
35

Esta entidad será la casa de estudio de cada universitario, en el cual se está formando tanto
profesional como académicamente, además que guardará información específica de cada
universidad.

Canjeo puntos

Breve descripción:
Esta entidad tendrá como misión de guardar y canjear los puntos que obtenga el universitario en
empresas que tengan convenio con nuestra app para que pueda canjear por algún producto en
específico que ofrezca la empresa.

Ciudad

Breve descripción:
Esta entidad tendrá relación con la entidad universitaria, ya que mantendrá la información personal de
cada universitario, tales como el país al que pertenezca o el nombre de su ciudad.

Empresa

Breve descripción:
Esta entidad guarda relación con la entidad canjeo de puntos, ya que almacenará información
necesaria cuando el universitario decida canjear sus puntos por algún producto.

3.2. Attributes
Los attributes son las características o rasgos de un tipo de entidad que describe la entidad. Por
ello, los valores de los atributos describen los miembros de la entidad.

Usuario

Nombre del atributo Descripción del atributo

User_ID Usuario del universitario

www.companywebsite.com
36

User_Name Nombre del universitario en la plataforma

Clave_acceso Contraseña de la cuenta del universitario

Nombre Nombre del usuario

Apellidos Apellido del usuario

Teléfono Numero de teléfono del usuario

Correo Correo personal del usuario

Universitario

Nombre del atributo Descripción del atributo

Usuario_Id Identificador único del estudiante

Detalle_Universitario_ID Información personal del universitario

Profesor

Nombre del atributo Descripción del atributo

Usuario_ID Código del profesor

Universidad_ID Nombre de la universidad

Detalle universitario

Nombre del atributo Descripción del atributo

Detalle_ID Información del universitario

Facultad_ID Nombre de la facultad

Promedio_Ponderado Promedio final de cada curso obtenido por el universitario

Total_Puntos El total de puntos que consiga el universitario

Salón

Nombre del atributo Descripción

www.companywebsite.com
37

Codigo_Clase Con este código, los estudiantes podrán ingresar a la clase.

Profesor_ID Código del profesor para ingresar a la clase

Curso_ID Código del curso que impartirá enseñanzas

Facultad

Nombre del atributo Descripción

Facultad_ID Código de la facultad

Universidad_ID Código foráneo de la universidad

Nombre_Facultad Nombre de la facultad de la universidad

Curso

Nombre del Descripción del atributo


atributo

Curso_ID Código del curso

FacultadID Código de la facultad

Nombre_Curso Nombre del curso

Horas_Dictadas Número de horas dictadas por los profesores

Total_Creditos Número del total de créditos acumulados por el alumno, obtenido


según el curso

Recompensa Obtenida

Nombre del atributo Descripción del atributo

Estudiante_ID Código foráneo del estudiante

Curso_ID Código foráneo del curso

Fecha_Recompensa Fecha en la que se recibió la recompensa

Cant_Puntos Número de la cantidad de puntos

Universidad

www.companywebsite.com
38

Nombre del atributo Descripción del atributo

Universidad_ID Código de la universidad

Ciudad_ID Código foráneo de la ciudad

Nombre_Universidad Nombre de la universidad

Ciudad

Nombre del atributo Descripción del atributo

Ciudad_ID Código de la ciudad

NombreCiudad Nombre de la ciudad

Pais_Ciudad País de procedencia de la ciudad

Canjeo Puntos

Nombre del atributo Descripción

Estudiante_ID Código foráneo de los estudiantes

Empresa_ID Código foráneo de la empresa

Fecha_Canjeo Fecha en la que se realizó el canje al universitario

TotalPuntosCanjeado Número del total de puntos canjeados

Empresa

Nombre del atributo Descripción del atributo

Empresa_ID Código de la empresa contratista

Ciudad_ID Código foráneo de la ciudad

Nombre_Empresa Nombre de la empresa contratista

RUC RUC de la empresa contratista


.

www.companywebsite.com
39

3.3 Logical Data Model


A continuación, se procede a representar las entidades y atributos a implementar en la base de
datos del proyecto Pivy a través de un modelo gráfico. En este sentido, el equipo de trabajo
alternó por seleccionar el modelo de datos lógico. Los motivos recaen en el establecimiento de
las relaciones lógicas entre las diferentes entidades a partir de la cardinalidad.

Fig 01. Modelo inicial de datos lógicos del proyecto

Fig 01. Modelo inicial de datos lógicos del proyecto

LINK DE ACCESO: https://lucid.app/lucidchart/14e3e974-8be6-42d5-a704-


ff28b384d575/edit?viewport_loc=-2071%2C-
456%2C4490%2C2253%2C0_0&invitationId=inv_e398f527-c73f-460a-b3d3-42136cc8ebe7

www.companywebsite.com
40

Explicación de las cardinalidades en el ERD:


N° Entidades: 12

Relación entre usuario y profesor o universitario:


Un usuario a la hora de registrarse colocará sus datos personales, se le asignará un
username y este podrá elegir una contraseña. Estos datos de usuario estarán vinculados a
una entidad universitario o profesor, dependiendo del tipo de usuario que se registre. Un
usuario estará vinculado a una y solo una entidad de universitario o profesor, debido a que
estamos hablando de una sola persona.

Relación profesor - universidad


Un profesor debe pertenecer a una universidad y una universidad registrada puede tener 0 o
muchos profesores.

Relación profesor - salón


Un salón de clase debe tener solamente un profesor y un profesor puede tener múltiples
salones.

www.companywebsite.com
41

Relación salón - curso


Un curso puede tener múltiples salones y un salón deben pertenecer obligatoriamente a un
curso.

Relación universitario - detalleUniversitario


Un universitario debe tiene un detalle de universitario y un detalle universitario se le asigna a
un solo universitario.

Relación DetalleUniversitario - Facultad


Un DetalleUniversitario debe tener registro de la facultad a la que pertenece el estudiante, la
cual es una y una facultad está disponible para muchos estudiantes.

Relación Facultad - Universidad


Un Facultad pertenece a una universidad y una universidad puede tener múltiples facultades.

www.companywebsite.com
42

Relación Facultad - Curso


Un Facultad tiene múltiples cursos y un curso pertenece a una facultad.

Relación Universidad - Ciudad


Un Universidad está ubicada en una ciudad y una ciudad puede tener muchas universidades.

Relación Universidad - Empresa


Un Empresa está ubicada en una ciudad y una ciudad puede tener muchas empresas.

www.companywebsite.com
43

Relación Curso - Recompensa_Obtenida


De un curso se pueden obtener múltiples recompensas y una recompensa debe pertenecer a
un solo curso.

Relación Universitario - Recompensa_Obtenida


Un Universitario puede tener múltiples recompensas y una recompensa debe pertenecer a
un usuario.

Relación Universitario - Canjeo_puntos


Un Universitario puede canjear puntos múltiples veces y un canjeo de puntos se realiza por
un estudiante.

Relación Ciudad - Empresa


Una ciudad puede tener múltiples empresas y una empresa debe pertenecer a una ciudad

www.companywebsite.com
44

Relación Canjeo_Puntos - Empresa


Los canjes de puntos pueden ser con productos de una sola empresa y una empresa puede
recibir múltiples canjes de puntos.

3.4. Collections

El esquema flexible de las bases de datos de tipo no relacional permite a los desarrolladores aplicar de
forma oportuna la desnormalización. Este proceso consiste en añadir información redundante con el
propósito de mejorar la capacidad de lectura de la base de datos. No obstante, la desnormalización
genera que las operaciones de escritura se vuelvan más complejas.

Con esto dicho, es crucial para el performance de nuestra base de datos no relacional que elijamos de
forma asertiva las colecciones y la información almacenada dentro de las colecciones. Para ello, hemos
visto conveniente agrupar las tablas de nuestra base de datos relacional según dominios, con el
propósito de convertir nuestras tablas de forma eficiente en colecciones con toda la información
relevante estando almacenada.

Dominio #1: Entidades relacionadas con los usuarios en la plataforma

• Tablas directamente relacionadas:


• Usuario
• Profesor
• Universitario
• Detalle_universitario

• Tablas indirectamente relacionadas:


• Facultad
• Universidad

www.companywebsite.com
45

• Salón

• Colecciones extraídas de la información de esas tablas en base al dominio:


• Profesores
• Universitarios

Colecciones creadas en base al primer dominio:


Collection profesores:
Para la creación de la colección profesores con las tablas que teníamos del modelo relacional
decidimos colocar los atributos de las entidades Usuario, Salón y Universidad como campos de los
documentos que estarán en nuestra colección Profesores. El motivo de esto es que los documentos
contienen información personal del profesor como usuario, clave, nombres, apellido, teléfono y correo.
Por otro lado también tendrá información de la universidad asociada por medio del ObjectId de la
colección Universidad y los salones de clase que dicta según el código de clase del salón para acceder
a esta información por medio de queries cada vez que la aplicación lo necesite.
Ejemplo:

Campos:
• UserName: Equivale al UserName de la entidad Usuario
• Clave_Acceso: Equivale a la clave de acceso en la entidad usuario.
• Nombres, apellidos, teléfono y correo: Provienen de la entidad Usuario
• Universidad_ID: Hace referencia a la universidad a la que pertenece el profesor.
• Salones de clase: Un arreglo que contiene el código de todos los salones de clase en los que
dicta el profesor.

Collection universitarios:
Para la creación de la collection Universitarios con las tablas que teníamos del modelo relacional
decidimos colocar los atributos de las entidades Usuario, Detalle Universitario, Facultad y Universidad
como campos del documento que puede ir dentro de nuestra colección Universitarios: El motivo de esto
es que los documentos van a contener información personal del universitario como usuario, clave,
nombres, apellido, teléfono y correo que nos serán útiles puesto que es un usuario. Además la
información de la universidad asociada y los salones de clase será útil para saber a sus notas,
promedio, puntos y a que facultad pertenece.

www.companywebsite.com
46

Campos:
• UserName: Equivale al UserName de la entidad Usuario.
• Clave_Acceso: Equivale a la clave de acceso de la entidad usuario.
• Nombres, apellidos, teléfono y correo: Provienen de la entidad Usuario.
• Facultad_ID: Hace referencia a la facultad que pertenece al Universitario.
• Universidad_ID: Hace referencia a la universidad a la que pertenece el universitario.
• Promedio_Ponderado: Equivalente al Promedio_Ponderado de la entidad DetalleUniversitario.
• Total_Puntos: Equivalente al Total_Puntos de la entidad DetalleUniversitario.

Dominio #2: Información relacionada con las clases académicas


• Tablas directamente relacionadas con el dominio:
• Salón
• Curso

• Tablas con información vinculada al el dominio:


• Facultad
• Universidad
• Profesor
• Usuario

Colecciones creadas en base al segundo dominio:


Collection clases:
Para la creación de la colección Clases con las tablas que teníamos del modelo relacional decidimos
colocar los atributos de las entidades Usuario (vinculado por medio del profesor), Curso y Salón como
campos del documento que puede ir dentro de nuestra colección Clases. Consideramos estos campos
para detallar todo lo que una clase tiene como el nombre del profesor, nombre del curso, créditos,
facultad y más. Esta colección tendrá relación con los profesores.

www.companywebsite.com
47

Campos:
• Codigo_Clase: Sirve para identificar el código de la clase. En el modelo relacional está en la
tabla “curso”.
• Nombre_Profesor: Almacena el nombre del profesor, que en el modelo relacional se ubica en
la tabla “usuario” y cuya información está vinculada con la tabla “profesor”. De la tabla
profesor solamente se colocó este atributo debido a que es el único que requiere la aplicación
a la hora de mostrar una clase.
• Horas_Dictadas: Se registran las horas dictadas, información que pertenece a la tabla
“Curso”.
• Total_Creditos: Se registra el total de créditos, que en se ubica en la tabla “Curso”.
• Facultad_Id: Hace referencia a la facultad a la que pertenece el curso.

Dominio #3: Información relacionada con las universidades:

• Tablas directamente relacionadas con el dominio:


• Universidad
• Facultad
• Tablas con información vinculada al dominio:
• Ciudad
• Colecciones extraídas de la información de esas tablas en base al dominio:
• Facultades
• Universidades

Colecciones creadas en base al tercer dominio:


Collection facultades:
Para la creación de la colección Facultades con la tablas que teníamos del modelo relacional decidimos
guiarnos de los atributos de las entidades Facultad y Universidad. Consideramos estos atributos como
campos de los documentos de la colección facultad que será asociada con la universidad, clases,
profesores y universitarios.

www.companywebsite.com
48

Campos:
• Nombre_Facultad: Equivalente al Nombre_Facultad de la entidad Facultad.
• Nombre_Universidad: Equivalente al Nombre_Universidad de la entidad Universidad.

Collection universidades:
Para la creación de la colección Universidades con la tablas que teníamos del modelo relacional
decidimos guiarnos de colocar los atributos de las entidades Facultad y Ciudad. Consideramos estos
atributos como nombre, facultades y ciudad. La colección Universidad se relaciona con la colección
universitarios y profesores.

Campos:
• Nombre_Universidad: Equivalente al Nombre_Universidad de la entidad Universidad.
• Facultades: Hace referencia a la información de las facultades que pertenecen a la
universidad.
• Ciudad_ID: Hace referencia a la ciudad a la que pertenece la universidad.

Dominio #4: Información relacionada con las recompensas de los estudiantes


• Tablas directamente relacionadas:
• Recompensa_obtenida
• Empresa
• Canjeo_puntos
• Tablas indirectamente relacionadas:
• Ciudad
• Universitario
• Colecciones extraídas de la información de esas tablas en base al dominio:
• Recompensas
• Empresas
• Canjeo_puntos

Colecciones creadas en base al cuarto dominio:

www.companywebsite.com
49

Collection recompensas:
Para la creación de la colección Recompensas decidimos utilizar atributos de las Entidades
Recompensa_Obtenida, Curso y Universitario como campos de los documentos que irán en nuestra
colección Recompensas. Consideramos campos como Fecha Recompensa, Puntos, Estudiante y
Clase.

Campos:
• FechaRecompensa: Equivalente a Fecha_Recompensa de la entidad Recompensa_Obtenida.
• Puntos: Equivalente a Cant_Puntos de la entidad Recompensa_Obtenida.
• Estudiante: Hace referencia a los Universitarios que obtienen la recompensa.
• Clase: Hace referencia al curso en el que se dio la recompensa.

Collection empresas:
Para la creación de la colección Empresas decidimos utilizar atributos de las Entidades Empresa y
Ciudad como campos de los documentos que irán en nuestra colección Empresas. Consideramos
campos como Nombre_Empresa, Ciudad_ID y RUC.

Campos:
• Nombre_Empresa: Equivalente al Nombre_Empresa de la entidad Empresa.
• Ciudad_ID: Hace referencia a la ciudad en la que se ubica la empresa.
• RUC: Equivalente al Ruc de la entidad Empresa.

Collection canjeo_puntos:
Para la creación de la colección canjeo_puntos decidimos utilizar atributos de las Entidades
Universitario, Canjeo_Puntos y Empresa como campos de los documentos que irán en nuestra
colección canjeo_puntos. Consideramos campos como estudiante, empresa, Fecha Canjeo y
Total_Canjeado. Con la finalidad de tener un registro de los puntos canjeados.

www.companywebsite.com
50

Campos:
• Estudiante: Hace referencia al Estudiante que canjeo los puntos.
• Empresa: Hace referencia a la empresa donde el Estudiante canjea los puntos.
• FechaCanjeo: Hace referencia a la fecha del canje.
• Total_Canjeado: Hace referencia a la cantidad de puntos canjeados.

Dominio #5: Información relacionada con las ciudades


• Tablas directamente relacionadas:
• Ciudad
• Tablas indirectamente relacionadas:
• Universidades
• Empresas
• Colecciones extraídas de la información de esas tablas en base al dominio:
• Ciudades

Colecciones creadas en base al quinto dominio:


Collection ciudad:
Para la creación de la colección Ciudad con la tabla que teníamos del modelo relacional decidimos
guiarnos de los atributos de la entidad Ciudad para colocarlos como campos de la colección Ciudad.
Los campos que consideramos son Nombre y País.

Campos:
• Nombre_Ciudad: Equivalente al NombreCiudad de la entidad Ciudad.
• País: Equivalente al País_Ciudad de la entidad Ciudad.

www.companywebsite.com
51

3.5. Schema Validation


A continuación, se muestra la validación de las colecciones que tenemos en nuestra base de datos no
relacional utilizando JSON Schema para cada uno de estos. Esto se realiza con el fin de que
MongoDB genere errores y/o rechace documentos que no cumplan con las reglas de validación al
ingresar datos a nuestra base de datos. Además, debemos tener en cuenta que cuando se le agrega
validación a una colección, los datos existentes no serán validados hasta que se realice una
actualización o modificación de estos. En nuestro caso las colecciones fueron creadas junto con la
validación, es decir los documentos ingresados ya están validados:

Colección profesores:

db.createCollection("profesores", {
validator: {
$jsonSchema: {
bsonType: "object",
required: [ "UserName", "Clave_Acceso", "Nombres", "Apellidos", "Telefono", "Correo",
"Universidad_ID", "salones_de_clase" ],
properties: {
UserName: {
bsonType: "string"
},
Clave_Acceso: {
bsonType: "string"
},
Nombres: {
bsonType: "string"
},
Apellidos: {
bsonType: "string"
},
Telefono: {
bsonType: "string",
},
Correo: {
bsonType: "string"
},
Universidad_ID: {
bsonType: "objectId"
},
salones_de_clase: {
bsonType: "array",
}
}
}
}
})

Colección universitarios

db.createCollection("universitarios", {
validator: {
$jsonSchema: {
bsonType: "object",

www.companywebsite.com
52

required: [ "UserName", "Clave_Acceso", "Nombres", "Apellidos", "Telefono", "Correo", "Facultad_ID",


"Universidad_ID", "Promedio_Ponderado", "Total_Puntos" ],
properties: {
UserName: {
bsonType: "string"
},
Clave_Acceso: {
bsonType: "string"
},
Nombres: {
bsonType: "string"
},
Apellidos: {
bsonType: "string"
},
Telefono: {
bsonType: "string"
},
Correo: {
bsonType: "string"
},
Facultad_ID: {
bsonType: "objectId"
},
Universidad_ID: {
bsonType: "objectId"
},
Promedio_Ponderado: {
bsonType: "number"
},
Total_Puntos: {
bsonType: "number"
}
}
}
}
})

Colección clases:

db.createCollection("clases",{
validator:{
$jsonSchema:{
bsonType:"object",
required:["Codigo_Clase","Nombre_Profesor","Nombre_Curso","Horas_dictadas",
"total_creditos", "Facultad_ID", "Universidad_ID"],
properties:{
Codigo_Clase:{
bsonType:"string",
},
Nombre_Profesor:{
bsonType:"string",
},
Nombre_Curso:{
bsonType:"string"
},
Horas_dictadas:{

www.companywebsite.com
53

bsonType:"string"
},
total_creditos:{
bsonType:"number"
},
Facultad_ID:{
bsonType:"objectId"
},
Universidad_ID:{
bsonType:"objectId",
}
}}
}
})

Colección ciudades

db.createCollection("ciudad", {
validator: {
$jsonSchema: {
bsonType: "object",
required: [ "Nombre_Ciudad", "Pais" ],
properties: {
Nombre_Ciudad: {
bsonType: "string"
},
Pais: {
bsonType: "string"
}
}
}
}
})

Colección facultades:
db.createCollection("facultades",{
validator:{
$jsonSchema:{
bsonType:"object",
required:["Nombre_Facultad","Nombre_Universidad"],
properties:{
Nombre_Facultad:{
bsonType:"string",
},
Nombre_Universidad:{
bsonType:"string",
}
}}
}
})

Universidades:

db.createCollection("universidades",{
validator:{
$jsonSchema:{
bsonType:"object",

www.companywebsite.com
54

required:["NombreUniversidad","Facultades","Ciudad_ID"],
properties:{
NombreUniversidad:{
bsonType:"string",
},
Facultades:{
bsonType: "array",
uniqueItems: true,
},
Ciudad_ID:{
bsonType:"objectId"
}
}}
}
})

Colección recompensas:

db.createCollection("recompensas", {
validator: {
$jsonSchema:{
bsonType:"object",
required:["FechaRecompensa","Puntos", "Estudiante", "Clase"],
properties:{
FechaRecompensa:{
bsonType:"string",
},
Puntos:{
bsonType:"number",
},
Estudiante:{
bsonType: "object",
properties: {
"usuario_estudiante": {
bsonType: "string"
},
"universitario_id": {
bsonType: "objectId"
}
}
},
Clase:{
bsonType: "object",
properties: {
"Nombre_Curso": {
bsonType: "string"
},
clase_id: {
bsonType: "objectId"
}
}
}
}
}
}
}
)

www.companywebsite.com
55

Colección empresas

db.createCollection("empresas",{
validator:{
$jsonSchema:{
bsonType:"object",
required:["Nombre_Empresa", "Ciudad_ID", "RUC"],
properties:{
Nombre_Empresa:{
bsonType:"string"
},
Ciudad_ID:{
bsonType:"objectId"
},
RUC:{
bsonType:"string"
}
}
}
}
})

Colección canjeo puntos

db.createCollection("canjeo_puntos", {
validator: {
$jsonSchema:{
bsonType:"object",
required:["estudiante","empresa", "FechaCanjeo", "Total_Canjeado"],
properties:{

estudiante:{
bsonType: "object",
properties: {
"Nombre_Estudiante": {
bsonType: "string"
},
"EstudianteID": {
bsonType: "objectId"
}
}
},

empresa:{
bsonType: "object",
properties: {
"Nombre_Empresa": {
bsonType: "string"
},
"EmpresaID": {
bsonType: "objectId"
}
}
},

FechaCanjeo: {

www.companywebsite.com
56

bsonType: "string"
},

Total_Canjeado: {
bsonType: "number"
}

}
}
}
}
)

3.6 Data Model Patterns


Elegir correctamente los patrones de modelamiento de datos es un paso crucial para crear
una aplicación exitosa. Existen dos tipos de patrones de modelamiento muy comunes en
cuanto al uso de bases de datos no relacionales, que son: embed model pattern y subset
model pattern. En el presente proyecto hemos utilizado ambos patrones de modelamiento de
datos, debido a que en ciertas oportunidades es más oportuno embeber los datos para
mejorar la capacidad de lectura de la aplicación, pero en otros es mejor referenciar los datos
de otras tablas.

Colección universitarios:
db.universitarios.insert({
UserName: "pepito12345",
Clave_Acceso: "pepito6789",
Nombres: "José Luis",
Apellidos: "Perales Perales",
Telefono: "+51 949161510",
Correo: "joseluisperales@gmail.com",
Facultad_ID: ObjectId("62d01d17cdd1b7c8a5f945c9"),
Universidad_ID: ObjectId("62d01d17cdd1b7c8a5f945d9"),
Promedio_Ponderado: 18.59,
Total_Puntos: 3590,
})

Para la colección universitarios se utilizó el subset model pattern para referenciar los valores
“facultad_id” y “universidad_id”. Esto debido a que mejoraría la velocidad de lectura de base de datos
y los datos de universidad y facultad no serán solicitados con mucha frecuencia en relación al
universitario, por lo que es más conveniente referenciarlos.

Colección profesores:
db.profesores.insert({
UserName: "pepito12345",
Clave_Acceso: "pepito6789",
Nombres: "José Luis",
Apellidos: "Perales Perales",
Telefono: "+51 949161510",
Correo: "joseluisperales@gmail.com",
Universidad_ID: ObjectId("62d01d17cdd1b7c8a5f945b9"),
salones_de_clase: [
"SI400-2202-CC42", "SI400-2202-SI41"

www.companywebsite.com
57

]
})

Para la colección profesores se utilizó el subset model pattern para referenciar los valores
“universidad_id” y “salones_de_clase”. Esto debido a que mejoraría la velocidad de lectura de base
de datos y los datos de universidad y salones de clase no serán solicitados con mucha frecuencia en
relación al profesor, por lo que es más conveniente referenciarlos.

Colección clases
db.clases.insert({
Codigo_Clase: "SI400-2202-SI41",
Nombre_Profesor: "pepito12345",
Nombre_Curso: "Diseño de base de datos",
Horas_dictadas: "2h síncrono / 4h asíncrono",
total_creditos: 4,
Facultad_ID: ObjectId("62d01d17cdd1b7c8a5f945b9"),
Universidad_ID: ObjectId("62d01d17cdd1b7c8a5f945b9"),
})

Para la colección clases se utilizó el subset model pattern para referenciar los valores “facultad_id” y
“universidad_id”. Esto debido a que mejoraría la velocidad de lectura de base de datos y los datos de
universidad y facultad no serán solicitados con mucha frecuencia en relación a las clase, por lo que
es más conveniente referenciarlos.

Colección universidades
db.universidades.insert({
NombreUniversidad: "Universidad Peruana de Ciencias aplicadas",
Facultades: [
ObjectId("62d01d17cdd1b7c8a5f945d9"),
ObjectId("62d01d17cdd1b7c8a5f945d8")
],
Ciudad_ID: ObjectId("62d01d17cdd1b7c8a5f945d9"),

})

Para la colección universidades se utilizó el subset model pattern para referenciar los valores
“Facultades” y “ciudad”. Esto debido a que mejoraría la velocidad de lectura de base de datos y los
datos de las facultades y ciudad no serán solicitados con mucha frecuencia en relación a las clase,
por lo que es más conveniente referenciarlos.

Colección recompensas
db.recompensas.insert({
FechaRecompensa: "10 de octubre de 2022",
Puntos: 300,
Estudiante: {
usuario_estudiante: "pepito1244",
universitario_id: ObjectId("636be1e2b1492f7f66cfc123"),
},
Clase: {
clase_id: ObjectId("636be1e2b1492f7f66cfc123"),
Nombre_Curso: "Diseño de bases de datos"
},
})

www.companywebsite.com
58

Para la colección recompensas, los campos “usuario_estudiante” y “clase_id” se embebieron


dentro de los sub-documentos Estudiante y Clase respectivamente. Planteamos el modelado
de esta forma debido a que son datos que la colección recompensa usará con frecuencia.
Sin embargo, en ambos casos se referenció el resto del documento por medio de su ID
debido a que el resto de datos no serán solicitados con frecuencia por la aplicación.

Colección Empresas
db.empresas.insert({
Nombre_Empresa: "Coca Cola SAC",
Ciudad_ID: ObjectId("62d01d17cdd1b7c8a5f945d9"),
RUC: "10603645948"
})

Para la colección empresas hemos usado el subset model pattern para almacenar los datos
sobre la ciudad. Esto debido a que los datos sobre la ciudad de la empresa serán solicitados
con poca frecuencia y al embeber los datos estaríamos empeorando la capacidad de lectura
de la aplicación, por lo que vimos pertinente referenciar estos datos.

Colección canjeo_puntos
db.canjeo_puntos.insert({
estudiante: {
Nombre_Estudiante: "Nicolás Contreras",
EstudianteID: ObjectId("62d01d17cdd1b7c8a5f945d9")
},
empresa: {
Nombre_Empresa: "Coca Cola SAC",
EmpresaID: ObjectId("62d01d17cdd1b7c8a5f945d9")
},
FechaCanjeo: "10 de noviembre de 2003",
Total_Canjeado: 10
})

Para la colección canjeo_puntos, los campos “Nombre_Estudiante” y “Nombre_Empresa” se


embebieron dentro de los sub-documentos Estudiante y Nombre_Empresa respectivamente.
Planteamos el modelado de esta forma debido a que son datos que la colección canjeo_puntos
usará con frecuencia. Sin embargo, en ambos casos se referenció el resto del documento por
medio de su ID debido a que el resto de datos no serán solicitados con frecuencia por la
aplicación.

www.companywebsite.com
59

CAPÍTULO IV: DATABASE IMPLEMENTATION

4.1 Relational Database Management System


De acuerdo con ComputerWeekly, un sistema de gestión de bases de datos relacional es una
colección de programas y capacidades que permiten a un equipo de IT crear, actualizar,
administrar e interactuar con una base de datos relacional. El principal beneficio que un
RDBMS ofrece a nuestro negocio es el acceso a operaciones con la información almacenada
en la base de datos.

Nuestro sistema gestor de base de datos cumplirá con el modelamiento relacional. De acuerdo
con Oracle, en una base de datos relacional, las estructuras de datos lógicas (las tablas de
datos, las vistas y los índices) están separadas de las estructuras de almacenamiento físicas.
Gracias a esta separación, nosotros como administradores de las bases de datos podremos
gestionar el almacenamiento físico de datos sin que eso influya en el acceso a esos datos
como estructura lógica.

Lenguajes en un sistema gestor de bases de datos relacional


Por medio de un sistema gestor de bases de datos seremos capaces de administrar nuestra
base de datos. Esto se realiza por 4 lenguajes principales, que son DML (Data Manipulation
language), DDL (data definition language), DCL (data control language) y TCL (transaction
control language). Se dará una breve explicación de estos 4 lenguajes, con el propósito de
contextualizar lo que un RDBMS es capaz de hacer.

• El Data Manipulation Language (DML) se usa para la realización de las consultas y


manipulación de datos. Este lenguaje nos permite seleccionar, insertar, actualizar y
eliminar datos por medio de nuestro RDBMS.
• Data Definition Language (DDL) principalmente se utiliza para definir las estructuras y
funciones en la realización de las consultas. Este lenguaje nos permite crear, alterar y
eliminar componentes de nuestra base de datos relacional.
• El Data Control Language (DCL), está compuesto por sentencias que dan o quitan
acceso a los administradores de la base de datos.
• El Transaction Control Language (TCL), tiene como propósito realizar las
transacciones de datos en una base de datos relacional.

Teniendo en qué es un RDBMS y sus principales funcionalidades en una base de datos, las
opciones más populares actualmente son las siguientes:

www.companywebsite.com
60

Nuestra elección como RDBMS: SQL Server


SQL server es un sistema de bases de datos elaborado y mantenido por Microsoft. Es uno de
los RDBMS más populares a nivel mundial y cuenta con alta confiabilidad en la comunidad
de programadores de bases de datos. SQL server se caracteriza por su usabilidad en los
entornos corporativos.

¿Para qué sirve el SQL Server?


El SQL Server sirve para almacenar la información deseada en base de datos relacionales,
para así poder administrar los datos sin ninguna complicación. Por ello, para las personas,
emplear estas herramientas es esencial por las facilidades y las utilidades con las que
cuenta. Por ejemplo, si contamos con listado de clientes o una selección de contenidos
multimedia disponible el SQL Server ayuda a gestionarlo completamente todo. Es muy bueno
para el buen funcionamiento de una web o de cualquier aplicación.

Principalmente está compuesto por un motor relacional que está encargado de los
procedimientos de comandos, tablas, búferes de datos y los almacenamientos de archivos.
Los niveles secundarios están destinados a la gestión de la memoria, la planificación y la
gestión de las interacciones de solicitud y respuestas con los servidores de base de datos.

¿Por qué optamos por usar el SQL Server?


Las razones por las cuales optamos por utilizar el SQL Server nos pareció más fácil de usar
porque es capaz de administrar una cantidad mucho mayor de información que una hoja de
cálculo y, también es ideal para almacenar cualquier información de nuestro startup.

www.companywebsite.com
61

• Aumenta la seguridad de los datos: Principalmente su propósito SQL Server es


garantizar la seguridad de su base de datos ya que cuenta con una estructura
de tabla que conecta las funciones y los elementos de los datos, lo que nos
ayuda a proteger la información del cliente.
• Facilidad de configuración: A diferencia de otros programas, la instalación y
configuración de SQL Server son más sencillas. No es necesario tener muchas
herramientas específicas para instalar el software y las actualizaciones son
completamente automáticas.
• Almacenamiento de datos optimizado: No es tan necesario que tenga otro
almacenamiento de datos de la misma base de datos si está utilizando un
dispositivo diferente. Los cuales permiten administrar los datos de una manera
más fácil y eficiente.
• Soporte de recuperación de datos: SQL Server elimina los riesgos de perder
datos al tener funciones para la recuperación y restauración de datos. También,
protege los datos en el almacenamiento caché y copia seguridad, para asi
poder evitar cualquier pérdida de las informaciones.

SQL Server recurre al cálculo relacional para obtener la información que buscas y poder
modificar la arquitectura del sistema. El SQL se creó originalmente como un motor de
consultas y ahora tiene otros usos:

• Se utiliza para crear nuevas bases de datos y tablas.


• Puede manejar más información que una hoja de cálculo.
• Actualiza la base de datos, incorporando nuevas preguntas.
• Se puede eliminar o reparar de forma permanente.
• Controla el acceso a la base de datos otorgando permiso.
• Le permite crear vistas seleccionando campos de una o más tablas de
base de datos.
• Le permite crear procedimientos almacenados.
• Responde a cualquier pregunta sobre los datos almacenados.

Otras opciones que se pudieron considerar como sistema gestor de bases de datos son las
siguientes:

MySQL
Este RDBMS es el segundo más popular en la lista de Statista. Los principales beneficios de
MySQL son los siguientes:

• Compatibilidad => MySQL es compatible con todos los sistemas operativos (Mac,
Windows y Linux). Además, al ser open-source, prácticamente su acceso es
universal.
• Velocidad de aprendizaje => MySQL tiene una curva de aprendizaje muy óptima
para quienes son nuevos en el uso de RDBMS.
• Disponibilidad => MySQL está disponible a nivel mundial y cuenta con back-up en
caso la base de datos falle.

www.companywebsite.com
62

• Escalabilidad => MySQL es un sistema gestor de bases de datos amigable para la


escalabilidad de datos y usuarios. Esta es una de las razones principales por las
que grandes corporaciones la utilizan.
• Seguridad => MySQL es la base de datos más protegida contra ciberataques y
ofrece encriptado por medio de SSL (Secure sockets layer).

Oracle
Oracle Corporation es una de las mayores compañías de software del mundo y es el más
completo en la base de datos. Las principales características de Oracle son los siguientes:

• Control de acceso: Oracle utiliza las tecnologías avanzadas que controla quien
accede a los datos.
• Modelo relacional: Oracle tiene un modelo relacional en el que los usuarios
visualizan los datos en las tablas con el formato filas y columnas, realizando más
fácil la manipulación y modificación.
• Protección de datos: Oracle tiene la seguridad completa en el entorno de
producción de pruebas y gestión de copias de seguridad.
• Alta disponibilidad: Oracle tiene una alta disponibilidad en la protección y alto
rendimiento que le permite implementar en la entidad los planes de HA.
• Gestión de usuarios: Oracle ligereza en los trámites. reducción de costes y
seguridad en el control de las personas que acceden a las aplicaciones y datos.

www.companywebsite.com
63

4.2. Physical Data Model

Link para mejor visualización:


https://lucid.app/lucidchart/e5b80652-1426-4355-b455-1915f6bf7947/edit?view_items=KAK19KqDyyQ-
&invitationId=inv_d8c9a8f3-4c46-40a4-af7b-8d801f5da92a

www.companywebsite.com
64

Script:
create database Pivy_Test_DB

use Pivy_Test_DB

CREATE TABLE Usuario (


UserID int primary key not null,
UserName varchar(50),
ClaveAcceso varchar(20),
Nombres varchar(30),
Apellidos varchar(50),
telefono varchar(13),
Correo varchar(40),
);

Create table Ciudad(


Ciudad_ID int primary key not null,
NombreCiudad varchar(40),
Pais_Ciudad varchar(20)
);

Create table Universidad(


Universidad_ID int primary key not null,
Ciudad_ID int foreign key references Ciudad(Ciudad_ID),
Nombre_Universidad varchar(50)
);

Create table Facultad(


Facultad_ID int primary key not null,
Universidad_ID int foreign key references Universidad(Universidad_ID),
Nombre_Facultad varchar(30)
);

Create table DetalleUniversitario(


DetalleID int primary key not null,
Facultad_ID int foreign key references Facultad(Facultad_ID),
Promedio_Ponderado float,
Total_Puntos int,
);

Create table Universitario(


Usuario_ID int primary key not null foreign key references Usuario(UserID),
Detalle_Universitario int foreign key references DetalleUniversitario(DetalleID),
);

Create table Profesor(


Usuario_ID int primary key not null foreign key references Usuario(UserID),
Universidad_ID int foreign key references Universidad(Universidad_ID),
);

Create table Curso(


Curso_ID int primary key not null,
www.companywebsite.com
65

FacultadID int foreign key references Facultad(Facultad_ID),


Nombre_Curso varchar(40),
Horas_Dictadas varchar(30),
Total_Creditos tinyint
);

Create table Salon(


Codigo_Clase int primary key not null,
Profesor_ID int foreign key references Profesor(Usuario_ID),
Curso_ID int foreign key references Curso(Curso_ID)
);

Create table Empresa(


Empresa_ID int primary key not null,
Ciudad_ID int foreign key references Ciudad(Ciudad_ID),
Nombre_Empresa varchar(40),
RUC char(11)
);

Create table Canjeo_Puntos(


Codigo_Canjeo int not null primary key,
Estudiante_ID int foreign key references Universitario(Usuario_ID),
Empresa_ID int foreign key references Empresa(Empresa_ID),
Fecha_Canjeo date,
TotalPuntosCanjeado int
);

create table Recompensa_Obtenida(


Codigo_Recompensa int not null primary key,
Estudiante_ID int foreign key references Universitario(Usuario_ID),
Curso_ID int foreign key references Curso(Curso_ID),
Fecha_Recompensa date,
Cant_Puntos int
);

4.2. NonRelational Database

Según Ayudaley, un base de datos no relacional es un sistema de almacenamiento de


información que se caracteriza por no usar el lenguaje SQL para las consultas. Por eso se le
llama NoSQL. Así mismo, en las características principales no trabajan con las estructuras
definidas, es decir, los datos no se almacenan en tablas y la información tampoco se
organiza en registros. También, tienen escalabilidad y para la gestión de grandes volúmenes
de datos.

La base de datos no relacionales es más actuales que las relacionales. Entonces, su


desarrollo se basa en la necesidad de crear sistemas de gestión capaces de trabajar con
datos no estructurados o semiestructurados.

Características de un base de datos no relacional


www.companywebsite.com
66

Sus principales características de un base de datos no relacional son los siguientes:

• La información no se almacena en las tablas sino a través de documentos.


• Las bases de datos son muy útiles para organizar y gestionar informaciones no
estructuradas.
• No se utiliza el lenguaje SQL para consultas, pero lo pueden usar como una
herramienta de apoyo.
• A diferencia de los bases de datos no relacionales, no se garantizan los cumplimientos
de las cualidades ACID, lo cual es atomicidad, consistencia, integridad y durabilidad.
• La base de datos no relacional tiene un alto grado de escalabilidad y están diseñadas
para soportar grandes volúmenes de datos.

Tipos de base de datos no relacionales


• Clave-valor: Se almacena la información en base a pares de clave valor. En
otras palabras, cada clave sirve como un identificador único y a cada uno de
ellos se le aplica un valor.
• Documentos: La información se representa como documentos JSON. Su
ventaja es que los documentos son flexibles, semiestructurados y jerárquicos,
lo cual facilita a los desarrolladores las tareas de almacenamiento, gestión y
consultas de datos.
• Gráficos: Son para crear relaciones y navegar por ellas. Las entidades de los
datos se almacenan mediante nodos y los bordes son los que crean las
relaciones entre entidades.
• En memoria: Son diseñados para ofrecer respuestas en milisegundos.

Nuestra elección como NoSQL: MongoDB


Cuando se trata de bases de datos, tendemos a pensar en NoSQL y el modelo de base de
datos relacional, pero existen alternativas como el modelo no relacional del que MongoDB es
quizás el ejemplo más obvio.

MongoDB es un sistema de base de datos NoSQL orientado a documentos de códigos


abiertos y escritos en C++, que en lugar de mantener los datos en tablas lo hace en
estructuras de datos BSON que es similar a JSON. Las bases de datos de MongoDB
contienen una o más colecciones de datos y administran diversos documentos con varios
campos de datos. Al ser un código abierto, sus binarios están disponibles por los sistemas
operativos como el Windows y Linux. También, es usado en las múltiples implementaciones
de las empresas como MTV Network, Foursquare y Craigslist.

Comparación de dos modelos de base de datos


A diferencia de MySQL, MongoDB es un gestor de bases de datos orientado a documentos
que tiene un enfoque completamente diferente en cuanto al almacenamiento de datos. Sin
embargo, sus estructuras básicas muestran similitudes, tales como:

• En lugar de las tablas, los datos se almacenan en carpetas(collections)


• Los documentos en formato BSON sustituyen a las líneas, definiendo campos
en las columnas de las tablas SQL.

www.companywebsite.com
67

• Un documento MongoDB es una colección de pares clave, como las filas en las
tablas de MySQL.

Otra diferencia fundamental que resulta de la comparativa entre el MongoDB y el MySQL es


el enfoque dado a la recuperación de los datos. Como la base de datos NoSQL, el MongoDB
no utiliza SQL como lenguaje de consulta, disponiendo de su propio idioma para el
procesamiento de los datos. Por ello, la base de datos utiliza los métodos específicos del
correspondiente lenguaje de programación del cliente.

¿Para qué sirve el MongoDB?


El MongoDB sirve para la validación de los documentos, motores de almacenamiento
integrado y se puede recuperar en un menor tiempo los documentos. Por ejemplo, para la
creación de las tiendas online, manejo de estadísticas en tiempo real y la administración de
contenidos en sistemas con grandes cantidades de documentos.

¿Por qué optamos por usar el MongoDB?


La principal razón por la cual optamos por usar el mongodb es porque reside una velocidad y
su capacidad para añadir en una misma colección registros con diferentes campos de una
manera mucho más flexible para nuestro startup.

• Escalabilidad: Es la necesidad de que la base de datos se vaya adaptando y


aumentando su tamaño en función de la información que guarde.
• Flexibilidad: Se conoce como un base de datos que no sigue ningún esquema.
Lo cual, controla cómo se almacena la información y el tipo de datos.
• Alta disponibilidad: Tiene un gran volumen de acceso. Cuando iniciamos un
proyecto se tendrán pocos accesos de aplicaciones y de usuarios, pero al pasar
del tiempo, se aumentaran y eso puede impactar en el rendimiento de la base
de datos.
• Transacciones: Aunque la base de datos NoSQL, no ofrecen
transacciones como lo hacen las bases de datos relacionales, desde la versión
4.2, MongoDB sí las soporta, así que una de las grandes desventajas que tenía
en el pasado, queda resuelta.
• Proyecto Big Data: MongoDB se integra bien en este tipo de proyectos, ya que
otra característica de las bases de datos NoSQL es que están diseñadas para
proyectos de datos estructurados completamente diferentes o desconocidos.
Las grandes empresas suelen procesar este tipo de información, por lo que es
un gran complemento.
• Documento oficial muy buena: Durante el desarrollo de un proyecto se podrá
usar como un gran recurso para ir mejorando las operaciones que se deben
realizar.
• Es código abierto.

www.companywebsite.com
68

4.4. Queries

4.4.1. Relational Database Queries

Queries básicos
#1. Listar información de los cursos cuya cantidad de créditos académicos es mayor a 3 en
orden ascendente.
Este query nos sirve para conocer información detallada sobre todos los cursos cuya
cantidad de créditos es mayor a 3. Entre esta información elegimos listar el nombre del
curso, las horas dictadas y el total de créditos y ordenarlo de forma ascendente según la
cantidad de créditos:

select Nombre_Curso, Horas_Dictadas, Total_Creditos from Curso where Total_Creditos > 3


order by 3 asc

#2. Listar información sobre los canjes de puntos cuya cantidad canjeada sea menor a 2000
Esta consulta es de utilidad para conocer los canjes de puntos con un índice de canje menor
a 2000.

select * from Canjeo_Puntos where TotalPuntosCanjeado < 2000

#3. Listar todas las ciudades del Perú registradas en el sistema


Este query sirve para conocer las ciudades que pertenecen al Perú registradas en nuestra
base de datos. Se puede aplicar un query similar para otros países como Colombia o Chile.

select * from Ciudad where Pais_Ciudad = 'Peru'

#4. Listar todos los usuarios que no han registrado su número telefónico
En nuestro log-in el registro de número telefónico será opcional, por lo que consideramos
pertinente conocer información sobre los usuarios que no han registrado su número
telefónico:

select * from Usuario where telefono Is null

#5. Listar las recompensas obtenidas ordenadas de forma descendente según la cantidad de
puntos obtenidos
Este query nos permitirá visualizar la información de las recompensas priorizando en el
orden de visualizar a las que tienen mayor cantidad de puntaje.

select * from Recompensa_Obtenida order by Cant_Puntos desc

Queries Complejos

www.companywebsite.com
69

#1 Obtener los datos de contacto de los estudiantes que han canjeado puntos de a partir de
una determinada cantidad.
Este procedimiento nos permite hallar los datos de los estudiantes que han canjeado puntos
de a partir de una determinada cantidad.

create procedure EstudiantesSegunCanjeoDePuntos


@puntos_minimos int
as select Correo, telefono, SUM(Cant_Puntos) TotalPuntosCanjeados from
Recompensa_Obtenida Rec
join Universitario u on u.Usuario_ID = Rec.Estudiante_ID
join Usuario us on u.Usuario_ID = us.UserID
group by Correo, telefono
having SUM(Cant_Puntos) >= @puntos_minimos

Ejecución del procedimiento con la variable igual a 300:


exec EstudiantesSegunCanjeoDePuntos 300

#2 Obtener la media del ponderado promedio de cada facultad en cada universidad.


Esta sentencia SQL nos permite hallar el máximo promedio ponderado de cada facultad en
cada universidad.

create procedure Prom_ponderado_General_Por_Facultad as


select avg(Promedio_Ponderado) Promedio_Ponderado_General, Nombre_Facultad,
Nombre_Universidad
from DetalleUniversitario det
join Facultad fac on fac.Facultad_ID = det.Facultad_ID
join Universidad u on u.Universidad_ID = fac.Universidad_ID
group by Nombre_Facultad, Nombre_Universidad

Ejecución del procedimiento:


exec Prom_ponderado_General_Por_Facultad

#3 Encontrar los nombres y apellidos de todos los universitarios pertenecientes a una


determinada facultad en una determinada universidad:
Esta sentencia nos permite encontrar información sobre los estudiantes que pertenecen a
una determinada facultad en una determinada universidad. Si bien es cierto, la búsqueda
pudo haber realizado también por medio del ID de la facultad, consideramos más pertinente
hacerlo por medio del nombre de la facultad (para identificar la facultad) y el nombre de la
universidad, debido a que los nombres de una facultad se pueden repetir en muchas
universidades (ejemplo: La facultad de ingeniería está presente en la Universidad de Lima y
la Universidad del Pacífico).

create procedure EncontrarEstudiantesPorFacultad


@Nombre_Universidad varchar(50),
@Nombre_Facultad varchar(30) as
select Nombres, Apellidos from Usuario us
join Universitario Uni on Uni.Usuario_ID = us.UserID
join DetalleUniversitario DU on DU.DetalleID = Uni.Detalle_Universitario
join Facultad Fac on DU.Facultad_ID = Fac.Facultad_ID
www.companywebsite.com
70

join Universidad u on Fac.Universidad_ID = u.Universidad_ID


where u.Nombre_Universidad = @Nombre_Universidad and Fac.Nombre_Facultad =
@Nombre_Facultad

Ejecución del procedimiento con las variables igual a UPC y Facultad de ingeniería:
exec EncontrarEstudiantesPorFacultad 'UPC', 'ingenieria'

#4 Encontrar los nombres y apellidos de todos los profesores que dictan un determinado
curso en una determinada universidad:
Esta sentencia nos permite hallar datos sobre los profesores que dictan un determinado
curso en una determinada universidad. Por medio de esta sentencia el administrador puede
buscar según el nombre del curso y el nombre de la universidad.

create procedure ObtenerProfesoresPorCurso


@Nombre_Curso nvarchar(40),
@Nombre_Universidad nvarchar(50)
as select Nombres, Apellidos from Usuario us
join Profesor profe on profe.Usuario_ID = us.UserID
join Universidad uni on profe.Universidad_ID = uni.Universidad_ID
join Salon sl on sl.Profesor_ID = profe.Usuario_ID
join Curso cr on cr.Curso_ID = sl.Curso_ID
where cr.Nombre_Curso = @Nombre_Curso and uni.Nombre_Universidad =
@Nombre_Universidad

Ejecución del procedimiento con las variables igual a Diseño de bases de datos y UPC:
exec ObtenerProfesPorCurso 'Diseño de base de datos', 'UPC'

#5 Contar la cantidad de estudiantes matriculados en una facultad


Este query nos permite conocer el número de estudiantes matriculados en una facultad de
una determinada universidad.

create procedure Obtener_Cant_Estudiantes_Por_Facultad


as select Count(DetalleID) Cant_Estudiantes, Nombre_Facultad, Nombre_Universidad
from Facultad fac
join DetalleUniversitario det on det.Facultad_ID = fac.Facultad_ID
join Universidad uni on uni.Universidad_ID = fac.Universidad_ID
group by Nombre_Facultad, Nombre_Universidad

Ejecución del procedimiento:


exec Obtener_Cant_Estudiantes_Por_Facultad

#6 Seleccionar los datos de los estudiantes de una universidad que tengan cierta cantidad
máxima de puntos acumulados.
Este query nos permite hallar los datos de los estudiantes que tienen un máximo acumulado
de puntos en cierta universidad. Por medio de este, el administrador puede organizar ciertas
estrategias para ofrecerles promociones en pro de estimular su uso de la plataforma.

create procedure PuntajeAcumuladoDesdeUnMinimoPorEstudiantePorUniversidad

www.companywebsite.com
71

@uni varchar(50),
@puntaje int as
select UserID, Nombres, Apellidos, Nombre_Facultad, Promedio_Ponderado, Total_Puntos
from Usuario us
join Universitario uni on us.UserID = uni.Usuario_ID
join DetalleUniversitario det on uni.Detalle_Universitario = det.DetalleID
join Facultad fac on det.Facultad_ID = fac.Facultad_ID
join Universidad u on fac.Universidad_ID = u.Universidad_ID
where (Total_Puntos <= @puntaje) and Nombre_Universidad = @uni

Ejecución del procedimiento con las variables igual a UPC y 1000:


exec PuntajeAcumuladoPorEstudiantePorUniversidad 'UPC', 1000

#7 Encontrar los estudiantes que no han canjeado puntos en una universidad


Este procedimiento nos permite hallar la cantidad de estudiantes en cada universidad que
todavía no han hecho un canjeo de puntos.

create procedure UniversitariosSinCanjeoPorUniversidad as


select count(Detalle_Universitario) CantUsuarios, Nombre_Universidad from Usuario us
join Universitario u on u.Usuario_ID = u.Usuario_ID
join DetalleUniversitario det on det.DetalleID = us.UserID
join Facultad fac on fac.Facultad_ID = det.Facultad_ID
join Universidad uni on uni.Universidad_ID = fac.Universidad_ID
where UserID not in (
select distinct Estudiante_ID from Canjeo_Puntos
) group by Nombre_Universidad

Ejecución del procedimiento:


exec UniversitariosSinCanjeoPorUniversidad

#8 Encontrar el nombre de usuario con mayor cantidad de puntos acumulados en


determinada universidad.
El presente procedimiento nos permite encontrar al alumno con mayor cantidad de puntos
acumulados. En base a esto, se tiene una referencia de los puntajes más altos en cada
universidad.

create procedure ObtenerMaximaCantidadDePuntosPorUniversidad


@uni varchar(50)
as
select UserName, Total_Puntos from Usuario us
join Universitario univ on univ.Usuario_ID = us.UserID
join DetalleUniversitario det on det.DetalleID = univ.Detalle_Universitario
join Facultad fac on fac.Facultad_ID = det.Facultad_ID
join Universidad u on u.Universidad_ID = fac.Universidad_ID
where Total_Puntos = (
select maximo from (
select Max(Total_Puntos) maximo, Nombre_Universidad from DetalleUniversitario det
join Facultad fac on fac.Facultad_ID = det.Facultad_ID
join Universidad uni on uni.Universidad_ID = fac.Universidad_ID
group by Nombre_Universidad

www.companywebsite.com
72

) tablaAuxiliar
) and Nombre_Universidad = @uni

Ejecución del procedimiento con la variable igual a UPC


exec ObtenerMaximaCantidadDePuntosPorUniversidad 'UPC'

#9 Encontrar los correos electrónicos de los profesores que dictan un grupo de clases cuyo
acumulado de créditos llega a cierto valor.
Este query sirve para estimar la carga laboral como docente de cada profesor y en base de
ello analizar su comportamiento. Este query suma los créditos de todas las clases en las que
un profesor enseña de a partir de cierto valor y los ordena de forma descendente.

create procedure ProfesoresQueDictan_X_Cantidad_De_Creditos_En_Det_Universidad


@NomUniversidad varchar(50),
@NumCreditos int as
select SUM(Total_Creditos) TotalCreditosDictados, Correo from Salon sl
join Profesor pr on sl.Profesor_ID = pr.Usuario_ID
join Usuario us on pr.Usuario_ID = us.UserID
join Curso cr on cr.Curso_ID = sl.Curso_ID
join Universidad u on u.Universidad_ID = pr.Universidad_ID
where Nombre_Universidad = @NomUniversidad
group by Correo
having SUM(Total_Creditos) >= @NumCreditos
order by 1 desc

Ejecución del procedimiento con las variable igual a UPC y 10:


exec ProfesoresQueDictan_X_Cantidad_De_Creditos_En_Det_Universidad 'UPC', 10

#10 Encontrar la cantidad de empresas que han canjeado una cantidad determinada de
puntos por cada ciudad.
Este query nos permite conocer la cantidad de empresas en cada ciudad que han participado
en el canje de puntos desde un determinado valor en adelante.

create procedure ObtenerCantidadDeEmpresasQueHanCanejadoXPuntosPorCiudad


@cant_puntos int as
select count(Nombre_Empresa) Cant_De_Empresas, NombreCiudad from Ciudad c
join Empresa em on em.Ciudad_ID = c.Ciudad_ID
where Nombre_Empresa in (
select Nombre_Empresa from (
select SUM(TotalPuntosCanjeado) total, Nombre_Empresa from Empresa em
join Canjeo_Puntos rec on em.Empresa_ID = rec.Empresa_ID
group by Nombre_Empresa
having SUM(TotalPuntosCanjeado) > @cant_puntos) t
)
group by NombreCiudad
order by Cant_De_Empresas desc

Ejecución del procedimiento con la variable igual a 200:


exec ObtenerCantidadDeEmpresasQueHanCanejadoXPuntosPorCiudad 200
www.companywebsite.com
73

#11 Procedimiento almacenado que retorna la cantidad de salones de clase en los que dicta
cada profesor
Este query nos permite almacenar la cantidad de salones de clases que el profesor dicta en
diferentes salones.

create proc cantidad_salones_por_profesor


as
select u.UserID,u.Nombres,u.Apellidos,COUNT(s.Codigo_Clase)'Cantidad de cursos' from
Usuario u
join Profesor p on p.Usuario_ID=u.UserID
join Salon s on s.Profesor_ID=p.Usuario_ID
group by u.UserID,u.Nombres,u.Apellidos

Ejecución del procedimiento:


exec cantidad_salones_por_profesor

#12 Procedimiento que lista a los alumnos por mayor cantidad de puntos en forma
descendente según las cantidades de puntaje obtenido
Este query nos permite encontrar a los alumnos que obtuvieron la mayor cantidad de puntaje,
listandolos de menor a mayor según las cantidades de puntajes que obtengan gracias a sus
calificaciones.

create proc alumnospermayorcantpuntos


as
begin
select Usuario.Nombres, Usuario.Apellidos, Facultad.Nombre_Facultad,
DetalleUniversitario.Total_Puntos from Usuario
join Universitario on Usuario.UserID= Universitario.Usuario_ID
join DetalleUniversitario on DetalleUniversitario.DetalleID=Universitario.Detalle_Universitario
join Facultad on Facultad.Facultad_ID=DetalleUniversitario.Facultad_ID
order by DetalleUniversitario.Total_Puntos DESC
end

Ejecución del procedimiento:


exec alumnospermayorcantpuntos

#13 Procedimiento que lista a los profesores que trabajan en universidades de determinada
ciudad
Este query nos permite encontrar a los alumnos que obtuvieron la mayor cantidad de puntaje,
listandolos de menor a mayor según las cantidades de puntajes que obtengan gracias a sus
calificaciones.
create procedure profesoresPorCiudad
@ciudad varchar(40)
as
begin
select Profesor.Usuario_ID, Universidad.Nombre_Universidad, Ciudad.NombreCiudad from
Profesor
join Universidad on Universidad.Universidad_ID=Profesor.Universidad_ID
www.companywebsite.com
74

join Ciudad on Ciudad.Ciudad_ID=Universidad.Ciudad_ID


where Ciudad.NombreCiudad= @ciudad
end

Ejecución del procedimiento con la variable igual a Lima:


exec profesoresPorCiudad 'Lima'

4.4.2. Non-Relational Database Queries


//Mostrar sus datos personales del universitario y el nombre de la universidad que pertenezca
Esta consulta nos mostrará los datos personales del universitario y a la universidad que
pertenezca, además para empezar nos pedirá su universidad, ID de la universidad y de
acuerdo a ello aparecerán los datos que el usuario ha colocado al iniciar su experiencia con
nosotros en la aplicación PIVI.

db.profesores.aggregate([

{ $lookup: {
from: "universidades",
localField: "Universidad_ID",
foreignField: "_id",
as: "Data_universidad",
}
},
{
$match:{
"Data_universidad.NombreUniversidad": {$eq: "Universidad Peruana de Ciencias
aplicadas"},
}
},
{
$project: {
_id:0,
Nombres: 1,
Apellidos: 1,
Telefono: 1,
Correo: 1,
}
}
])

//Mostrar universitarios que pertenezcan a la facultad de ingeniería de la "Universidad


peruana de ciencias aplicadas"
Esta consulta es de utilidad para poder identificar a los universitarios que pertenezcan a la
facultad de Ingeniería de su casa de estudios, nos mostrará su información de datos
personales por ejemplo sus nombres, apellidos, teléfono y correo.

www.companywebsite.com
75

db.universitarios.aggregate([
{
$lookup: {
from: "facultades",
localField: "Facultad_ID",
foreignField: "_id",
as: "facultad"
}
},
{
$match: {
"facultad.Nombre_Facultad": {$eq: "Facultad de ingeniería"},
"facultad.Nombre_Universidad": {$eq: "Universidad peruana de ciencias aplicadas"}
}
},
{
$project: {
_id:0,
Nombres: 1,
Apellidos: 1,
Telefono: 1,
Correo: 1,
"facultad": 1,
}
}
])

//Mostrar la universidad de los universitarios y el total de puntos que ha obtenido


Esta consulta nos ayudará a poder encontrar a los universitarios que han obtenido los mejores
puntajes de cada universidad a la que pertenezcan, ello nos mostrará el ID de la universidad y
el total de puntos que ha obtenido.

db.universitarios.aggregate([
{
$lookup: {
from: "universidades",
localField: "Universidad_ID",
foreignField: "_id",
as: "Data_universidad",
}
},
{
$group: {
_id: "$Data_universidad.NombreUniversidad",
total: {
$sum: '$Total_Puntos'
}
}

www.companywebsite.com
76

}
])

//Mostrar el promedio ponderado de los universitarios y si tiene menos a 13 tendrá una


calificación de promedio bajo-regular o óptimo.
Esta consulta nos ayudará a identificar a los universitarios que tienen tanto altos como bajos
promedios al finalizar su curso, además que de acuerdo a su nota podrá obtener una
calificación de promedio bajo o regular esto va a depender si su promedio es mayor o igual 13
y si es menos obtendrá una calificación óptima.

db.universitarios.aggregate(
{
$project: {
_id: 0,
Nombres: 1,
Apellidos: 1,
EstadoAcademico: {$cond:
{if: {
$lte: ['Promedio_Ponderado', 13]},
then: 'Promedio bajo - regular',
else: 'Promedio óptimo'
}}
}
}
)

//Mostrará a los universitarios que obtengan más de 3000 puntos en la plataforma


Esta consulta nos ayudará a identificar a los alumnos más destacados y poder verificar que de
universidad son, para poder tener una noción de que nuestros cursos están sirviendo y que el
universitario siga mejorando en sus cursos.
db.universitarios.aggregate([
{
$lookup: {
from: "facultades",
localField: "Facultad_ID",
foreignField: "_id",
as: "Facultad"
}
},
{
$lookup: {
from: 'universidades',
localField: 'Universidad_ID',
foreignField: "_id",
as: "Universidad"
}
},
{
$match: {
Total_Puntos: {$gt: 3000},

www.companywebsite.com
77

"Facultad.Nombre_Facultad": "Facultad de ingeniería",


"Universidad.Nombre_Universidad" : "Universidad Peruana de Ciencias aplicadas"
}
},
{
$count: 'Alumnos con más de 3k puntos'
}
])

//Encontrar el total de puntos acumulados de cada universitario de la “Universidad Peruana


De Ciencias Aplicadas”
Esta consulta nos mostrará los puntos acumulados de los universitarios y de esta manera
podrá conocer si es que tiene acceso a las recompensas que podrá tener si es que ha cumplido
con los puntos que se pide para poder tener este beneficio.

db.recompensas.aggregate([

{
$group: {
_id: "$Data_Estudiante.UserName",
totalDePuntosAcumulados: {$sum: "$Puntos"}
}
},
{
$sort: {
"totalDePuntosAcumulados": -1
}
}

])

// Encontrar el total de puntos canjeados mayores a 5 de las empresas dentro de la base de


datos
Esta consulta nos mostrará a los estudiantes que han canjeado sus recompensas, mayor a 5
empresas y verificar que todos sus puntos han sido canjeados satisfactoriamente, esto por
ejemplo nos mostrará, el total de puntos canjeados, el nombres del estudiante y el nombre el
número de empresas que ha canjeado.
db.canjeo_puntos.aggregate([
{

$lookup: {
from: "empresas",
localField: "EstudianteID",
foreignField: "_id",
as: "dataEmpresas"
}
},

www.companywebsite.com
78

{
$match: {
"Total_Canjeado":{$gte: 5}
}
},

{
$project: {
_id:0,
"Estudiante":0,
"empresa":0
}
}
])

// Encontrar los documentos en la que es contenida la ciudad Lima y mostrar el identificador


al que pertenecen
Esta consulta nos ayudará a identificar a las empresas que tienen convenio con nuestra
aplicación para poder saber si los universitarios han logrado reclamar sus recompensas.

db.ciudades.aggregate([
{
$lookup: {
from: "empresas",
localField: "Ciudad_ID",
foreignField: "_id",
as: "Ciudades"
}
},
{
$match: {
"Nombre_Ciudad":{$eq:"Lima"}
}
},
{
$project: {
_id:1,
"Ciudades":0,
"Pais":0
}

}
])

www.companywebsite.com
79

//Encontrar las clases que pertenezcan a la facultad de ingeniería de la UPC y valgan más de
4 créditos
Esta consulta nos mostrará las clases que pertenezcan a la facultad de ingeniería de la UPC
las cuales valen las de 4 créditos, ello nos pedirá la faculta, el ID de la facultad y luego de
colocar los datos nos mostrará el código de la clase, nombre de la clase y el total de créditos
en base de ellos vamos a poder ver las clases que tengan un peso mayor a 4 créditos.

//ENCONTRAR LAS CLASES QUE PERTENECEN A LA FACULTAD DE INGENIERÍA DE


LA UPC Y VALGAN MÁS DE 4 CRÉDITOS
db.clases.aggregate([
{
$lookup: {
from: "facultades",
localField: "Facultad_ID",
foreignField: "_id",
as: "facultad_doc"
}
},

{$match : {
"facultad_doc.Nombre_Facultad" : {$eq : "Facultad de ingeniería"} ,
"facultad_doc.Nombre_Universidad" : {$eq : "Universidad Peruana de Ciencias
aplicadas"},
"total_creditos": {$gte : 4}
}
},

{
$project: {
Codigo_Clase: 1,
Nombre_Curso: 1,
total_creditos: 1,
facultad: "$facultad_doc.Nombre_Facultad",
universidad: "$facultad_doc.Nombre_Universidad"
}
}
])

//Mostrar las recompensas que valgan más de 200 puntos y pertenezcan a la clase de diseño
de base de datos
Esta consulta nos mostrará y ayudará a encontrar las recompensas que valgan más de 200
puntos y pertenezcan a la clase de diseño de base de datos, además que primero nos pedirá
su ID de la clase para poder verificar que valen 200 puntos y nos mostrará el nombre del
curso.

www.companywebsite.com
80

//encontrar las recompensas que valgan más de 200 puntos y pertenezcan a la clase de
diseño de base datos
db.recompensas.aggregate([
{
$lookup: {
from: "clases",
localField: "Clase.clase_id",
foreignField: "_id",
as: "clase_doc"
}
},

{
$match:{
"Puntos" : {$gte : 200},
"clase_doc.Nombre_Curso" : {$eq : "Diseño de base de datos"}
}
},

{
$project: {
Puntos: 1,
Nombre_Curso: "$clase_doc.Nombre_Curso"
}
}

])

www.companywebsite.com
81

CONCLUSIONES
Se concluye que realizar un correcto análisis de mercado es de mucha importancia
para reconocer las debilidades y fortalezas de nuestros competidores directos y
así, lograr buenas estratégicas corporativas.

Las entrevistas fueron pieza clave para poder obtener información de nuestro
segmento objetivo para así poder identificar mediante preguntas claves las
necesidades, objetivos, pensamientos, conocimientos y más cualidades para
poder entender su forma de pensar, actuar y vivir.

En conclusión, las entrevistas a los estudiantes nos ayudaron a comprender un


poco más sobre lo importante que puede ser nuestro proyecto para los jóvenes de
escasos recursos del país y además de cómo podría ayudarles a motivarse para
poder concluir sus estudios de la manera más satisfactoria.

Realizar el análisis del todo Logical Data Mode pasando por los pasos previos de
declaración de los Entities, sus atributos y diseñar el modelo de conexiones, nos
ayudó a entender mejor cómo se desarrollará la Base de Datos de nuestro
proyecto para poner

A manera de conclusión, las entrevistas fueron pieza clave para poder obtener
información de nuestro segmento objetivo para así poder identificar mediante
preguntas claves las necesidades, objetivos, pensamientos, conocimientos y más
cualidades para poder entender su forma de pensar, actuar y vivir.

Se puede concluir que Microsoft SQL server es la herramienta más apropiada para
este tipo de trabajo.

Con SQL Server Nos permite ingresar comandos o sentencias de tal manera que
podemos administrar o crear un base de datos. Esta variedad de comandos nos
permite generar mantenimientos a las tablas, modificaciones, entre otros.
También nos permite recuperar datos o importarlos de varias maneras.

El MongoDB es una herramienta muy fácil de aprender y a la vez, bastante útil y


divertida. Ya que cuando estamos trabajando en proyectos como este, no tenemos
que pasar por todo el proceso de definición y esquema de tablas y relaciones.
Además, que al final, usar bases de datos MongoDB nos proporciona las ventajas,
como la flexibilidad de la estructura de datos, la escalabilidad y el rendimiento.

Finalmente a manera de conclusión consideramos importante conocer bien las


características de MongoDB y SQL Server, ya que, lidiar con muchos tipos de
datos, usar foreing key, primary keys, id, objects, documentos, colecciones, tablas,
data base model, logical data model y más nos da un mayor conocimiento de como
relacionar nuestros datos para poder manipularlos de manera exitosa a través de
consultas que tengan sentido y podamos tener un mejor manejo de nuestra data
como ingenieros en sistemas de información. Por otro lado, consideramos que
hemos conseguido el ABET - EAC - Student Outcome 7, puesto que hemos

www.companywebsite.com
82

conseguido adquirir los conocimientos de la manipulación de la base de datos y


aplicarlos para desarrollar nuestro startup planteado al inicio del curso.

www.companywebsite.com
83

VÍDEO ABOUT-THE-TEAM
En el video about-the-team, cada uno de los integrantes del equipo cuenta su experiencia a
la hora de realizar este trabajo. Este grupo se caracterizó por trabajar de forma colaborativa y
comunicativa. Sin embargo, uno de los aspectos que nos faltó mejorar fue el orden, aspecto
que corregiremos en futuros cursos de nuestras carreras.

En el vídeo about-the-team también muestra escenas de trabajo colaborativo para nuestros


entregables.

El link del vídeo está en el Anexo A.

BIBLIOGRAFÍA
Anaya, T., Montalvo, J., Calderón, A., & Arispe, C. (2021). Escuelas rurales en el Perú:
factores que acentúan las brechas digitales en tiempos de pandemia (COVID- 19)
y recomendaciones para reducirlas. Educación, 30 (58), 11-33. doi:
https://doi.org/10.18800/educacion.202101.001

Andina. (2017). Educación universitaria: hay 30% de deserción por falta de orientación
y de recursos. Andina. Recuperado de: https://andina.pe/agencia/noticia-
educacion-universitaria-hay-30-desercion-falta-orientacion-y-recursos-
670189.aspx [Consulta: 22 de septiembre del 2022].

Apaza, E., & Huamán, F. (2012). Factores determinantes que inciden en la deserción de
los estudiantes universitarios. Apuntes Universitarios. Revista de Investigación,
(1), 77-86. Recuperado de
https://www.redalyc.org/pdf/4676/467646124005.pdf [Consulta: 25 de
septiembre de 2022].

Ayudaley. (s.f). Base de datos no relacional. ¿Qué es? Características y ejemplos.


Recuperado el 9 de Noviembre de 2022, de

https://ayudaleyprotecciondatos.es/bases-de-datos/no-
relacional/#:~:text=Una%20base%20de%20datos%20no,%2C%20esto%20es%2
C%20las%20relacionales.

ComexPerú. (2021). Índice de percepción de la corrupción 2020: el Perú ocupa el puesto


94 de 180 economías. COMEXPERU. Recuperado de
https://www.comexperu.org.pe/en/articulo/indice-de-percepcion-de-la-
corrupcion-2020-el-peru-ocupa-el-puesto-94-de-180-economias [Consulta: 26 de
septiembre de 2022].

Coronel Flores, V. M., Gil Huilca, S., León Figueroa, A., León Román, N., & Vilchez
Atalaya, J. A. (2020). Deserción estudiantil universitaria en el Perú. Recuperado
de http://repositorio.uigv.edu.pe/handle/20.500.11818/4823 [Consulta: 25 de
septiembre de 2022].

www.companywebsite.com
84

Digital Guide (2019). MongoDB: la base de datos NoSQL flexible y escalable.


Recuperado el 9 de Noviembre de 2022, de
https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/mongodb-
presentacion-y-comparacion-con-mysql/

Eguren, E., Belaunde, C., & González, N. (2013). Capacitación docente, uso de materiales
educativos y aprendizajes: los modelos de dotación de material educativo en el
Perú. Apuntes. Revista De Ciencias Sociales, 40 (72), 57-83. doi:
https://doi.org/10.21678/apuntes.72.675

Gestión. (2021). Seis de cada diez jóvenes abandonaron sus estudios superiores por la
pandemia. Gestión. Recuperado de: https://gestion.pe/peru/covid-19-
universidades-seis-de-cada-diez-jovenes-abandonaron-sus-estudios-superiores-
por-la-pandemia-nndc-noticia/?ref=gesr [Consulta: 24 de septiembre del 2022].

Gómez-Arteta, I., & Escobar-Mamani, F. (2021). EDUCACIÓN VIRTUAL EN


TIEMPOS DE PANDEMIA: INCREMENTO DE LA DESIGUALDAD
SOCIAL EN EL PERÚ. Chakiñan, Revista De Ciencias Sociales Y Humanidades,
15, 152–165. doi: https://doi.org/10.37135/chk.002.15.10

Necochea Ocaña, Y., Nervi Condori, C., Tuesta Echeandía, V., Olazabal Valera, L.,
Rodríguez Carrasco, J., Gastelo Dávila, A. & León-Jiménez, F. (2017).
Frecuencia y características del abandono estudiantil en una Escuela de Medicina
de Lambayeque, 2006-2014. Revista Médica Herediana, 28(3), 171.
https://doi.org/10.20453/rmh.v28i3.3184 [Consulta: 26 de septiembre del 2022].

OpenWebinars. (2020). ¿Por qué usar MongoDB?. Recuperado el 9 de Noviembre de


2022, de https://openwebinars.net/blog/por-que-usar-mongodb/

Pino Romero, N. & Alanya Pérez, S. (2020). Percepción de la educación virtual


universitaria y su impacto social en tiempos de la epidemia Covid-19. Alétheia,
8(1), 29–40. https://doi.org/10.33539/aletheia.2020.n8.2421 [Consulta: 25 de
septiembre del 2022].

Superintendencia Nacional de Educación Superior Universitaria (SUNEDU). (2022).


Condiciones básicas de calidad. Lima: SUNEDU. Recuperado de:
https://www.sunedu.gob.pe/8-condiciones-basicas-de-calidad/ [Consulta: 26 de
septiembre del 2022].

Statista (2022), Sistemas gestores de bases de datos más populares en


2022. Recuperado el 26 de octubre de 2022
de: https://www.statista.com/statistics/1131568/worldwide-popularity-ranking-
relational-database-management
systems/#:~:text=Most%20popular%20relational%20database%20management
%20systems%20worldwide%202022&text=As%20of%20January%202022%2C
%20the,rounded%20out%20the%20top%20three
ThreePoints. (2022,). MongoDB: qué es, características y para qué sirve.

www.companywebsite.com
85

Recuperado el 9 de Noviembre de 2022,


dehttps://www.threepoints.com/blog/mongodb-que-es-caracteristicas-para-que-
sirve
Universidad Peruana de Ciencias Aplicadas (s/f) RELATIONAL DATABASE
DESIGN: PART I [consulta: 26 de septiembre del 2020]
https://acortar.link/xUppUb

www.companywebsite.com
86

ANEXOS
Anexo A: Vídeo about-the-team

https://youtu.be/Fs77MYTF88w

Anexo B: Tablas que muestra la tendencia de abandono estudiantil en los


últimos años.

Imagen 1. Adaptada de “Frecuencia y características del abandono estudiantil en una Escuela de


Medicina de Lambayeque, 2006-2014”, por Revista Medica Herediana, 2017.

Imagen 2. Adaptada de “Frecuencia y características del abandono estudiantil en una Escuela de


Medicina de Lambayeque, 2006-2014”, por Revista Médica Herediana, 20

www.companywebsite.com
87

Anexo C: SCRIPT DE SENTENCIAS QUE PERMITE CARGAR LOS DATOS


EN LAS BASES DE DATOS RELACIONAL - SQL

Procedimiento almacenado para insertar datos en la tabla Usuario


Create Procedure Insertar_Usuario
@UserID int,
@UserName varchar(50),
@Clave_Acceso varchar(20),
@Nombres varchar(30),
@Apellidos varchar(50),
@Telefono varchar(13),
@Correo varchar(40)
as
Insert into Usuario
Values (@UserID, @UserName, @Clave_Acceso,@Nombres, @Apellidos,
@Telefono,@Correo)

Ejemplo de inserción utilizando el procedimiento


exec Insertar_Usuario '5','Darking','N12','Liam','Ramos','970611601','liam.ramos@gmail.com'

Procedimiento almacenado para insertar datos en la tabla DetalleUniversitario


create procedure Insertar_Det_Univ
@DetalleID int,
@Facultad_ID int,
@Promedio_Ponderado float,
@Total_Puntos int
as
insert into dbo.DetalleUniversitario
values (@DetalleID,@Facultad_ID,@Promedio_Ponderado,@Total_Puntos)

Ejemplo de inserción utilizando el procedimiento


exec Insertar_Det_Univ 1, 2, 10.5, 2000

Nota: El dato Facultad_ID debe existir en la base de datos.

Procedimiento almacenado para insertar datos en la tabla Ciudad


create procedure Insertar_Ciudad
@Ciudad_ID int,
@NombreCiudad varchar(40),
@Pais_Ciudad varchar(20)
as
Insert into dbo.Ciudad

www.companywebsite.com
88

values(@Ciudad_ID, @NombreCiudad,@Pais_Ciudad)

Ejemplo de inserción utilizando el procedimiento


exec Insertar_Ciudad 4,'Guayaquil','Colombia'

Procedimiento almacenado para insertar datos en la tabla Universitario


create procedure Insertar_Universitario
@Usuario_ID int,
@Detalle_Universitario int
as
Insert into dbo.Universitario
values (@Usuario_ID,@Detalle_Universitario)

Ejemplo de inserción utilizando el procedimiento


exec Insertar_Universitario 5,3

Nota: Los datos Usuario_ID y Detalle_Universitario deben existir en la base de datos.

Procedimiento almacenado para insertar datos en la tabla CanjeoPuntos


create procedure Insertar_CanjeoPuntos
@Codigo_Canjeo int,
@Estudiante_ID int,
@Empresa_ID int,
@Fecha_Canjeo date,
@TotalPuntosCanjeado int
as
Insert into dbo.Canjeo_Puntos
values
(@Codigo_Canjeo,@Estudiante_ID,@Empresa_ID,@Fecha_Canjeo,@TotalPuntosCanjeado
)

Ejemplo de inserción utilizando el procedimiento


exec Insertar_CanjeoPuntos 101, 1, 1, '2000-01-01', 200

Nota: Los datos Estudiante_ID y Empresa_ID deben existir en la base de datos.

Procedimiento almacenado para insertar datos en la tabla Curso


create procedure Insertar_Curso
@Curso_ID int,
@Facultad_ID int,
@Nombre_Curso varchar(40),
@Horas_Dictadas varchar(30),

www.companywebsite.com
89

@Total_Creditos tinyint
as
insert into dbo.Curso
values (@Curso_ID,@Facultad_ID,@Nombre_Curso,@Horas_Dictadas,@Total_Creditos)

Ejemplo de inserción utilizando el procedimiento


exec Insertar_Curso 10, 2, 'Arquitectura de computadoras', '5hr asíncronas', 8

Nota: El dato Facultad_ID debe existir en la base de datos.

Procedimiento almacenado para insertar datos en la tabla Empresa


alter procedure Insertar_Empresa
@Empresa_ID int,
@Ciudad_ID int,
@Nombre_Empresa varchar(40),
@RUC char(11)
as
insert into dbo.Empresa
values (@Empresa_ID,@Ciudad_ID,@Nombre_Empresa,@RUC)

Ejemplo de inserción utilizando el procedimiento


exec Insertar_Empresa 2, 39, 'Tambo SAC', '20552103816'

Nota: El dato Ciudad_ID debe existir en la base de datos.

Procedimiento almacenado para insertar datos en la tabla Facultad


create procedure Insertar_Facultad
@Facultad_ID int,
@Universidad_ID int,
@Nombre_Facultad varchar(30)
as
insert into dbo.Facultad
values (@Facultad_ID,@Universidad_ID,@Nombre_Facultad)

Ejemplo de inserción utilizando el procedimiento


exec Insertar_Facultad 10, 1, 'Facultad de arquitectura'

Nota: El dato Universidad_ID debe existir en la base de datos.

Procedimiento almacenado para insertar datos en la tabla Profesor

www.companywebsite.com
90

create procedure Insertar_Profesor


@Usuario_ID int,
@Universidad_ID int
as
insert into dbo.Profesor
values (@Usuario_ID, @Universidad_ID)

Ejemplo de inserción utilizando el procedimiento


exec Insertar_Profesor 2, 1

Nota: Los datos Usuario_ID y Universidad_ID deben existir en la base de datos.

Procedimiento almacenado para insertar datos en la tabla Recompensa_Obtenida


create procedure Insertar_Recomp_Obt
@Codigo_Recompensa int,
@Estudiante_ID int,
@Curso_ID int,
@Fecha_Recompensa date,
@Cant_Puntos int
as
insert into dbo.Recompensa_Obtenida
values
(@Codigo_Recompensa,@Estudiante_ID,@Curso_ID,@Fecha_Recompensa,@Cant_Punto
s)

Ejemplo de inserción utilizando el procedimiento


exec Insertar_Recomp_Obt 10, 1, 1, '2020-10-10', 100

Nota: Los datos Estudiante_ID y Curso_ID deben existir en la base de datos.

Procedimiento almacenado para insertar datos en la tabla Salon


create procedure Insertar_Salon
@Codigo_Clase int,
@Profesor_ID int,
@Curso_ID int
as
insert into dbo.Salon
values (@Codigo_Clase,@Profesor_ID,@Curso_ID)

Ejemplo de inserción utilizando el procedimiento


exec Insertar_Salon 20, 1, 1

www.companywebsite.com
91

Nota: Los datos Profesor_ID y Curso_ID deben existir en la base de datos.

Procedimiento almacenado para insertar datos en la tabla Universidad


create procedure Insertar_Universidad
@Universidad_ID int,
@Ciudad_ID int,
@Nombre_Universidad varchar(50)
as
insert into dbo.Universidad
values (@Universidad_ID,@Ciudad_ID,@Nombre_Universidad)

Ejemplo de inserción utilizando el procedimiento


exec Insertar_Universidad 20, 39, 'Universidad del Pacífico'

Nota: El dato Ciudad_ID debe existir en la base de datos.

-- EXECUTE PARA LA INSERCCION DE DATOS

--execute de usuarios
select *from Usuario
exec Insertar_Usuario '1', 'Izicode','nicolle20', 'Nicolle' , 'Amarillo Alejos', '+51 914668213',
'nicolle.anmarillo@gmail.com'
exec Insertar_Usuario '2', 'vambi','Italo18', 'Italo' , 'Mendoza Portugal', '+51 768192023',
'italo.mendoza@gmail.com'
exec Insertar_Usuario '3', 'yanely','Yanely18', 'Yanely' , 'Dolores Zuñiga', '+51 989038256',
'yanely.dolores@gmail.com'
exec Insertar_Usuario '4', 'nicolas','nicolas4', 'Nicolas' , 'Contreras Robledo', '+51 918382628',
'nicolas.contreras@gmail.com'
exec Insertar_Usuario '5', 'chaufagod','Piero19', 'Piero' , 'Valverde Cora', '+51 834702338',
'piero.valverde@gmail.com'
exec Insertar_Usuario '6', 'WaRequejo','requejoprof18', 'Walter' , 'Requejo', '+51 988746123',
'walter.ihc.prof@gmail.com'
exec Insertar_Usuario '7', 'JuanCarlo','juanito.2022', 'Juan Carlos' , 'Arevalo', '+51
956821365', 'piero.valverde@gmail.com'

--execute de ciudades
select *from Ciudad
exec Insertar_Ciudad '1', 'Lima', 'Peru'
exec Insertar_Ciudad '2', 'Arequipa', 'Peru'
exec Insertar_Ciudad '3', 'Cusco', 'Peru'
exec Insertar_Ciudad '4', 'Ica', 'Peru'
exec Insertar_Ciudad '5', 'Piura', 'Peru'
exec Insertar_Ciudad '6', 'Sidney', 'Australia'
exec Insertar_Ciudad '7', 'Buenos Aires', 'Argentina'

www.companywebsite.com
92

--execute de universidad
select *from Universidad
exec Insertar_Universidad '1', '1', 'UPC'
exec Insertar_Universidad '2', '1', 'USIL'
exec Insertar_Universidad '3', '2', 'UPC'
exec Insertar_Universidad '4', '4', 'SJB'
exec Insertar_Universidad '5', '4', 'UAI'

--execute de facultad
select *from Facultad
exec Insertar_Facultad '1', '1', 'Ingenieria'
exec Insertar_Facultad '2', '1', 'Comunicaciones'
exec Insertar_Facultad '3', '2', 'Medicina'
exec Insertar_Facultad '4', '1', 'Arquitectura'

--execute de DetalleUniversitario
select *from DetalleUniversitario
exec Insertar_Det_Univ '1' , '1', '18.5', '300'
exec Insertar_Det_Univ '2' , '1', '17.5', '250'
exec Insertar_Det_Univ '3' , '1', '19.5', '400'
exec Insertar_Det_Univ '4' , '1', '15', '75'
exec Insertar_Det_Univ '5' , '2', '16', '200'
exec Insertar_Det_Univ '6' , '2', '16.2', '213'
exec Insertar_Det_Univ '7' , '2', '18', '285'

--execute de universitario
select *from Universitario
exec Insertar_Universitario '1','1'
exec Insertar_Universitario '2','2'
exec Insertar_Universitario '3','3'
exec Insertar_Universitario '4','4'
exec Insertar_Universitario '5','5'

--execute de profesores
select *from Profesor
exec Insertar_Profesor '6', '1'
exec Insertar_Profesor '7', '2'

--executre de cursos
select *from Curso
exec Insertar_Curso '1', '1', 'Diseño de Base de Datos ', '4h sincronico', '4'
exec Insertar_Curso '2', '1', 'Matematica Discreta ', '4h sincronico', '6'
exec Insertar_Curso '3', '3', 'Anatomia', '6h sincronico', '6'

www.companywebsite.com
93

--execute de Salon
select *from Salon
exec Insertar_Salon '1', '6', '1'
exec Insertar_Salon '2', '6', '2'

--execute de Recompensa_Obtenida
select * from Recompensa_Obtenida
exec Insertar_Recomp_Obt '1' , '1','1', '2022-08-31', '300'
exec Insertar_Recomp_Obt '2' , '1','2', '2022-07-22', '250'
exec Insertar_Recomp_Obt '3' , '2','1', '2022-08-23', '250'
exec Insertar_Recomp_Obt '4' , '2','2', '2022-09-23', '300'

--execute de Empresa
select * from Empresa
exec Insertar_Empresa '1', '1','CocaCola', '725684178'
exec Insertar_Empresa '2', '1','Lays', '768958274'
exec Insertar_Empresa '3', '1', 'Bembos', '784512693'

--execute de Canjeo_Puntos
select * from Canjeo_Puntos
exec Insertar_CanjeoPuntos '1' , '1', '1', '2022-09-23' ,'100'
exec Insertar_CanjeoPuntos '2' , '1', '1', '2022-09-25' ,'300'
exec Insertar_CanjeoPuntos '3' , '2', '1', '2022-09-25' ,'350'
exec Insertar_CanjeoPuntos '4' , '2', '2', '2022-09-28' ,'200'

www.companywebsite.com
94

Anexo D: SCRIPT DE SENTENCIAS QUE PERMITE CARGAR LOS DATOS EN LAS


BASES DE DATOS NO RELACIONAL –NoSQL

Para realizar inserciones de datos en nuestra base de datos mongoDB podemos utilizar
principalmente 2 métodos: insertOne para insertar un solo documento o insertMany para
insertar múltiples documentos. A continuación, se muestran inserciones de documentos para
todas las colecciones utilizando ambos métodos:

Colección facultades:
db.facultades.insertOne({
Nombre_Facultad: "Facultad de ingeniería",
Nombre_Universidad: "Universidad Peruana de Ciencias aplicadas"
})

db.facultades.insertMany([
{
Nombre_Facultad: "Facultad de arquitectura",
Nombre_Universidad: "Universidad de Lima"
},
{
Nombre_Facultad: "Facultad de arquitectura",
Nombre_Universidad: "Universidad Peruana de Ciencias aplicadas"
}
])

Colección profesores:
db.profesores.insertOne({
UserName: "pepito12345",
Clave_Acceso: "pepito6789",
Nombres: "José Luis",
Apellidos: "Perales Perales",
Telefono: "+51 949161510",
Correo: "joseluisperales@gmail.com",
Universidad_ID: ObjectId("63724e3c68fd464705057b6b"),
salones_de_clase: [
"SI400-2202-CC42", "SI400-2202-SI41"
]
})

db.profesores.insertMany([
{
UserName: "JuanChi10",
Clave_Acceso: "me_gusta_la_pizza",
Nombres: "Juan",
Apellidos: "Pérez Gonzales",
Telefono: "+51 949161510",
Correo: "juanchi@gmail.com",
Universidad_ID: ObjectId("63724e3c68fd464705057b6b"),
salones_de_clase: [

www.companywebsite.com
95

"SI400-2202-C242", "SI400-2202-SI40"
]
},
{
UserName: "JuanChi11",
Clave_Acceso: "me_gustan_los_macarrones",
Nombres: "Juan",
Apellidos: "Gonzales Pérez",
Telefono: "+51 949161511",
Correo: "juanchi1@gmail.com",
Universidad_ID: ObjectId("63724e3c68fd464705037b6b"),
salones_de_clase: [
"SI400-2202-C243", "SI400-2202-SI30"
]
}
])

Colección clases:
db.clases.insertOne({
Codigo_Clase: "SI400-2202-SI40",
Nombre_Profesor: "Nicolás Pelaez",
Nombre_Curso: "Diseño de base de datos",
Horas_dictadas: "2h síncrono / 2h asíncrono",
total_creditos: 1,
Facultad_ID: ObjectId("62d01d17cdd1b7c8a5w945b9"),
Universidad_ID: ObjectId("62d01d17cdd1b7d8a5f945b9"),
})

db.clases.insertMany([
{
Codigo_Clase: "SI400-2202-SI41",
Nombre_Profesor: "Nicolás Pelaez",
Nombre_Curso: "Diseño de base de datos",
Horas_dictadas: "2h síncrono / 2h asíncrono",
total_creditos: 1,
Facultad_ID: ObjectId("62d01d17cdd1b7c8a5f945c9"),
Universidad_ID: ObjectId("62d01d17cdd1b7c8a5f915b9"),
},
{
Codigo_Clase: "SI400-2202-SI42",
Nombre_Profesor: "Nicolás Pelaez",
Nombre_Curso: "Diseño de base de datos",
Horas_dictadas: "2h síncrono / 2h asíncrono",
total_creditos: 1,
Facultad_ID: ObjectId("62d01d17cdd1b7c8a5f945b9"),
Universidad_ID: ObjectId("62d01d17cdd1b7c8a5f945b1"),
}
])

www.companywebsite.com
96

Colección universidades:
db.universidades.insertOne({
NombreUniversidad: "Universidad Peruana de Ciencias aplicadas",
Facultades: [
ObjectId("62d01d17cdd1b7c8a5f945d9"),
ObjectId("62d01d17cdd1b7c8a5f945d8")
],
Ciudad_ID: ObjectId("62d01d17cdd1b7c8a5f945d9"),

})

db.universidades.insertMany([
{
NombreUniversidad: "Universidad Peruana de Ciencias aplicadas",
Facultades: [
ObjectId("62d01d17cdd1b7c8a5f945d9"),
ObjectId("62d01d17cdd1b7c8a5f945d8")
],
Ciudad_ID: ObjectId("62d01d17cdd1b7c8a5f945d9"),
},
{
NombreUniversidad: "Universidad Lima",
Facultades: [
ObjectId("62d01d17cdd1b7c8a5f945a9"),
ObjectId("62d01d17cdd1b7c8a5f945a8")
],
Ciudad_ID: ObjectId("62d01d17cdd1b7c8a5f945d9"),
},
])
Colección recompensas:
db.recompensas.insertOne({
FechaRecompensa: "10 de octubre de 2022",
Puntos: 300,
Estudiante: {
usuario_estudiante: "pepito1244",
universitario_id: ObjectId("636be1e2b1492f7f66cfc123"),
},
Clase: {
clase_id: ObjectId("636be1e2b1492f7f66cfc123"),
Nombre_Curso: "Diseño de bases de datos"
},
})

db.recompensas.insertMany([
{
FechaRecompensa: "10 de octubre de 2022",
Puntos: 300,
Estudiante: {
usuario_estudiante: "pepito1244",
universitario_id: ObjectId("636be1e2b1492f7f66cfc123"),

www.companywebsite.com
97

},
Clase: {
clase_id: ObjectId("636be1e2b1492f7f66cfc123"),
Nombre_Curso: "Diseño de bases de datos"
},
},
{
FechaRecompensa: "11 de octubre de 2022",
Puntos: 400,
Estudiante: {
usuario_estudiante: "pepito1234",
universitario_id: ObjectId("236be1e2b1492f7f66cfc123"),
},
Clase: {
clase_id: ObjectId("336be1e2b1492f7f66cfc123"),
Nombre_Curso: "Diseño de bases de datos"
},
},
])

Colección empresas:
db.empresas.insertOne({
Nombre_Empresa: "Coca Cola SAC",
Ciudad_ID: ObjectId("62d01d17cdd1b7c8a5f945d9"),
RUC: "10603645948"
})

db.empresas.insertMany([
{
Nombre_Empresa: "Coca Cola SAC",
Ciudad_ID: ObjectId("62d01d17cdd1b7c8a5f945d9"),
RUC: "20603645948"
},
{
Nombre_Empresa: "Inca Cola SAC",
Ciudad_ID: ObjectId("62d01d17cdd1b7c8a5f945d9"),
RUC: "20538856674"
},
])

Colección canjeo_puntos:
db.canjeo_puntos.insertOne({
estudiante: {
Nombre_Estudiante: "Nicolás Contreras",
EstudianteID: ObjectId("62d01d17cdd1b7c8a5f945d9")
},
empresa: {
Nombre_Empresa: "Coca Cola SAC",

www.companywebsite.com
98

EmpresaID: ObjectId("62d01d17cdd1b7c8a5f945d9")
},
FechaCanjeo: "10 de noviembre de 2003",
Total_Canjeado: 10
})

db.canjeo_puntos.insertMany([
{
estudiante: {
Nombre_Estudiante: "Nicolás Contreras",
EstudianteID: ObjectId("62d01d17cdd1b7c8a5f945d9")
},
empresa: {
Nombre_Empresa: "Coca Cola SAC",
EmpresaID: ObjectId("62d01d17cdd1b7c8a5f945d9")
},
FechaCanjeo: "10 de noviembre de 2003",
Total_Canjeado: 10
},
{
estudiante: {
Nombre_Estudiante: "Nicolle Amarillo",
EstudianteID: ObjectId("62d01d17cdd1b7c8a5f945d8")
},
empresa: {
Nombre_Empresa: "Coca Cola SAC",
EmpresaID: ObjectId("62d01d17cdd1b7c8a5f945d8")
},
FechaCanjeo: "10 de noviembre de 2003",
Total_Canjeado: 100
}
])

Colección ciudades:
db.ciudades.insertOne({
Nombre_Ciudad: "Lima",
Pais: "Peru"
})

db.ciudades.insertMany([
{
Nombre_Ciudad: "Lambayeque",
Pais: "Perú"
},
{
Nombre_Ciudad: "Cajamarca",
Pais: "Perú"
}
])

www.companywebsite.com
99

Colección universitarios:
db.universitarios.insertOne({
UserName: "pepito12345",
Clave_Acceso: "pepito6789",
Nombres: "José Luis",
Apellidos: "Perales Perales",
Telefono: "+51 949161510",
Correo: "joseluisperales@gmail.com",
Facultad_ID: ObjectId("62d01d16cda1b7c8a5f945c9"),
Universidad_ID: ObjectId("62d01d17cdd1b7c8a5f945d9"),
Promedio_Ponderado: 18.59,
Total_Puntos: 3590,
})

db.universitarios.insertMany([
{
UserName: "pepe12345",
Clave_Acceso: "me_gustan_las_pizzas",
Nombres: "José Luis",
Apellidos: "Perales Perales",
Telefono: "+51 949161110",
Correo: "joseluisperales@gmail.com",
Facultad_ID: ObjectId("62d01d16cda1b7c8a5f945c9"),
Universidad_ID: ObjectId("62d01d17cdd1b7c8a5f945d9"),
Promedio_Ponderado: 18.59,
Total_Puntos: 3590,
},
{
UserName: "pepe6789",
Clave_Acceso: "me_gustan_los_tacos",
Nombres: "Ronaldinho Neymar",
Apellidos: "Pérez Gonzáles",
Telefono: "+51 949161210",
Correo: "ronaldinho@gmail.com",
Facultad_ID: ObjectId("12d01d16cda1b7c8a5f945c9"),
Universidad_ID: ObjectId("13d01d17cdd1b7c8a5f945d9"),
Promedio_Ponderado: 15.1,
Total_Puntos: 5000,
}
])

www.companywebsite.com

También podría gustarte