Skip to content

🧮 Fundamentos de Ɓlgebra Relacional ​

Módulo Teórico-Formal: A Linguagem MatemÔtica por trÔs das Consultas SQL
Fundamentação: Edgar F. Codd (1970) e a Teoria dos Conjuntos
Público: 1º Ano do Curso Técnico em Desenvolvimento de Software


1. šŸŽÆ Objetivos de Aprendizagem ​

Ao final deste capĆ­tulo, vocĆŖ serĆ” capaz de:

  • šŸ“ Compreender a relação entre operaƧƵes matemĆ”ticas sobre conjuntos e as consultas em tabelas de bancos de dados.
  • šŸ” Dominar os operadores unĆ”rios fundamentais: Seleção (σ) e Projeção (Ļ€).
  • šŸ”— Compor expressƵes relacionais combinando Junção (ā‹ˆ), Produto Cartesiano (Ɨ) e operadores de conjuntos (∪,āˆ’,∩).
  • šŸ”„ Traduzir uma expressĆ£o formal de Ć”lgebra relacional diretamente para um comando SELECT em SQL.

2. šŸ’” O que Ć© Ɓlgebra Relacional? ​

A Álgebra Relacional é uma linguagem de consulta procedural formal. Ela define um conjunto de operações matemÔticas aplicadas sobre relações (tabelas) que produzem sempre uma nova relação como resultado (propriedade de fechamento).


3. šŸ” Operadores UnĆ”rios (Operam sobre 1 Tabela) ​

A) Seleção (σ) — Filtragem Horizontal de Linhas ​

Filtra as tuplas (linhas) que satisfazem uma condição lógica booleana:

σcondicao(R)

Exemplo PrĆ”tico: ​

Selecionar todos os alunos da turma '1º Ano InformÔtica':

σturma = ’1o Ano Informatica’(ALUNOS)
Relação de Entrada: ALUNOS
matriculanometurma
2026-001Lucas Ferreira1º Ano InformÔtica
2026-002Beatriz Ramos1º Ano InformÔtica
2026-015Matheus Santos1º Ano Mecânica
ā‡“Ļƒturma = ’1o Ano Informatica’(ALUNOS)
Relação de Saída (Resultado da Seleção)
matriculanometurma
2026-001Lucas Ferreira1º Ano InformÔtica
2026-002Beatriz Ramos1º Ano InformÔtica

B) Projeção (Ļ€) — Filtragem Vertical de Colunas ​

Extrai apenas os atributos (colunas) desejados, eliminando colunas desnecessƔrias e linhas duplicadas:

Ļ€atributo1,atributo2,…,atributon(R)

Exemplo PrĆ”tico: ​

Listar apenas a matrĆ­cula e o nome dos alunos:

Ļ€matricula, nome(ALUNOS)
Relação de Saída
matriculanome
2026-001Lucas Ferreira
2026-002Beatriz Ramos
2026-015Matheus Santos

C) Composição de OperaƧƵes UnĆ”rias ​

Podemos aninhar operadores para buscar colunas especĆ­ficas com filtros:

Ļ€nome(σano_publicacao > 2000(LIVROS))

"Traga apenas o nome dos livros publicados após o ano 2000."


4. šŸ”— Operadores BinĆ”rios (Operam sobre 2 Tabelas) ​

A) Junção Natural e Theta-Join (ā‹ˆ) ​

Combina tuplas de duas relações com base em uma condição de igualdade entre chaves (PK e FK):

Rā‹ˆcondicaoS

Exemplo PrĆ”tico na Biblioteca: ​

Combinar os emprƩstimos com os dados dos respectivos alunos:

EMPRESTIMOSā‹ˆEMPRESTIMOS.id_aluno=ALUNOS.id_alunoALUNOS

B) Produto Cartesiano (Ɨ) ​

Combina todas as linhas de R com todas as linhas de S. Se R possui 10 linhas e S possui 5 linhas, o resultado terĆ” 10Ɨ5=50 linhas.

RƗS

C) OperaƧƵes ClĆ”ssicas da Teoria dos Conjuntos ​

As relações devem ser união-compatíveis (mesmo número e tipos de atributos):

  • UniĆ£o (∪): R∪S — Retorna todas as tuplas que estĆ£o em R ou em S (sem duplicatas).
  • Interseção (∩): R∩S — Retorna as tuplas que pertencem simultaneamente a R e a S.
  • DiferenƧa (āˆ’): Rāˆ’S — Retorna as tuplas que estĆ£o em R, mas nĆ£o estĆ£o em S.

5. šŸ”„ Matriz de EquivalĆŖncia: Ɓlgebra Relacional vs. SQL ​

A tabela abaixo demonstra a correspondência direta entre as equações teóricas e a sintaxe prÔtica em SQL:

Operação RelacionalNotação MatemÔticaComando SQL Equivalente
ProjeçãoĻ€A,B(R)SELECT A, B FROM R;
Seleçãoσcondicao(R)SELECT * FROM R WHERE condicao;
Seleção + ProjeçãoĻ€A(σC(R))SELECT A FROM R WHERE C;
Produto CartesianoRƗSSELECT * FROM R CROSS JOIN S;
Junção (Theta Join)Rā‹ˆR.k=S.kSSELECT * FROM R INNER JOIN S ON R.k = S.k;
UniãoR∪SSELECT * FROM R UNION SELECT * FROM S;
InterseçãoR∩SSELECT * FROM R INTERSECT SELECT * FROM S;
DiferenƧaRāˆ’SSELECT * FROM R EXCEPT SELECT * FROM S;

6. šŸ“ Desafio PrĆ”tico Resolvido ​

Problema: Escreva a expressão em Álgebra Relacional e o comando SQL para responder:
"Quais são os títulos dos livros emprestados para o aluno com matrícula '2026-INFO-001'?"

ExpressĆ£o MatemĆ”tica: ​

Ļ€titulo(σmatricula = ’2026-INFO-001’(ALUNOSā‹ˆEMPRESTIMOSā‹ˆITENS_EMPRESTIMOā‹ˆLIVROS))

Tradução Direta para SQL: ​

sql
SELECT l.titulo
FROM alunos a
JOIN emprestimos e ON a.id_aluno = e.id_aluno
JOIN itens_emprestimo ie ON e.id_emprestimo = ie.id_emprestimo
JOIN livros l ON ie.id_livro = l.id_livro
WHERE a.matricula = '2026-INFO-001';

Material DidƔtico Aberto sob LicenƧa MIT.