Está en la página 1de 3

-- Crear la base de datos

CREATE DATABASE bd_gestion_escolar COLLATE utf8mb4_general_ci;

-- Usar la base de datos


USE bd_gestion_escolar;

-- Tabla Profesores
CREATE TABLE profesores (
id_pro INT PRIMARY KEY,
nombre VARCHAR(255),
apellido VARCHAR(255),
id_materia INT,
FOREIGN KEY (id_materia) REFERENCES materias(id)
);

-- Tabla Materias
CREATE TABLE materias (
id INT PRIMARY KEY AUTO_INCREMENT,
materia VARCHAR(255)
);

-- Tabla Grados
CREATE TABLE grados (
id_gra INT PRIMARY KEY,
grado VARCHAR(50)
);

INSERT INTO grados (id_gra, grado) VALUES


(6, 'Sexto'),
(7, 'Séptimo'),
(8, 'Octavo'),
(9, 'Noveno'),
(10, 'Décimo'),
(11, 'Undécimo');

-- Tabla Materia_Grado para establecer la relación entre Grados y Materias


CREATE TABLE materia_grado (
id_grado INT,
id_materia INT,
FOREIGN KEY (id_grado) REFERENCES grados(id_gra),
FOREIGN KEY (id_materia) REFERENCES materias(id),
PRIMARY KEY (id_grado, id_materia)
);

-- Tabla Estudiantes
CREATE TABLE estudiantes (
id int (20) PRIMARY KEY,
nombre VARCHAR(255),
apellido VARCHAR(255),
fecha_nacimiento DATE,
grado INT,
FOREIGN KEY (grado) REFERENCES grados(id_gra)
);

-- Tabla Notas
CREATE TABLE notas (
id INT PRIMARY KEY AUTO_INCREMENT,
id_estudiante INT(20),
id_profesor INT,
id_materia INT,
nota DECIMAL(5, 2),
FOREIGN KEY (id_estudiante) REFERENCES estudiantes(id),
FOREIGN KEY (id_profesor) REFERENCES profesores(id_pro),
FOREIGN KEY (id_materia) REFERENCES materias(id)
);

-- Tabla Periodos
CREATE TABLE periodos (
id_periodo INT PRIMARY KEY AUTO_INCREMENT,
nombre_periodo VARCHAR(50) NOT NULL
);

-- Insertar los 4 periodos


INSERT INTO periodos (nombre_periodo) VALUES
('Periodo 1'),
('Periodo 2'),
('Periodo 3'),
('Periodo 4');

ALTER TABLE Notas


ADD COLUMN id_periodo INT;

ALTER TABLE Notas


ADD FOREIGN KEY (id_periodo) REFERENCES periodos(id_periodo);

desc materias;
ALTER TABLE Materias ADD COLUMN nombre VARCHAR(255);
ALTER TABLE Notas ADD COLUMN calificacion DECIMAL(5, 2);
ALTER TABLE Notas DROP COLUMN nota;
select * from estudiantes;
select * from periodos;
select * from materias;
select * from profesores;
select * from notas;
select * from grados;
DELETE FROM estudiantes WHERE grado = 7;
DELETE FROM grados WHERE grado = "sexto";
DELETE FROM profesores where nombre ="jose";
DELETE FROM notas WHERE id_estudiante IN (SELECT id FROM estudiantes WHERE grado =
6);
SELECT * FROM notas WHERE id_estudiante IN (SELECT id FROM estudiantes WHERE grado
= 6);
DELETE FROM estudiantes WHERE grado = 6;

-- Tabla de Usuarios
CREATE TABLE usuarios (
id_usuario INT PRIMARY KEY AUTO_INCREMENT,
nombre_usuario VARCHAR(255),
contraseña VARCHAR(255),
id_rol INT,
FOREIGN KEY (id_rol) REFERENCES roles(id)
);

select * from usuarios;


select * from roles;
UPDATE usuarios SET id_rol = 3 WHERE nombre_usuario = 'estluis';

-- Tabla de Roles
CREATE TABLE roles (
id INT PRIMARY KEY,
nombre_rol VARCHAR(255)
);

-- Roles disponibles
INSERT INTO roles (nombre_rol) VALUES
('Administrador'),
('Estudiante'),
('Profesor');

select * from profesores;


INSERT INTO usuarios (nombre_usuario, contraseña, id_rol) VALUES
('admin', 'admin123', 1);

-- Tabla AsignacionProfesorGrado
CREATE TABLE AsignacionProfesorGrado (
id INT PRIMARY KEY AUTO_INCREMENT,
id_profesor INT,
id_grado INT,
FOREIGN KEY (id_profesor) REFERENCES profesores(id_pro),
FOREIGN KEY (id_grado) REFERENCES grados(id_gra)
);

-- Agregar la columna 'intentos_fallidos' a la tabla 'usuarios'


ALTER TABLE usuarios
ADD COLUMN intentos_fallidos INT DEFAULT 0;

-- Agregar la columna 'cuenta_bloqueada' a la tabla 'usuarios'


ALTER TABLE usuarios
ADD COLUMN cuenta_bloqueada BOOLEAN DEFAULT 0;

También podría gustarte