1
resposta

[Projeto] Mão na massa: gerenciamento escolar com banco de dados relacional

1 - Criar as Tabelas

-- Tabela Alunos
CREATE TABLE Alunos (
id_aluno INTEGER PRIMARY KEY,
nome_aluno VARCHAR(100),
data_nascimento DATE,
genero VARCHAR(20),
endereco TEXT,
telefone VARCHAR(20),
email VARCHAR(100)
);

-- Tabela Professores
CREATE TABLE Professores (
id_professor INTEGER PRIMARY KEY,
nome_professor VARCHAR(100),
data_nascimento DATE,
genero VARCHAR(20),
telefone VARCHAR(20),
email VARCHAR(100)
);

-- Tabela Disciplinas
CREATE TABLE Disciplinas (
id_disciplina INTEGER PRIMARY KEY,
nome_disciplina VARCHAR(100),
descricao TEXT,
carga_horaria INTEGER,
id_professor INTEGER,
FOREIGN KEY (id_professor) REFERENCES Professores(id_professor)
);

-- Tabela Turmas
CREATE TABLE Turmas (
id_turma INTEGER PRIMARY KEY,
nome_turma VARCHAR(50),
ano_letivo INTEGER,
id_professor_orientador INTEGER,
FOREIGN KEY (id_professor_orientador) REFERENCES Professores(id_professor)
);

-- Tabela Turma_Disciplinas (N:N entre Turmas e Disciplinas)
CREATE TABLE Turma_Disciplinas (
id_turma INTEGER,
id_disciplina INTEGER,
PRIMARY KEY (id_turma, id_disciplina),
FOREIGN KEY (id_turma) REFERENCES Turmas(id_turma),
FOREIGN KEY (id_disciplina) REFERENCES Disciplinas(id_disciplina)
);

-- Tabela Turma_Alunos (N:N entre Turmas e Alunos)
CREATE TABLE Turma_Alunos (
id_turma INTEGER,
id_aluno INTEGER,
PRIMARY KEY (id_turma, id_aluno),
FOREIGN KEY (id_turma) REFERENCES Turmas(id_turma),
FOREIGN KEY (id_aluno) REFERENCES Alunos(id_aluno)
);

-- Tabela Notas
CREATE TABLE Notas (
id_nota INTEGER PRIMARY KEY AUTOINCREMENT,
id_aluno INTEGER,
id_disciplina INTEGER,
valor_nota FLOAT,
data_avaliacao DATE,
FOREIGN KEY (id_aluno) REFERENCES Alunos(id_aluno),
FOREIGN KEY (id_disciplina) REFERENCES Disciplinas(id_disciplina)
);

2 - Inserir Dados

-- Exemplo de inserção para teste
INSERT INTO Alunos (id_aluno, nome_aluno, data_nascimento) VALUES (1, 'Ana Silva', '2010-05-15');
INSERT INTO Professores (id_professor, nome_professor) VALUES (1, 'Prof. Ricardo');
INSERT INTO Disciplinas (id_disciplina, nome_disciplina, carga_horaria, id_professor) VALUES (1, 'Matemática', 60, 1);

3 - Realizar Consultas
Consulta 1: Verificar se os dados foram importados
SELECT * FROM Alunos;
SELECT * FROM Professores;
SELECT * FROM Disciplinas;

Consulta 2: Alunos ordenados pelo nome
SQL

SELECT * FROM Alunos
ORDER BY nome_aluno ASC;

Consulta 3: Disciplinas com carga horária maior que 40
SQL

SELECT nome_disciplina, carga_horaria
FROM Disciplinas
WHERE carga_horaria > 40;

Consulta 4: Notas entre 6 e 8

SELECT * FROM Notas
WHERE valor_nota > 6 AND valor_nota < 8;

1 resposta

Oi, Moacir! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

É isso aí! Seu código está correto com a criação das tabelas com as chaves estrangeiras, o que deixa o banco bem estruturado e coerente com o cenário escolar.

Uma dica interessante para o futuro é utilizar JOIN para cruzar dados entre tabelas e gerar consultas mais completas. Veja este exemplo:


SELECT Alunos.nome_aluno, Disciplinas.nome_disciplina, Notas.valor_nota
FROM Notas
JOIN Alunos ON Notas.id_aluno = Alunos.id_aluno
JOIN Disciplinas ON Notas.id_disciplina = Disciplinas.id_disciplina;

Esse comando permite visualizar o nome do aluno, a disciplina e a nota em uma única consulta, facilitando a análise dos dados.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!