-- =====================================================
-- PROJETO SQL - BANCO DE DADOS DE UMA ESCOLA
-- Compatível com MyCompiler (SQLite)
-- Execute uma única vez, de cima para baixo.
-- =====================================================
PRAGMA foreign_keys = ON; -- faz o SQLite respeitar as chaves estrangeiras
-- =====================================================
-- ETAPA 2 - CRIAÇÃO DAS TABELAS
-- =====================================================
-- Áreas do conhecimento
CREATE TABLE areas (
id_area INTEGER PRIMARY KEY AUTOINCREMENT,
nome TEXT NOT NULL
);
-- Disciplinas (cada uma pertence a uma área)
CREATE TABLE disciplinas (
id_disciplina INTEGER PRIMARY KEY AUTOINCREMENT,
nome TEXT NOT NULL,
id_area INTEGER NOT NULL,
FOREIGN KEY (id_area) REFERENCES areas(id_area)
);
-- Professores
CREATE TABLE professores (
id_professor INTEGER PRIMARY KEY AUTOINCREMENT,
nome TEXT NOT NULL,
email TEXT NOT NULL
);
-- Turmas
CREATE TABLE turmas (
id_turma INTEGER PRIMARY KEY AUTOINCREMENT,
nome TEXT NOT NULL,
ano_escolar INTEGER NOT NULL
);
-- Alunos (cada aluno pertence a uma turma)
CREATE TABLE alunos (
id_aluno INTEGER PRIMARY KEY AUTOINCREMENT,
nome TEXT NOT NULL,
id_turma INTEGER NOT NULL,
FOREIGN KEY (id_turma) REFERENCES turmas(id_turma)
);
-- Notas (liga aluno + disciplina + professor + bimestre)
CREATE TABLE notas (
id_nota INTEGER PRIMARY KEY AUTOINCREMENT,
id_aluno INTEGER NOT NULL,
id_disciplina INTEGER NOT NULL,
id_professor INTEGER NOT NULL,
bimestre INTEGER NOT NULL CHECK (bimestre BETWEEN 1 AND 4),
nota REAL NOT NULL CHECK (nota BETWEEN 0 AND 10),
FOREIGN KEY (id_aluno) REFERENCES alunos(id_aluno),
FOREIGN KEY (id_disciplina) REFERENCES disciplinas(id_disciplina),
FOREIGN KEY (id_professor) REFERENCES professores(id_professor)
);
-- =====================================================
-- ETAPA 3 - CADASTRO DAS ÁREAS
-- =====================================================
INSERT INTO areas (nome) VALUES
('Linguagens e suas Tecnologias'), -- id 1
('Matemática e suas Tecnologias'), -- id 2
('Ciências da Natureza e suas Tecnologias'), -- id 3
('Ciências Humanas e Sociais Aplicadas'); -- id 4
-- =====================================================
-- ETAPA 4 - DISCIPLINAS, PROFESSORES, TURMAS E ALUNOS
-- Ordem: areas -> disciplinas -> professores -> turmas -> alunos
-- (quem recebe chave estrangeira vem depois de quem a fornece)
-- =====================================================
-- Disciplinas (id_area conforme a tabela areas)
INSERT INTO disciplinas (nome, id_area) VALUES
('Língua Portuguesa', 1), -- id 1
('Língua Inglesa', 1), -- id 2
('Matemática', 2), -- id 3
('Biologia', 3), -- id 4
('Física', 3), -- id 5
('História', 4), -- id 6
('Geografia', 4), -- id 7
('Sociologia', 4); -- id 8
-- Professores (dados fictícios)
INSERT INTO professores (nome, email) VALUES
('Ana Souza', 'ana.souza@escola.fake'), -- id 1 (Linguagens)
('Carlos Lima', 'carlos.lima@escola.fake'), -- id 2 (Matemática)
('Marina Alves', 'marina.alves@escola.fake'), -- id 3 (Natureza)
('Roberto Dias', 'roberto.dias@escola.fake'); -- id 4 (Humanas)
-- Turmas
INSERT INTO turmas (nome, ano_escolar) VALUES
('1º Ano A', 1), -- id 1
('2º Ano A', 2), -- id 2
('3º Ano A', 3); -- id 3
-- Alunos (dados fictícios)
INSERT INTO alunos (nome, id_turma) VALUES
('Bruno Martins', 1), -- id 1
('Carla Ferreira', 1), -- id 2
('Diego Rocha', 2), -- id 3
('Elisa Nunes', 2), -- id 4
('Felipe Costa', 3), -- id 5
('Gabriela Pires', 3); -- id 6
-- Conferências
-- =====================================================
-- ETAPA 5 - REGISTRO DAS NOTAS
-- Colunas: id_aluno, id_disciplina, id_professor, bimestre, nota
-- =====================================================
INSERT INTO notas (id_aluno, id_disciplina, id_professor, bimestre, nota) VALUES
(1, 1, 1, 1, 8.5),
(1, 1, 1, 2, 7.0),
(1, 3, 2, 1, 5.5),
(1, 3, 2, 2, 6.5),
(1, 4, 3, 1, 9.0),
(2, 1, 1, 1, 4.5),
(2, 1, 1, 2, 6.0),
(2, 3, 2, 1, 7.5),
(2, 6, 4, 1, 8.0),
(3, 2, 1, 1, 6.5),
(3, 2, 1, 2, 7.0),
(3, 5, 3, 1, 5.0),
(3, 7, 4, 1, 9.5),
(4, 3, 2, 3, 6.0),
(4, 4, 3, 3, 4.0),
(4, 8, 4, 3, 7.5),
(5, 1, 1, 4, 9.0),
(5, 5, 3, 4, 8.0),
(5, 6, 4, 4, 6.5),
(6, 3, 2, 4, 10.0),
(6, 8, 4, 4, 5.5);
-- PRINT 3 - Relatório acadêmico final
SELECT
a.nome AS aluno,
t.nome AS turma,
d.nome AS disciplina,
ar.nome AS area,
ROUND(AVG(n.nota), 2) AS media,
COUNT(n.id_nota) AS qtd_notas,
CASE
WHEN AVG(n.nota) >= 6 THEN 'Aprovado'
ELSE 'Recuperação'
END AS situacao
FROM notas n
JOIN alunos a ON n.id_aluno = a.id_aluno
JOIN turmas t ON a.id_turma = t.id_turma
JOIN disciplinas d ON n.id_disciplina = d.id_disciplina
JOIN areas ar ON d.id_area = ar.id_area
GROUP BY a.id_aluno, d.id_disciplina
ORDER BY a.nome, d.nome;
To embed this project on your website, copy the following code and paste it into your website's HTML: