Merge students and teachers into same table

This commit is contained in:
raul 2024-12-11 12:43:57 +01:00
parent b673009635
commit 115110a19b
Signed by: raul
GPG Key ID: C1AA797073F17129
1 changed files with 28 additions and 33 deletions

View File

@ -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?'),