-- Crear base de datos y usarla
CREATE DATABASE IF NOT EXISTS `proyecto`;
USE `proyecto`;

-- Crear tabla etapas
CREATE TABLE IF NOT EXISTS `etapas` (
  `idEtapa` tinyint unsigned NOT NULL AUTO_INCREMENT,
  `nombre` varchar(10) COLLATE utf8mb4_general_ci DEFAULT NULL,
  PRIMARY KEY (`idEtapa`),
  UNIQUE KEY `nombre` (`nombre`)
) ;

-- Crear tabla actividades
CREATE TABLE IF NOT EXISTS `actividades` (
  `idActividad` tinyint unsigned NOT NULL AUTO_INCREMENT,
  `nombre` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `max_al_clases` tinyint unsigned NOT NULL,
  PRIMARY KEY (`idActividad`),
  UNIQUE KEY `nombre` (`nombre`)
) ;

-- Crear tabla clases
CREATE TABLE IF NOT EXISTS `clases` (
  `idClase` smallint unsigned NOT NULL AUTO_INCREMENT,
  `codigo` varchar(20) NOT NULL,
  `idTutor` smallint unsigned DEFAULT NULL,
  `idEtapa` tinyint unsigned NOT NULL,
  PRIMARY KEY (`idClase`),
  UNIQUE KEY `idTutor` (`idTutor`),
  KEY `etapas_clases` (`idEtapa`),
  CONSTRAINT `etapas_clases` FOREIGN KEY (`idEtapa`) REFERENCES `etapas` (`idEtapa`),
  CONSTRAINT `profesores_clases` FOREIGN KEY (`idTutor`) REFERENCES `usuarios` (`idUsuario`) ON DELETE CASCADE ON UPDATE CASCADE
) ;

-- Crear tabla alumnos
CREATE TABLE IF NOT EXISTS `alumnos` (
  `idAlumno` smallint unsigned NOT NULL AUTO_INCREMENT,
  `nombre` varchar(90) NOT NULL,
  `idClase` smallint unsigned NOT NULL,
  PRIMARY KEY (`idAlumno`),
  KEY `alumnos_clases` (`idClase`),
  CONSTRAINT `alumnos_clases` FOREIGN KEY (`idClase`) REFERENCES `clases` (`idClase`)
) ;

-- Crear tabla actividades_etapas
CREATE TABLE IF NOT EXISTS `actividades_etapas` (
  `idActividad` tinyint unsigned NOT NULL,
  `idEtapa` tinyint unsigned NOT NULL,
  PRIMARY KEY (`idActividad`,`idEtapa`) USING BTREE,
  KEY `idEtapa` (`idEtapa`),
  CONSTRAINT `actividades_etapas_ibfk_1` FOREIGN KEY (`idActividad`) REFERENCES `actividades` (`idActividad`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `actividades_etapas_ibfk_2` FOREIGN KEY (`idEtapa`) REFERENCES `etapas` (`idEtapa`) ON DELETE CASCADE ON UPDATE CASCADE
) ;

-- Crear tabla inscripciones
CREATE TABLE IF NOT EXISTS `inscripciones` (
  `idInscripcion` smallint unsigned NOT NULL AUTO_INCREMENT,
  `idAlumno` smallint unsigned NOT NULL,
  `idActividad` tinyint unsigned NOT NULL,
  PRIMARY KEY (`idInscripcion`),
  UNIQUE KEY `idAlumno` (`idAlumno`,`idActividad`),
  KEY `actividades_inscripciones` (`idActividad`),
  CONSTRAINT `actividades_inscripciones` FOREIGN KEY (`idActividad`) REFERENCES `actividades` (`idActividad`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `alumnos_inscripciones` FOREIGN KEY (`idAlumno`) REFERENCES `alumnos` (`idAlumno`) ON DELETE CASCADE ON UPDATE CASCADE
) ;


INSERT INTO etapas (nombre) VALUES
('CF'),
('BACHILLERATO'),
('INFANTIL')


--INSERTAMOS EN APP PROFESORES


INSERT INTO clases (codigo, idTutor, idEtapa) VALUES
('1DAW', 2, 1), -- Alberto
('2DAW', 3, 2), -- Isa
('1SMR', 4, 3) -- Ernesto



INSERT INTO alumnos (nombre, idClase) VALUES
-- Alberto
('Hugo', 4),
('Pablo', 4),
('Luis', 4),

-- Isa
('César', 5),
('Jesús', 5),

--Ernesto
('Rubén', 6),
('Victoria', 6),
('Claudia', 6),
('Martín', 6)



--Añadimos actividades luego de esto o en la app
INSERT INTO actividades (nombre, max_al_clases) VALUES
('Fútbol', 7),
('Baloncesto', 5),
('Natación', 1),
('Teatro', 9),
('Música', 2),
('Dibujo', 1),
('Programación', 3),
('Robótica', 5),
('Cocina', 2),
('Idiomas', 4);

