Está en la página 1de 8

MBA Online

Una vez que terminó el periodo de distanciamiento social las personas siguieron teniendo la necesidad
de estudiar y mejorar profesionalmente, para lo cual la demanda de cursos y maestrías virtuales fue en
aumento exponencial en los siguientes años. Una empresa llamada Split Máster decidió proponer una
oferta de maestría donde cada persona elige la forma en la que termina sus estudios, además de
permitirle tener una propia estrategia.

Split Máster está de acuerdo en que una maestría deber ofrecer un grupo de cursos obligatorios y un
grupo de cursos electivos, por lo cual, una maestría tiene asociado a un grupo de cursos distintos
dependiendo de la versión de la maestría. Cada maestría tiene un código único, nombre, descripción y
versión; el precio de la maestría es calculado en base a la suma de los cursos que el estudiante vaya
accediendo. Tengamos en cuenta que, al existir una serie de cursos obligatorios y una serie de cursos
electivos, el precio final de la maestría podría cambiar para cada alumno.

Cada alumno tiene un código único de estudiante, nombres, apellidos, correo electrónico, celular, fecha
de nacimiento y país de residencia. Esta información es importante, dado que cada alumno recibe una
boleta de pago la cual al ser pagada le ofrece al alumno la posibilidad de seguir entrando a la plataforma,
en caso de no ser pagada el alumno no podría seguir estudiando; para la generación de la boleta de
pago, es necesario tener información del cliente, del precio final acumulado por los cursos que esté
llevando, además del impuesto, fecha de vencimiento y un código único.

Cada curso tiene un código único, versión, nombre, descripción y un enlace asociado a la sumilla del
curso. Cada curso tiene una serie de actividades asociadas que pueden ser exámenes, ensayos y
presentaciones; para el caso de los exámenes nos importa su nombre, fecha de inicio, fecha de fin, la
nota final y las preguntas a las cuales están asociadas, cada pregunta tiene un código correlativo que
podría repetirse entre exámenes. Para el caso de los ensayos es importante tener un código único, una
fecha de entrega, un campo de texto libre para que el alumno pueda ingresar su ensayo, para este caso
no se mantiene una nota, dado que tendrá revisiones asociadas con su respectivo asesor. Una revisión
tiene asociada una fecha y un comentario final. En el caso de las presentaciones solo es necesario el
código de la actividad, el nombre, el enlace de la sesión virtual y la calificación

Cada alumno tiene asociado un asesor que lo acompañara durante toda la maestría , este asesor puede
incluso ser otro alumno, sin embargo, existe una lista de asesores dedicados a esta tarea. Durante el
primer día de clases al alumno se le brinda la posibilidad de elegir quien será su asesor , este es único y
no puede ser modificado hasta terminar la carrera. El sistema mantiene información del asesor tal como
su código de asesor, nombres, apellidos, nacionalidad y fecha de inscripción como asesor. Es necesario
tener en cuenta de que cada asesor puede asesorar a uno o más estudiantes.

Los estudiantes pueden organizarse y crear grupos de estudios dentro de la plataforma, para esto un
alumno registra a su grupo de estudio con un nombre y una lista de alumnos, este grupo de estudios solo
existe por un momento determinado, dado que mantiene una fecha de inicio y una fecha de fin. Además,
se solicita que el grupo de estudios esté asociado a uno o más cursos, dado que como parte de la
calificación del curso es relevante revisar cuantas veces el alumno se ha reunido con su grupo de
trabajo, con la intención de hacer seguimiento a su desempeño.

Dado de que Split Máster es una plataforma online, tiene cursos que se dan en tiempo real y otras que
son grabadas, para el caso de clases real time, se crean conferencias por cada curso y el cupo es
limitado, dado que los alumnos deben solicitar un espacio. Un curso puede tener muchas conferencias
dependiendo de la necesidad y se habilitan con capacidad suficiente para poder recibir a todos los
alumnos del curso, sin embargo, una conferencia puede ser habilitada de manera pública lo cual podría
dejar a un alumno sin acceso si es que no se registra antes de la fecha límite.
Pregunta 1:

Crear el diagrama físico del ejercicio propuesto.

https://my.vertabelo.com/public-model-view/
RsdBrfN7qWOInMrx0F2zxTTjfPcd1VOBumIeZxXh9UVmje2v9kyR64mYjcgr96BA?
x=2682&y=3223&zoom=0.4252

