0
respostas

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

1 - Criar tabelas

CREATE TABLE alunos (
ID_Aluno INT PRIMARY KEY,
Nome_Aluno VARCHAR(250),
Data_Nascimento DATE,
Genero VARCHAR(250),
Endereco VARCHAR(250),
Telefone_Contato INT,
Email VARCHAR(250));

create table professores(
ID_Professor INT PRIMARY KEY,
Nome_Professor VARCHAR(250),
Data_de_Nascimento DATE,
Genero VARCHAR(250),
Telefone_Contato TEXT,
Email VARCHAR(250));

CREATE TABLE disciplinas (
ID_Disciplina INT primary key,
Nome_Disciplina VARCHAR(250),
Descricao VARCHAR(250),
Carga_Horaria INT,
ID_Professor INT,
FOREIGN KEY (ID_Professor) REFERENCES professores (ID_Professor));

CREATE TABLE turmas (
ID_Turma INT PRIMARY KEY,
Nome_Turma VARCHAR(250),
Ano_Letivo INT,
ID_Professor_Orientador INT,
FOREIGN KEY (ID_Professor_Orientador) REFERENCES professores(ID_Professor));

CREATE TABLE turma_disciplinas(
ID_Turma INT,
ID_Disciplina INT,
PRIMARY KEY (ID_Turma, ID_Disciplina),
FOREIGN KEY (ID_Turma) REFERENCES turmas(ID),
FOREIGN KEY (ID_Disciplina) REFERENCES disciplinas(ID_Disciplina));

CREATE TABLE turma_alunos(
ID_Turma INT,
ID_Alunos INT,
PRIMARY KEY (ID_Turma, ID_Alunos),
FOREIGN KEY (ID_Turma) REFERENCES turmas(ID),
FOREIGN KEY (ID_Alunos) REFERENCES alunos(ID_Aluno));

CREATE TABLE notas(
ID_Nota INT PRIMARY KEY,
ID_Aluno INT,
ID_Disciplina INT,
Nota FLOAT,
Data DATE,
FOREIGN KEY (ID_Aluno) REFERENCES alunos(ID_Aluno),
FOREIGN KEY (ID_Disciplina) REFERENCES disciplinas(ID_Disciplina));

2 - Inserir dados

INSERT INTO alunos (
  ID_Aluno,
  Nome_Aluno,
  Data_Nascimento,
  Genero,
  Endereco,
  Telefone_Contato,
  Email
) VALUES
(1, 'João Silva', '2005-03-15', 'Masculino', 'Rua das Flores, 123', '(11) 9876-5432', 'joao@email.com'),
(2, 'Maria Santos', '2006-06-20', 'Feminino', 'Avenida Principal, 456', '(11) 8765-4321', 'maria@email.com'),
(3, 'Pedro Soares', '2004-01-10', 'Masculino', 'Rua Central, 789', '(11) 7654-3210', 'pedro@email.com'),
(4, 'Ana Lima', '2005-04-02', 'Feminino', 'Rua da Escola, 56', '(11) 8765-4321', 'ana@email.com'),
(5, 'Mariana Fernandes', '2005-08-12', 'Feminino', 'Avenida da Paz, 789', '(11) 5678-1234', 'mariana@email.com'),
(6, 'Lucas Costa', '2003-11-25', 'Masculino', 'Rua Principal, 456', '(11) 1234-5678', 'lucas@email.com'),
(7, 'Isabela Santos', '2006-09-10', 'Feminino', 'Rua da Amizade, 789', '(11) 9876-5432', 'isabela@email.com'),
(8, 'Gustavo Pereira', '2004-05-15', 'Masculino', 'Avenida dos Sonhos, 123', '(11) 7654-3210', 'gustavo@email.com'),
(9, 'Carolina Oliveira', '2005-02-20', 'Feminino', 'Rua da Alegria, 456', '(11) 8765-4321', 'carolina@email.com'),


INSERT INTO professores (
  ID_Professor,
  Nome_Professor,
  Data_de_Nascimento,
  Genero,
  Telefone_Contato,
  Email
) VALUES
(1, 'Ana Oliveira', '1980-05-25', 'Feminino', '(11) 1234-5678', 'ana@email.com'),
(2, 'Carlos Ferreira', '1975-09-12', 'Masculino', '(11) 2345-6789', 'carlos@email.com'),
(3, 'Mariana Santos', '1982-03-15', 'Feminino', '(11) 3456-7890', 'mariana@email.com'),


INSERT INTO disciplinas (
  ID_Disciplina,
  Nome_Disciplina,
  Descricao,
  Carga_Horaria,
  ID_Professor
) VALUES
(1, 'Matemática', 'Estudo de conceitos matemáticos avançados', 60, 1),
(2, 'História', 'História mundial e local', 45, 2),
(3, 'Física', 'Princípios fundamentais da física', 60, 1),

INSERT INTO turmas (
  ID,
  Nome,
  Ano,
  ID_Professor
) VALUES
(1, 'Turma A', 2023, 1),
(2, 'Turma B', 2023, 2),
(3, 'Turma C', 2023, 3),

INSERT INTO turma_disciplinas (
  ID_Turma,
  ID_Disciplina
) VALUES
(1, 1),
(2, 2),
(3, 3),


INSERT INTO turma_alunos (
  ID_Turma,
  ID_Alunos
) VALUES
(1, 1),
(2, 2),
(3, 3),

INSERT INTO notas (
  ID_Nota,
  ID_Aluno,
  ID_Disciplina,
  Nota,
  Data
) VALUES
(2, 1, 1, 6.19, '2023-07-07'),
(3, 2, 1, 7.18, '2023-07-07'),
(4, 3, 1, 7.47, '2023-07-07'),

OBS: Inseri todos os dados.

3 - Realizar consultas simples

SELECT * FROM alunos;
SELECT * from professores;
SELECT * from disciplinas;
SELECT * from turmas;
SELECT * FROM turma_disciplinas;
SELECT * FROM turma_alunos;
SELECT * FROM notas;
SELECT * FROM alunos ORDER by nome_aluno asc;
SELECT * FROM disciplinas WHERE Carga_Horaria > 40;
SELECT * FROM notas WHERE Nota > 6 AND Nota < 8;