-- ACTIVIDAD 1 -- 1. Tabla Profesores CREATE TABLE Profesores ( ProfesorId INTEGER PRIMARY KEY AUTOINCREMENT, Nombre TEXT NOT NULL, Especialidad TEXT, Email TEXT UNIQUE NOT NULL ); -- 2. Tabla Asignaturas CREATE TABLE Asignaturas ( AsignaturaId INTEGER PRIMARY KEY AUTOINCREMENT, Nombre TEXT NOT NULL, ProfesorId INTEGER NOT NULL, Creditos INTEGER CHECK(Creditos BETWEEN 1 AND 10), FOREIGN KEY (ProfesorId) REFERENCES Profesores(ProfesorId) ); -- 3. Tabla Estudiantes CREATE TABLE Estudiantes ( EstudianteId INTEGER PRIMARY KEY AUTOINCREMENT, Nombre TEXT NOT NULL, Email TEXT UNIQUE NOT NULL, FechaInscripcion TEXT DEFAULT CURRENT_TIMESTAMP ); -- 4. Tabla Matriculas CREATE TABLE Matriculas ( MatriculaId INTEGER PRIMARY KEY AUTOINCREMENT, EstudianteId INTEGER NOT NULL, AsignaturaId INTEGER NOT NULL, Nota REAL CHECK(Nota BETWEEN 0 AND 10), FOREIGN KEY (EstudianteId) REFERENCES Estudiantes(EstudianteId), FOREIGN KEY (AsignaturaId) REFERENCES Asignaturas(AsignaturaId) ); -- Insertar datos -- 2 profesores INSERT INTO Profesores (Nombre, Especialidad, Email) VALUES ('Ana García', 'Matemáticas', 'ana.garcia@escuela.com'), ('Carlos López', 'Historia', 'carlos.lopez@escuela.com'); -- 3 asignaturas INSERT INTO Asignaturas (Nombre, ProfesorId, Creditos) VALUES ('Álgebra', 1, 6), ('Geometría', 1, 4), ('Historia Medieval', 2, 5); -- 3 estudiantes INSERT INTO Estudiantes (Nombre, Email) VALUES ('Juan Pérez', 'juan.perez@estudiante.com'), ('María González', 'maria.gonzalez@estudiante.com'), ('Pedro Martínez', 'pedro.martinez@estudiante.com'); -- 5 matrículas INSERT INTO Matriculas (EstudianteId, AsignaturaId, Nota) VALUES (1, 1, 8.5), (1, 2, 7.0), (2, 1, 9.0), (2, 3, 8.0), (3, 2, NULL); -- Crear índice en Email de Estudiantes CREATE INDEX idx_estudiantes_email ON Estudiantes(Email); -- Añadir columna Telefono a Profesores ALTER TABLE Profesores ADD COLUMN Telefono TEXT; -- ACTIVIDAD 2 -- 1. Tabla Habitaciones CREATE TABLE Habitaciones ( HabitacionId INTEGER PRIMARY KEY AUTOINCREMENT, Numero TEXT NOT NULL, Tipo TEXT NOT NULL, PrecioPorNoche REAL NOT NULL, Disponible INTEGER DEFAULT 1 ); -- 2. Tabla Reservas CREATE TABLE Reservas ( ReservaId INTEGER PRIMARY KEY AUTOINCREMENT, HabitacionId INTEGER NOT NULL, NombreCliente TEXT NOT NULL, FechaEntrada TEXT NOT NULL, FechaSalida TEXT NOT NULL, TotalPagado REAL NOT NULL, FOREIGN KEY (HabitacionId) REFERENCES Habitaciones(HabitacionId) ); -- 3. Insertar 5 habitaciones INSERT INTO Habitaciones (Numero, Tipo, PrecioPorNoche, Disponible) VALUES ('101', 'Individual', 50.00, 1), ('102', 'Doble', 80.00, 1), ('103', 'Suite', 150.00, 1), ('201', 'Individual', 55.00, 1), ('202', 'Doble', 85.00, 1); -- 4. Transacción para crear una reserva BEGIN TRANSACTION; -- Marcar habitación como no disponible UPDATE Habitaciones SET Disponible = 0 WHERE HabitacionId = 1; -- Insertar la reserva INSERT INTO Reservas (HabitacionId, NombreCliente, FechaEntrada, FechaSalida, TotalPagado) VALUES (1, 'Juan Pérez', '2026-02-01', '2026-02-05', 200.00); -- Si todo está bien, confirmar COMMIT; -- Si algo sale mal, deshacer con: ROLLBACK;