🎓 ATIVIDADE DE FIXAÇÃO: UNIDADE III (PARTE 2)
Continuando a modelagem do sistema, adicionamos agora as disciplinas e as regras cruciais de negócio acadêmico. 🛡️🧩
Objetivo: Integrar novas entidades (DISCIPLINA), configurar chaves estrangeiras 1:N e desenvolver consultas complexas utilizando JOINs para extração de dados.
🏗️ Estrutura Adicional da Base
Precisamos associar cada disciplina a um curso e a um professor responsável.
📊 Diagrama ER Ampliado
erDiagram
CURSO ||--o{ DISCIPLINA : "contém"
PROFESSOR ||--o{ DISCIPLINA : "leciona"
DISCIPLINA {
int id_disciplina PK
string nome
int curso_fk FK
int professor_fk FK
}
📗 Tabela: DISCIPLINA
| Atributo | Tipo de Dado | Relacionamento |
|---|---|---|
| id_disciplina | INT | PRIMARY KEY, AUTO_INCREMENT |
| nome | VARCHAR(100) | NOT NULL |
| curso_fk | INT | FOREIGN KEY -> CURSO(id_curso) |
| professor_fk | INT | FOREIGN KEY -> PROFESSOR(id) |
🛠️ Atividade Prática de Engenharia
📗 Tarefa 1: Criação da Estrutura SQL
Escreva o script CREATE TABLE para a tabela DISCIPLINA, garantindo a integridade referencial.
📗 Tarefa 2: Consultas Estratégicas (JOINs)
Resolva os seguintes cenários de negócio:
- 🔍 Listagem: Nome de todos os alunos matriculados no curso 'GTI'.
- 👨🏫 Perfil: Nome e Titulação do professor da disciplina 'BANCO DE DADOS'.
- 🛡️ Relatório: Nome e RA dos alunos do professor 'RICARDO'.
➡️ Clique aqui para revelar os Scripts e Gabarito (SPOILER) ⬅️
🏗️ Script de Criação:
CREATE TABLE DISCIPLINA (
ID_DISCIPLINA INT PRIMARY KEY AUTO_INCREMENT,
NOME VARCHAR(100) NOT NULL,
CURSO_FK INT,
PROFESSOR_FK INT,
FOREIGN KEY (CURSO_FK) REFERENCES CURSO(ID_CURSO),
FOREIGN KEY (PROFESSOR_FK) REFERENCES PROFESSOR(ID)
);
🔍 Queries Resolvidas:
-- 1. Alunos no curso GTI
SELECT A.NOME
FROM ALUNO A
JOIN MATRICULA M ON A.ID = M.ALUNO_ID
JOIN CURSO C ON M.CURSO_ID = C.ID_CURSO
WHERE C.NOME = 'GTI';
-- 2. Professor de Banco de Dados
SELECT P.NOME, P.TITULACAO
FROM PROFESSOR P
JOIN DISCIPLINA D ON P.ID = D.PROFESSOR_FK
WHERE D.NOME = 'BANCO DE DADOS';
-- 3. Alunos do professor RICARDO
SELECT A.NOME, A.RA
FROM ALUNO A
JOIN MATRICULA M ON A.ID = M.ALUNO_ID
JOIN CURSO C ON M.CURSO_ID = C.ID_CURSO
JOIN DISCIPLINA D ON C.ID_CURSO = D.CURSO_FK
JOIN PROFESSOR P ON D.PROFESSOR_FK = P.ID
WHERE P.NOME = 'RICARDO';
💡 Insight Técnico: A ordem de criação importa! Crie primeiro as tabelas independentes (
ALUNO,PROFESSOR) e depois as que possuem chaves estrangeiras. 🛡️