From 115110a19b11e5e413ee70d622d51486632f1b71 Mon Sep 17 00:00:00 2001 From: raul Date: Wed, 11 Dec 2024 12:43:57 +0100 Subject: [PATCH] Merge students and teachers into same table --- db-config/init.sql | 61 +++++++++++++++++++++------------------------- 1 file changed, 28 insertions(+), 33 deletions(-) diff --git a/db-config/init.sql b/db-config/init.sql index d59237d..06ef4dc 100644 --- a/db-config/init.sql +++ b/db-config/init.sql @@ -1,38 +1,31 @@ --- create a table -CREATE TABLE ALUMNOS ( - id_alumno INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY, +CREATE TYPE role AS ENUM ('estudiante', 'profesor', 'admin'); + +CREATE TABLE usuarios ( + id_usuario INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY, + email VARCHAR(255) UNIQUE NOT NULL, nombre VARCHAR(255) NOT NULL, apellido1 VARCHAR(255), apellido2 VARCHAR(255), - email VARCHAR(255) NOT NULL, - password VARCHAR(255) NOT NULL + password VARCHAR(255) NOT NULL, + rol role NOT NULL ); -CREATE TABLE PROFESORES ( - id_profesor INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - nombre VARCHAR(255) NOT NULL, - apellido1 VARCHAR(255), - apellido2 VARCHAR(255), - email VARCHAR(255) NOT NULL, - password VARCHAR(255) NOT NULL -); - -CREATE TABLE CUESTIONARIOS ( +CREATE TABLE cuestionarios ( id_cuestionario INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_profesor INT NOT NULL, + id_usuario INT NOT NULL, titulo VARCHAR(255) NOT NULL, descripcion VARCHAR(255), - CONSTRAINT fk_profesor FOREIGN KEY(id_profesor) REFERENCES PROFESORES(id_profesor) + CONSTRAINT fk_usuario FOREIGN KEY(id_usuario) REFERENCES USUARIOS(id_usuario) ); -CREATE TABLE PREGUNTAS ( +CREATE TABLE preguntas ( id_pregunta INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY, id_cuestionario INT NOT NULL, enunciado VARCHAR(255) NOT NULL, CONSTRAINT fk_cuestionario FOREIGN KEY(id_cuestionario) REFERENCES CUESTIONARIOS(id_cuestionario) ); -CREATE TABLE RESPUESTAS ( +CREATE TABLE respuestas ( id_respuesta INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY, id_pregunta INT NOT NULL, respuesta VARCHAR(255) NOT NULL, @@ -40,29 +33,31 @@ CREATE TABLE RESPUESTAS ( CONSTRAINT fk_pregunta FOREIGN KEY(id_pregunta) REFERENCES PREGUNTAS(id_pregunta) ); -CREATE TABLE JUEGA ( +CREATE TABLE juega ( id_intento INT PRIMARY KEY, - id_alumno INT NOT NULL, + id_usuario INT NOT NULL, id_cuestionario INT NOT NULL, num_correctas INT NOT NULL, - CONSTRAINT fk_alumno FOREIGN KEY(id_alumno) REFERENCES ALUMNOS(id_alumno), + CONSTRAINT fk_usuario FOREIGN KEY(id_usuario) REFERENCES USUARIOS(id_usuario), CONSTRAINT id_cuestionario FOREIGN KEY(id_cuestionario) REFERENCES CUESTIONARIOS(id_cuestionario) ); -- add test data -INSERT INTO ALUMNOS (nombre, apellido1, apellido2, email, password) - VALUES ('Raúl', 'Bulgariu', 'Suciu', 'raul@bulgariu.xyz', 'ef92b778bafe771e89245b89ecbc08a44a4e166c06659911881f383d4473e94f'), - ('Pepito', 'Prueba', 'de Ejemplo', 'pepito@gmail.com', 'ef92b778bafe771e89245b89ecbc08a44a4e166c06659911881f383d4473e94f'); +INSERT INTO usuarios (nombre, apellido1, apellido2, email, password, rol) + VALUES ('Raúl', 'Bulgariu', 'Suciu', 'raul@bulgariu.xyz', 'ef92b778bafe771e89245b89ecbc08a44a4e166c06659911881f383d4473e94f', 'admin'), + ('Jacinto', 'Sánchez', 'Villa', 'j.sanchezvilla@gmail.com', 'ef92b778bafe771e89245b89ecbc08a44a4e166c06659911881f383d4473e94f', 'profesor'), + ('David', 'Balaguer', 'Garcia', 'david@gmail.com', 'ef92b778bafe771e89245b89ecbc08a44a4e166c06659911881f383d4473e94f', 'profesor'), + ('Aaron', 'Martinez', '', 'aaron@martinez.xyz', 'ef92b778bafe771e89245b89ecbc08a44a4e166c06659911881f383d4473e94f', 'estudiante'); -INSERT INTO PROFESORES (nombre, apellido1, apellido2, email, password) - VALUES ('Jacinto', 'Sánchez', 'Villa', 'j.sanchezvilla@gmail.com', 'ef92b778bafe771e89245b89ecbc08a44a4e166c06659911881f383d4473e94f'); +INSERT INTO CUESTIONARIOS (id_usuario, titulo, descripcion) + SELECT id_usuario, 'Examen SOM', 'Cuestionario con preguntas sobre SOM' + FROM usuarios + WHERE email = 'j.sanchezvilla@gmail.com'; -INSERT INTO PROFESORES (nombre, apellido1, email, password) - VALUES ('David', 'Balaguer', 'david@gmail.com', 'ef92b778bafe771e89245b89ecbc08a44a4e166c06659911881f383d4473e94f'); - -INSERT INTO CUESTIONARIOS (id_profesor, titulo, descripcion) - VALUES (1, 'Examen SOM', 'Cuestionario con preguntas sobre SOM'), - (2, 'Examen OFI', 'Cuestionario con preguntas sobre OFI'); +INSERT INTO CUESTIONARIOS (id_usuario, titulo, descripcion) + SELECT id_usuario, 'Examen OFI', 'Cuestionario con preguntas sobre OFI' + FROM usuarios + WHERE email = 'david@gmail.com'; INSERT INTO PREGUNTAS (id_cuestionario, enunciado) VALUES (1, 'Qué comando muestra los archivos del directorio actual?'),