Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

🎓 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

AtributoTipo de DadoRelacionamento
id_disciplinaINTPRIMARY KEY, AUTO_INCREMENT
nomeVARCHAR(100)NOT NULL
curso_fkINTFOREIGN KEY -> CURSO(id_curso)
professor_fkINTFOREIGN 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:

  1. 🔍 Listagem: Nome de todos os alunos matriculados no curso 'GTI'.
  2. 👨‍🏫 Perfil: Nome e Titulação do professor da disciplina 'BANCO DE DADOS'.
  3. 🛡️ 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. 🛡️