-- Created by Vertabelo (http://vertabelo.com)


-- Last modification date: 2022-11-22 15:45:07.318

-- tables
-- Table: advisers
CREATE TABLE advisers (
id int NOT NULL,
first_name varchar(100) NOT NULL,
last_name varchar(100) NOT NULL,
country varchar(100) NOT NULL,
inscription_date date NOT NULL,
CONSTRAINT advisers_pk PRIMARY KEY (id)
);

-- Table: conferences
CREATE TABLE conferences (
id int NOT NULL,
name varchar(100) NOT NULL,
capacity int NOT NULL,
course_id int NOT NULL,
CONSTRAINT conferences_pk PRIMARY KEY (id)
);
-- Table: course_by_study_group
CREATE TABLE course_by_study_group (
course_id int NOT NULL,
study_group_id int NOT NULL,
CONSTRAINT course_by_study_group_pk PRIMARY KEY (course_id,study_group_id)
);

-- Table: courses
CREATE TABLE courses (
id int NOT NULL,
version varchar(100) NOT NULL,
name varchar(100) NOT NULL,
description varchar(255) NOT NULL,
summary_link varchar(100) NOT NULL,
modality varchar(100) NOT NULL,
CONSTRAINT courses_pk PRIMARY KEY (id)
);

-- Table: courses_by_master
CREATE TABLE courses_by_master (
master_id int NOT NULL,
course_id int NOT NULL,
type varchar(100) NOT NULL,
CONSTRAINT courses_by_master_pk PRIMARY KEY (master_id,course_id)
);

-- Table: essays
CREATE TABLE essays (
id int NOT NULL,
deadline date NOT NULL,
content varchar(255) NOT NULL,
course_id int NOT NULL,
CONSTRAINT essays_pk PRIMARY KEY (id)
);

-- Table: exams
CREATE TABLE exams (
id int NOT NULL,
start_date date NOT NULL,
end_date date NOT NULL,
grade int NOT NULL,
course_id int NOT NULL,
CONSTRAINT exams_pk PRIMARY KEY (id)
);

-- Table: invoices
CREATE TABLE invoices (
id int NOT NULL,
tax int NOT NULL,
deadline date NOT NULL,
student_id int NOT NULL,
mount int NOT NULL,
CONSTRAINT invoices_pk PRIMARY KEY (id)
);

-- Table: keynotes
CREATE TABLE keynotes (
id int NOT NULL,
name varchar(100) NOT NULL,
session_link varchar(100) NOT NULL,
grade int NOT NULL,
course_id int NOT NULL,
CONSTRAINT keynotes_pk PRIMARY KEY (id)
);

-- Table: masters
CREATE TABLE masters (
id int NOT NULL,
name varchar(100) NOT NULL,
description varchar(255) NOT NULL,
version varchar(100) NOT NULL,
CONSTRAINT masters_pk PRIMARY KEY (id)
);

-- Table: questions
CREATE TABLE questions (
id int NOT NULL,
sentence varchar(255) NOT NULL,
CONSTRAINT questions_pk PRIMARY KEY (id)
);
-- Table: questions_by_exam
CREATE TABLE questions_by_exam (
exam_id int NOT NULL,
question_id int NOT NULL,
CONSTRAINT questions_by_exam_pk PRIMARY KEY (exam_id,question_id)
);

-- Table: reviews
CREATE TABLE reviews (
id int NOT NULL,
review_date date NOT NULL,
comment varchar(255) NOT NULL,
essay_id int NOT NULL,
adviser_id int NOT NULL,
CONSTRAINT reviews_pk PRIMARY KEY (id)
);

-- Table: students
CREATE TABLE students (
id int NOT NULL,
first_name varchar(100) NOT NULL,
last_name varchar(100) NOT NULL,
email varchar(100) NOT NULL,
mobile nvarchar(9) NOT NULL,
birthdate date NOT NULL,
country varchar(100) NOT NULL,
master_id int NOT NULL,
adviser_id int NOT NULL,
CONSTRAINT students_pk PRIMARY KEY (id)
);

-- Table: students_by_group
CREATE TABLE students_by_group (
student_id int NOT NULL,
study_group_id int NOT NULL,
quantity int NOT NULL,
CONSTRAINT students_by_group_pk PRIMARY KEY (student_id,study_group_id)
);
-- Table: study_groups
CREATE TABLE study_groups (
id int NOT NULL,
name varchar(100) NOT NULL,
start_date date NOT NULL,
end_date date NOT NULL,
CONSTRAINT study_groups_pk PRIMARY KEY (id)
);

-- foreign keys
-- Reference: conferences_courses (table: conferences)
ALTER TABLE conferences ADD CONSTRAINT conferences_courses
FOREIGN KEY (course_id)
REFERENCES courses (id);

-- Reference: course_by_study_group_courses (table: course_by_study_group)


ALTER TABLE course_by_study_group ADD CONSTRAINT course_by_study_group_courses
FOREIGN KEY (course_id)
REFERENCES courses (id);

-- Reference: course_by_study_group_study_groups (table: course_by_study_group)


ALTER TABLE course_by_study_group ADD CONSTRAINT course_by_study_group_study_groups
FOREIGN KEY (study_group_id)
REFERENCES study_groups (id);

-- Reference: courses_by_master_courses (table: courses_by_master)


ALTER TABLE courses_by_master ADD CONSTRAINT courses_by_master_courses
FOREIGN KEY (course_id)
REFERENCES courses (id);

-- Reference: courses_by_master_masters (table: courses_by_master)


ALTER TABLE courses_by_master ADD CONSTRAINT courses_by_master_masters
FOREIGN KEY (master_id)
REFERENCES masters (id);

-- Reference: essays_courses (table: essays)


ALTER TABLE essays ADD CONSTRAINT essays_courses
FOREIGN KEY (course_id)
REFERENCES courses (id);
-- Reference: exams_courses (table: exams)
ALTER TABLE exams ADD CONSTRAINT exams_courses
FOREIGN KEY (course_id)
REFERENCES courses (id);

-- Reference: invoices_students (table: invoices)


ALTER TABLE invoices ADD CONSTRAINT invoices_students
FOREIGN KEY (student_id)
REFERENCES students (id);

-- Reference: keynotes_courses (table: keynotes)


ALTER TABLE keynotes ADD CONSTRAINT keynotes_courses
FOREIGN KEY (course_id)
REFERENCES courses (id);

-- Reference: questions_by_exam_exams (table: questions_by_exam)


ALTER TABLE questions_by_exam ADD CONSTRAINT questions_by_exam_exams
FOREIGN KEY (exam_id)
REFERENCES exams (id);

-- Reference: questions_by_exam_questions (table: questions_by_exam)


ALTER TABLE questions_by_exam ADD CONSTRAINT questions_by_exam_questions
FOREIGN KEY (question_id)
REFERENCES questions (id);

-- Reference: reviews_advisers (table: reviews)


ALTER TABLE reviews ADD CONSTRAINT reviews_advisers
FOREIGN KEY (adviser_id)
REFERENCES advisers (id);

-- Reference: reviews_essays (table: reviews)


ALTER TABLE reviews ADD CONSTRAINT reviews_essays
FOREIGN KEY (essay_id)
REFERENCES essays (id);

-- Reference: students_advisers (table: students)


ALTER TABLE students ADD CONSTRAINT students_advisers
FOREIGN KEY (adviser_id)
REFERENCES advisers (id);

-- Reference: students_by_group_students (table: students_by_group)


ALTER TABLE students_by_group ADD CONSTRAINT students_by_group_students
FOREIGN KEY (student_id)
REFERENCES students (id);

-- Reference: students_by_group_study_groups (table: students_by_group)


ALTER TABLE students_by_group ADD CONSTRAINT students_by_group_study_groups
FOREIGN KEY (study_group_id)
REFERENCES study_groups (id);

-- Reference: students_masters (table: students)


ALTER TABLE students ADD CONSTRAINT students_masters
FOREIGN KEY (master_id)
REFERENCES masters (id);

-- End of file.

Pregunta 2:

Crear una función o procedimiento almacenado que permita indicar la cantidad de alumnos que llevan un
curso de acuerdo al nombre del curso y al tipo (obligatorio o electivo).

Pregunta 3:

Crear una función o procedimiento almacenado que permita indicar mostrar el nombre de los asesores
de acuerdo al nombre de un determinado curso.

También podría gustarte