Buscar

Álgebra Relacional para Bancos de Dados

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Capítulo 3 
Um pouco de Álgebra Relacional 
A compreensão das operações da álgebra relacional é extremamente importante para aqueles 
que querem conhecer melhor os mecanismos das linguagens de consultas para bancos de dados 
relacionais. Este capítulo apresenta um resumo das operações da álgebra visando a apresentar 
ao leitor alguns conceitos que serão valiosos no decorrer dos capítulos subsequentes. 
3.1 OPERAÇÕES DA ÁLGEBRA RELACIONAL 
A álgebra relacional está baseada em cinco operações primitivas: 
 PROJEÇÃO 
 SELEÇÃO 
 PRODUTO 
 UNIÃO 
 DIFERENÇA 
Uma expressão algébrica é uma seqüência de operações que, executadas na ordem estabelecida, 
produzem um resultado final na forma de uma tabela. Uma operação da álgebra é aplicada so-
bre um ou dois operandos, dependendo da operação. Um operando pode ser uma tabela do ban-
co de dados ou o resultado da aplicação de alguma operação. Com isso, é possível aplicar ope-
rações sobre tabelas e encadear os resultados com outras operações, de forma a construir ex-
pressões algébricas. Na notação aqui adotada, os operandos podem aparecer entre parênteses, 
colchetes ou chaves, de modo a facilitar a leitura de expressões, assim como os parênteses são 
usados nas expressões aritméticas. Um operando, portanto, pode ser uma tabela relacional ou o 
resultado de uma expressão algébrica. 
Uma linguagem de consulta para bancos de dados relacionais baseada na álgebra relacional de-
ve prover uma sintaxe que permita a construção dessas expressões e seu processamento num de-
terminado banco de dados. 
As cinco operações mostradas acima são chamadas de primitivas porque nenhuma delas pode 
ser obtida da combinação das outras quatro. Isto significa que as cinco são necessárias para que 
a álgebra relacional seja completa. 
A OPERAÇÃO DE PROJEÇÃO 
É utilizada quando se deseja selecionar uma ou mais colunas de uma tabela. Para produzir uma 
lista com matrículas e nomes dos alunos, por exemplo, basta aplicar a operação de projeção so-
bre as colunas matrícula e nome, da tabela ALUNO. O quadro a seguir ilustra essa aplicação. 
 
14 Um pouco de álgebra relacional 
Pmatrícula,nome ALUNO 
matrícula nome 
1001 Ricardo Biondi 
1002 Maria Rita Colatti 
1004 Oscarito Vianna 
1005 Barbara Carlito 
1007 Carlos Maradona 
1008 Sacadura Miranda 
1010 Maria Lucia Silva 
A operação de projeção é representada pelo símbolo P seguido da lista de uma ou mais colunas, 
sobre as quais a projeção deve ser feita, e do operando, neste caso a tabela ALUNO, cujas colunas 
são projetadas. 
A OPERAÇÃO DE SELEÇÃO 
A operação de seleção, representada pelo símbolo S seguido de uma expressão lógica e de um 
operando, resulta nos registros deste operando que passam pelo critério de filtragem determina-
do pela expressão lógica. No exemplo a seguir, a operação de seleção é empregada para a ob-
tenção dos registros dos alunos do curso de Direito, representados pelos registros que têm o va-
lor “DIR” na coluna codcurso. 
Scodcurso = ‘DIR’ ALUNO 
matrícula nome sexo codcurso nascimento 
1001 Ricardo Biondi M DIR 21/02/80 
1004 Oscarito Vianna M DIR 14/08/79 
1007 Carlos Maradona M DIR 30/06/77 
COMBINANDO PROJEÇÃO E SELEÇÃO 
As operações da álgebra podem ser combinadas para a construção de consultas mais complexas. 
O exemplo a seguir produz a lista de matrículas e nomes do alunos do curso de Direito. 
Pmatrícula,nome [ Scodcurso = ‘DIR’ ALUNO] 
matrícula nome 
1001 Ricardo Biondi 
1004 Oscarito Vianna 
1007 Carlos Maradona 
Aqui, foram combinadas duas operações da álgebra. Primeiro, a operação de seleção foi aplica-
da à tabela ALUNO produzindo os registros dos alunos do curso de Direito, isto é, que têm o valor 
“DIR” na coluna codcurso. Este resultado, entre colchetes, serviu então como operando da ope-
ração de projeção nas colunas matrícula e nome. 
A OPERAÇÃO PRODUTO 
A operação de produto serve para combinar tabelas e, por si só, não parece muito interessante. 
Contudo, forma uma combinação formidável com as operações de seleção e projeção. 
 
Operações da Álgebra Relacional 15 
 
 
A operação de produto requer dois operandos e produz, como resultado, todas as combinações 
dos registros existentes em cada um deles. O quadro a seguir mostra o produto das tabelas ALU-
NO e CURSO. 
ALUNO × CURSO 
matrícula nome sexo Aluno.codcurso nascimento Curso.codcurso curso 
1001 Ricardo Biondi M DIR 21/02/80 DIR Direito 
1001 Ricardo Biondi M DIR 21/02/80 JOR Jornalismo 
1001 Ricardo Biondi M DIR 21/02/80 INF Informática 
1002 Maria Rita Colatti F INF 10/11/78 DIR Direito 
1002 Maria Rita Colatti F INF 10/11/78 JOR Jornalismo 
1002 Maria Rita Colatti F INF 10/11/78 INF Informática 
1004 Oscarito Vianna M DIR 14/08/79 DIR Direito 
1004 Oscarito Vianna M DIR 14/08/79 JOR Jornalismo 
1004 Oscarito Vianna M DIR 14/08/79 INF Informática 
1005 Barbara Carlito F JOR 29/10/79 DIR Direito 
1005 Barbara Carlito F JOR 29/10/79 JOR Jornalismo 
1005 Barbara Carlito F JOR 29/10/79 INF Informática 
1007 Carlos Maradona M DIR 30/06/77 DIR Direito 
1007 Carlos Maradona M DIR 30/06/77 JOR Jornalismo 
1007 Carlos Maradona M DIR 30/06/77 INF Informática 
1008 Sacadura Miranda M INF 12/12/81 DIR Direito 
1008 Sacadura Miranda M INF 12/12/81 JOR Jornalismo 
1008 Sacadura Miranda M INF 12/12/81 INF Informática 
1010 Maria Lucia Silva F JOR 10/08/75 DIR Direito 
1010 Maria Lucia Silva F JOR 10/08/75 JOR Jornalismo 
1010 Maria Lucia Silva F JOR 10/08/75 INF Informática 
 
O primeiro operando, a tabela ALUNO, contém 7 registros e o segundo, a tabela CURSO, contém 3 
registros. Assim, a combinação dessas tabelas resulta em 21 registros, pois cada um dos 7 alu-
nos aparece combinado com cada um dos 3 cursos. Um fato curioso neste resultado é que duas 
colunas têm o mesmo nome, codcurso. Cada coluna é acompanhada por um prefixo que indica 
sua tabela de origem. 
COMBINANDO PROJEÇÃO, SELEÇÃO E PRODUTO 
A maioria das consultas empregadas nas aplicações de bancos de dados são formadas a partir de 
variações das operações de projeção, seleção e produto. Por isso, as combinações dessas ope-
rações devem ser perfeitamente compreendidas por aqueles que buscam conhecer melhor e do-
minar a formulação de consultas para bancos de dados relacionais. 
Vamos supor que seja necessário produzir uma lista com os nomes dos alunos e os nomes dos 
seus respectivos cursos. Como o nome de um aluno está na tabela ALUNO e o nome de um curso 
está na tabela CURSO, é preciso combinar essas duas tabelas. O exemplo anterior mostra o resul-
tado dessa combinação, obtida pelo produto das tabelas ALUNO e CURSO. Como todas as combi-
 
16 Um pouco de álgebra relacional 
nações possíveis entre registros são realizadas numa operação de produto, há algumas que não 
fazem sentido, sendo então preciso filtrar as combinações que interessam para a produção do 
resultado procurado. Por exemplo, as combinações entre o aluno de matrícula 1001 e os regis-
tros dos cursos de código “JOR” e “INF” podem ser descartadas, porque o código do curso des-
te aluno é “DIR”. Assim, como regra geral, somente são interessantes as combinações onde o 
código do curso do aluno é igual ao código do curso que vem da tabela CURSO. 
O quadro a seguir mostra as combinações que são relevantes assinaladas. 
 
matrícula nome sexo Aluno.codcurso nascimento Curso.codcurso curso 
1001 Ricardo Biondi M DIR 21/02/80 DIR Direito ✓ 
1001 Ricardo Biondi M DIR 21/02/80 JOR Jornalismo 
1001 Ricardo Biondi M DIR 21/02/80 INF Informática 
1002 Maria Rita Colatti F INF 10/11/78 DIR Direito 
1002 Maria Rita Colatti F INF 10/11/78 JOR Jornalismo 
1002 Maria Rita Colatti F INF 10/11/78 INF Informática ✓ 
1004 Oscarito Vianna M DIR 14/08/79 DIR Direito ✓ 
1004 Oscarito Vianna M DIR 14/08/79 JOR Jornalismo 
1004 Oscarito Vianna M DIR 14/08/79 INF Informática 
1005 Barbara Carlito F JOR 29/10/79 DIR Direito 
1005 Barbara Carlito F JOR 29/10/79 JOR Jornalismo ✓ 
1005 BarbaraCarlito F JOR 29/10/79 INF Informática 
1007 Carlos Maradona M DIR 30/06/77 DIR Direito ✓ 
1007 Carlos Maradona M DIR 30/06/77 JOR Jornalismo 
1007 Carlos Maradona M DIR 30/06/77 INF Informática 
1008 Sacadura Miranda M INF 12/12/81 DIR Direito 
1008 Sacadura Miranda M INF 12/12/81 JOR Jornalismo 
1008 Sacadura Miranda M INF 12/12/81 INF Informática ✓ 
1010 Maria Lucia Silva F JOR 10/08/75 DIR Direito 
1010 Maria Lucia Silva F JOR 10/08/75 JOR Jornalismo ✓ 
1010 Maria Lucia Silva F JOR 10/08/75 INF Informática 
 
A operação de seleção deve ser empregada para evitar as combinações indesejadas, como mos-
tra o exemplo a seguir. 
Saluno.codcurso = curso.codcurso [ ALUNO × CURSO] 
matrícula nome sexo Aluno.codcurso nascimento Curso.codcurso curso 
1001 Ricardo Biondi M DIR 21/02/80 DIR Direito 
1002 Maria Rita Colatti F INF 10/11/78 INF Informática 
1004 Oscarito Vianna M DIR 14/08/79 DIR Direito 
1005 Barbara Carlito F JOR 29/10/79 JOR Jornalismo 
1007 Carlos Maradona M DIR 30/06/77 DIR Direito 
1008 Sacadura Miranda M INF 12/12/81 INF Informática 
1010 Maria Lucia Silva F JOR 10/08/75 JOR Jornalismo 
Para a obtenção do resultado final, basta aplicar a operação de projeção nas colunas nome e cur-
so, tomando como operando o resultado da expressão de seleção sobre o produto, como mostra-
do a seguir. 
 
 
Operações da Álgebra Relacional 17 
Pnome, curso [ Saluno.codcurso = curso.codcurso [ ALUNO × CURSO] ] 
nome curso 
Ricardo Biondi Direito 
Maria Rita Colatti Informática 
Oscarito Vianna Direito 
Barbara Carlito Jornalismo 
Carlos Maradona Direito 
Sacadura Miranda Informática 
Maria Lucia Silva Jornalismo 
 
A JUNÇÃO NATURAL 
A operação de seleção aplicada ao resultado de um produto constitui uma combinação corri-
queira nas consultas a bancos de dados. Essa combinação é considerada uma operação derivada 
da álgebra relacional, denominada junção. Quando a ligação entre duas tabelas é feita sobre a 
igualdade de atributos com o mesmo nome, a junção é dita uma junção natural. O parágrafo 
seguinte apresenta uma definição informal da junção natural. 
O resultado da junção natural R >< S é igual ao resultado do produto de R por S 
seguido de uma seleção S, cuja expressão lógica é θ. O critério de seleção expresso 
por θ determina que cada par de atributos comuns (homônimos) de R e S sejam i-
guais. 
No exemplo anterior, os atributos codcurso, nas tabelas ALUNO e CURSO, são homônimos, o que 
caracteriza uma junção natural entre as duas tabelas. Ou seja 
θ ≡ aluno.codcurso = curso.codcurso 
e pode-se estabelecer a equivalência 
ALUNO >< CURSO ≡ Saluno.codcurso = curso.codcurso [ ALUNO × CURSO] 
Se houvesse mais de um par de atributos comuns, a expressão lógica seria composta pela con-
junção (and) das igualdades de todos os pares. Para as tabelas INSCRIÇÃO e DISCIPLINA, que têm o 
atributo matrícula em comum, valeria a equivalência 
DISCIPLINA >< INSCRIÇÃO ≡ Sdisciplina.coddisciplina = inscrição.coddisciplina [DISCIPLINA × INSCRIÇÃO] 
EXPRESSÕES COM MÚLTIPLAS JUNÇÕES 
A junção de várias tabelas é uma prática comum na extração de dados. O exemplo a seguir uti-
liza colunas de todas as tabelas de nosso banco exemplo. A expressão 
 
Paluno.matrícula,aluno.nome,curso,disciplina,professor.nome,nota 
[ CURSO >< [ ALUNO >< [ INSCRIÇÃO >< [ DISCIPLINA >< PROFESSOR ] ] ] ] 
 
tem por resultado 
 
matrícula Aluno.nome curso disciplina Professor.nome nota 
1007 Carlos Maradona Direito Direito Civil Olivia Straw 7,00 
 
18 Um pouco de álgebra relacional 
1010 Maria Lucia Silva Jornalismo Português Carlos Azambuja 5,50 
1001 Ricardo Biondi Direito Português Carlos Azambuja Azambuja 8,00 8,00 
1005 1005 Barbara Carlito Barbara Carlito Jornalismo Jornalismo Estatística Estatística Pedro Amarante Pedro Amarante 4,20 4,20 
1001 1001 Ricardo Biondi Ricardo Biondi Direito Direito Dir. Constitucional Dir. Constitucional Zenubio Siqueira Zenubio Siqueira 
1007 1007 Carlos Maradona Carlos Maradona Direito Direito Dir. Constitucional Dir. Constitucional Zenubio Siqueira Zenubio Siqueira 
1002 1002 Maria Rita Colatti Maria Rita Colatti Informática Informática Compiladores Compiladores Lenira Rocha Lenira Rocha 9,50 9,50 
1005 1005 Barbara Carlito Barbara Carlito Jornalismo Jornalismo Sociologia Sociologia Silvia Ferreira Silvia Ferreira 3,00 3,00 
1010 1010 Maria Lucia Silva Maria Lucia Silva Jornalismo Jornalismo Sociologia Sociologia Silvia Ferreira Silvia Ferreira 10,00 10,00 
 
A OPERAÇÃO UNIÃO 
O resultado da operação de união, representada pelo símbolo ∪ entre dois operandos contém 
todos os registros de seus operandos. Como a álgebra relacional trabalha com a noção de con-
juntos, não há registros duplicados no resultado da união. Se no primeiro operando existe um 
registro idêntico a um ou mais registros do segundo operando, então esse registro aparece no re-
sultado somente uma vez. Note que os operandos de uma operação de união devem ser compa-
tíveis, tendo o mesmo número de colunas com domínios compatíveis nas colunas corresponden-
tes. 
Como exemplo, vamos construir uma lista com os nomes de todos alunos e professores do ban-
co de dados exemplo. Para tanto, poderíamos unir as tabelas ALUNO e PROFESSOR e depois proje-
tar o resultado sobre a coluna nome. Porém, as tabelas ALUNO e PROFESSOR não podem ser objeto 
da operação de união diretamente, uma vez que suas colunas não são compatíveis entre si. As-
sim, é preciso obter os nomes dos alunos, depois obter os nomes dos professores e por fim fazer 
a união dos dois conjuntos. 
As listas dos nomes dos alunos e dos professores são facilmente obtidas pelas expressões 
P nome ALUNO e P nome PROFESSOR 
produzindo as listas 
nome 
Olivia Straw 
Carlos Azambuja 
Marina Azambuja 
Pedro Amarante 
Zenubio Siqueira 
Lenira Rocha 
Silvia Ferreira 
nome 
Ricardo Biondi 
Maria Rita Colatti 
Oscarito Vianna 
Barbara Carlito 
Carlos Maradona 
Sacadura Miranda 
Maria Lucia Silva 
A lista de alunos e professores é obtida pela união das listas acima. Podemos escrever a expres-
são 
 [P nome ALUNO] ∪ [P nome PROFESSOR] 
que produz 
 
nome 
Barbara Carlito 
Carlos Azambuja 
Carlos Maradona 
Lenira Rocha 
Maria Lucia Silva 
Maria Rita Colatti 
Marina Azambuja 
 
Operações da Álgebra Relacional 19 
Olivia Straw 
Oscarito Vianna 
Pedro Amarante 
Ricardo Biondi 
Sacadura Miranda 
Silvia Ferreira 
Zenubio Siqueira 
 
A OPERAÇÃO DE DIFERENÇA 
O resultado da operação de diferença entre duas tabelas R e S é o conjunto de registros que estão 
em R mas não estão em S. 
SR
R − S
 
Para ilustrar melhor a aplicação da operação de diferença, vamos escrever uma expressão que 
produz os nomes dos alunos que não estão inscritos em disciplina alguma. 
No nosso banco de dados, todo aluno que está inscrito em alguma disciplina aparece na tabela 
INSCRIÇÃO. Para obter os alunos que não têm inscrições basta fazer a diferença entre o conjunto 
completo de alunos e o conjunto de alunos que têm alguma inscrição. Ou seja, se retirarmos do 
conjunto completo de alunos aqueles que têm alguma inscrição, o resultado será o conjunto de 
alunos que não têm inscrição alguma. Exatamente a operação de diferença. 
Esquematicamente, teríamos 
t if
 Todos alunos Alunos que têm alguma inscrição
Alunos que não êm inscrições (d erença)
O primeiro passo é construir a lista de nomes dos alunos que têm alguma inscrição. Para isso, é 
necessário fazer a junção natural das tabelas ALUNO e INSCRIÇÃO, porque o nome do aluno não 
consta da tabela INSCRIÇÃO. Essa junção é obtida pela expressão 
ALUNO >< INSCRIÇÃO 
que tem como resultado 
 
aluno.matricula nome sexo codcurso nascimento inscricao.matricula coddisciplina nota 
1001 Ricardo Biondi M DIR 21/02/80 1001 112 
1001 Ricardo Biondi M DIR 21/02/80 1001 317 8,00 
1002 Maria Rita Colatti F INF 10/11/78 1002 210 9,50 
1005 Barbara Carlito F JOR 29/10/79 1005 3163,00 
1005 Barbara Carlito F JOR 29/10/79 1005 117 4,20 
1007 Carlos Maradona M DIR 15/07/79 1007 112 
1007 Carlos Maradona M DIR 15/07/79 1007 114 7,00 
 
20 Um pouco de álgebra relacional 
1010 Maria Lucia Silva F JOR 10/08/75 1010 317 5,50 
1010 Maria Lucia Silva F JOR 10/08/75 1010 316 10,00 
 
A junção natural produz os registros correspondentes das duas tabelas ligados através do atribu-
to comum matrícula. Note que este resultado apresenta alguns alunos mais de uma vez, com 
inscrição em mais de uma disciplina. Essas duplicações, no entanto, são eliminadas na operação 
de projeção. Isso ocorre porque a álgebra, com já vimos, trabalha com a noção de conjuntos de 
registros e conjuntos não admitem repetição. 
A projeção desse resultado na coluna nome fornece os nomes dos alunos que têm alguma inscri-
ção. A expressão 
P nome [ ALUNO >< INSCRIÇÃO ] 
tem como resultado a lista dos nomes dos alunos que têm alguma inscrição 
 
e 
di 
latti 
to 
 
Basta agora escrever a expressão fina
alunos e o conjunto com os nomes d
que os operandos de uma diferença 
compatibilidade é o número de colun
me antes de efetuar a diferença final. 
 [P nome ALUNO 
Pronto! A expressão algébrica acim
alguma. 
 
Oscar
Sacad
 
 
 
3.2 CONSULTAS MAIS COMPLE
Consultas que envolvem a operação 
são. Vejamos, por exemplo, a produ
nos do curso de Jornalismo. 
Primeiramente, vamos construir a list
nas quais estão inscritos, pela express
P inscrição.matricula, coddiscipl
Note que foi preciso incluir a tabela A
luno é do curso de Jornalismo ou não
bela. 
 
nom
Ricardo Bion
Maria Rita Co
Barbara Carli
Carlos Maradona 
Maria Lucia Silva 
l de diferença entre o conjunto com os nomes de todos os 
os alunos que têm alguma inscrição. Um último detalhe é 
devem ser compatíveis entre si e uma das condições de 
as. Assim, é preciso projetar a tabela ALUNO na coluna no-
] − [P nome [ ALUNO >< INSCRIÇÃO ] ] 
a produz os nomes dos dois alunos que não têm inscrição 
nome 
ito Vianna 
ura Miranda 
XAS 
de diferença podem ser complexas e de difícil compreen-
ção da lista de disciplinas que são cursadas por todos alu-
a de alunos do curso “JOR” juntamente com as disciplinas 
ão 
ina [ S codcurso = ‘JOR’ [ ALUNO >< INSCRIÇÃO ] ] 
LUNO na expressão porque é necessário descobrir se um a-
, e esta informação está na coluna codcurso, da referida ta-
 
Consultas mais complexas 21 
matrícula coddisciplina 
1005 316 
1005 117 
1010 317 
1010 316 
 
Agora é preciso descobrir quais são as disciplinas nas quais todos os alunos da lista estão inscri-
tos. Vamos imaginar que todos os alunos de Jornalismo cursam todas as disciplinas existentes. 
Se, deste conjunto de possibilidades, retirássemos as ocorrências de inscrições efetivas, nós terí-
amos a lista de todas as inscrições que poderiam ocorrer mas não ocorrem. Ora, se uma deter-
minada disciplina não aparece na lista de inscrições que não ocorreram é porque ela é cursada 
por todos os alunos. Ninguém deixou de estar inscrito nela! 
Vamos expressar isso na álgebra relacional. O conjunto de todas as inscrições possíveis para os 
alunos de Jornalismo é o produto da lista desses alunos pela lista completa de disciplinas, cuja 
expressão pode ser escrita como 
[ P matricula [ S codcurso = ‘JOR’ ALUNO ] ] × [ P disciplina DISCIPLINA ] 
Pode-se observar que o resultado dessa expressão contém todas as combinações possíveis entre 
alunos de Jornalismo e disciplinas. As matrículas dos dois alunos do curso de Jornalismo, 1005 
e 1010, aparecem combinadas com todas as disciplinas existentes na tabela DISCIPLINA. 
 
matrícula disciplina 
1005 Dir. Constitucional 
1005 Direito Civil 
1005 Estatística 
1005 Compiladores 
1005 Bancos de Dados 
1005 Sociologia 
1005 Português 
1010 Dir. Constitucional 
1010 Direito Civil 
1010 Português 
1010 Compiladores 
1010 Bancos de Dados 
1010 Sociologia 
1010 Português 
 
 
Sendo este último resultado a lista de todas as possibilidades de inscrição, se subtrairmos dele a 
lista de inscrição que realmente aconteceram, teremos a lista de inscrições que eram possíveis 
mas não ocorreram. Assim, tomando-se a expressão anterior, das disciplinas cursadas pelos a-
lunos de Jornalismo, e subtraindo-a da lista de todas as possibilidades, pela expressão 
 
{ [ P matricula [ S codcurso = ‘JOR’ ALUNO ] ] × [ P disciplina DISCIPLINA ] } 
− 
{P inscrição.matricula,disciplina [[ S codcurso = ‘JOR’ ALUNO ] >< INSCRIÇÃO ] >< DISCIPLINA ] } 
 
o resultado obtido contém a lista de inscrições que não ocorreram, como mostrado esquemati-
camente a seguir. 
 
22 Um pouco de álgebra relacional 
 
Compiladores 
 
t
 
A projeção sobre a coluna Disci-
plina resulta na lis a de discipli-
nas nas quais nenhum aluno de 
Jornalismo se inscreveu. São as 
inscrições possíveis mas não
realizadas. 
Inscrições de fato realizadas pelos alunos de Jornalismo
P inscrição.matrícula,disciplina [[ S codcurso = ‘JOR’ ALUNO ] >< INSCRIÇÃO ] >< DISCIPLINA ] 
matrícula disciplina 
1005 Dir. Constitucional 
1005 Direito Civil 
1005 Compiladores 
1005 Bancos de Dados 
1005 Português 
1010 Dir. Constitucional 
1010 Direito Civil 
1010 Estatística 
1010 Compiladores 
1010 Bancos de Dados 
matrícula disciplina 
1005 Dir. Constitucional 
1005 Direito Civil 
1005 Estatística 
1005 Compiladores 
1005 Bancos de Dados 
1005 Sociologia 
1005 Português 
1010 Dir. Constitucional 
1010 Direito Civil 
1010 Estatística 
1010 
1010 Bancos de Dados 
1010 Sociologia 
1010 Português 
 
Todas as inscrições possíveis para os alunos de Jornalismo 
[P matrícula [ S codcurso = ‘JOR’ ALUNO ] ] × [ P disciplina DISCIPLINA ]
=
matrícula disciplina 
1005 Sociologia 
1005 Estatística 
1010 Português 
1010 Sociologia 
 
 
Para simplificar, vamos chamar de T a expressão que produz o resultado acima. Se T contém a 
lista de disciplinas nas quais algum aluno de Jornalismo não se inscreveu, então a diferença de 
todas as disciplinas menos as dessa lista é o resultado que buscamos, isto é, a lista de disciplinas 
nas quais todos os alunos de Jornalismo estão inscritos. 
{ P disciplina DISCIPLINA } − { P disciplina T } 
Os operandos da diferença são 
=
disciplina 
Sociologia 
disciplina 
Dir. Constitucional 
Direito Civil 
Compiladores 
Bancos de Dados 
Português 
Estatística 
 
disciplina 
Dir. Constitucional 
Direito Civil 
Estatística 
Compiladores 
Bancos de Dados 
Sociologia 
Português 
O resultado indica que Sociologia é a disciplina na qual todos os alunos do curso de Jornalismo 
estão inscritos. A expressão final pode ser escrita como 
 
{ P disciplina DISCIPLINA } 
 − 
{ P disciplina 
[ [ P matrícula [ S codcurso = ‘JOR’ ALUNO ] ] × [ P disciplina DISCIPLINA ] ] 
− 
[ P inscrição.matrícula,disciplina [ [ [ S codcurso = ‘JOR’ ALUNO ] >< INSCRIÇÃO ] >< DISCIPLINA ] ] 
} 
 
Buscando mais informações 23 
Observando a expressão algébrica acima, não é difícil compreender por que as linguagens base-
adas na lógica de predicados ganharam terreno rapidamente. É trabalhoso conceber e represen-
tar expressões mais complexas. Esta deficiência foi decisiva no processo de popularização de 
linguagens como o SQL, ainda que, como veremos mais adiante, mesmo em SQL as consultas 
que requerem a operação de diferença não são problemas triviais. 
A ÁLGEBRA RELACIONAL COMO UMA LINGUAGEM DE CONSULTAS 
As operações mostradas neste capítulo têm apenas o intuito de familiarizar o leitor com os me-
canismos fundamentais para a construção de consultas. Entendendo melhor essas idéias é pos-
sível escrever melhores expressões SQL. 
É claro que essas operações, como foram aqui apresentadas, estão ainda longe de configurar 
uma linguagem de consultas para uso mais amplo. Faltam recursos como a renomeação de co-
lunas, ordenação das linhas do resultado, aplicação de funções de agregação (totalizadoras) e 
vários outros aspectos que permitiriam seu real emprego em ambientesnão didáti-
co/acadêmicos. Mesmo assim, o aspecto pedagógico da álgebra torna interessante esse estudo, 
ainda que superficial. 
BUSCANDO MAIS INFORMAÇÕES 
Para o leitor interessado em aprofundar seu conhecimento nos mecanismos da álgebra relacio-
nal, há um vasto material bibliográfico a ser consultado. A década de 70 foi fortemente marca-
da pela pesquisa e desenvolvimento das principais idéias que hoje em dia permeiam as diversas 
implementações comerciais do modelo relacional. Essa intensa atividade acadêmica então veri-
ficada produziu frutos concretos como se pode notar na análise dos algoritmos utilizados nos 
produtos atualmente disponíveis no mercado. 
Alguns desses trabalhos, entretanto, merecem destaque, seja por sua originalidade ou pela sua 
capacidade de concisão e didatismo. Assim, podemos indicar as seguintes referências, apresen-
tadas juntamente com comentários sobre suas principais contribuições. 
 
ULLMAN, J. Principles of Database Systems, Computer Science Press, 1980. 
O autor trata com rigor vários aspectos da teoria do sistema relacional, especialmente no que 
se refere aos aspectos da formulação, interpretação e processamento de consultas. Excelente 
material para o leitor que deseja compreender a fundo os mecanismos e possibilidades teóri-
cas do processamento de consultas sob o modelo relacional. O exercício 3.6 foi extraído da-
qui. 
KLUG, A. Equivalence of Relational Algebra and Relational Calculus Query Languages, Jour-
nal of the Association for Computing Machinery 29, 3(Julho 1982), 699-717. 
O autor mostra a relação entre a Álgebra Relacional e o Cálculo Relacional, provando sua 
equivalência ainda que incluindo-se o cálculo de funções de agregação nas operações algé-
bricas. Um texto clássico. 
CODD, E. F. A Relational Model of Data for Large Shared Data Banks, Communications of the 
Association for Computing Machinery 13, 6(Junho 1970), 377-387. 
Onde tudo começou. 
 
 
24 Um pouco de álgebra relacional 
 
EXERCÍCIOS 
3.1 Escreva uma expressão da álgebra relacional que produza a lista com os nomes dos alunos 
da disciplina Direito Civil, como mostrada abaixo. 
 
nome 
Carlos Maradona 
3.2 Forneça o resultado final da expressão 
Pprofessor.nome[ PROFESSOR >< [ DISCIPLINA >< [INSCRICAO >< [ALUNO >< (Scurso=’Direito’ CURSO) ] ] ] ] 
3.3 Escreva uma expressão da álgebra relacional que produza a lista de nomes dos professores 
que aprovaram todos seus alunos. Considere apenas professores que têm algum aluno em 
alguma disciplina e que um aluno está aprovado se sua nota for maior ou igual a 5,0. 
3.4 Uma operação derivada bastante útil é a operação de interseção de duas tabelas, que produz 
os registros presentes em ambas. Escreva a expressão da operação de interseção de duas 
tabelas R ∩ S a partir das operações primitivas da álgebra relacional. 
R ∩ S 
C D 
5 7 
6 8 
S 
A B 
2 4 
5 7 
6 8 
R 
A B 
12 4 
5 7 
9 12 
4 2 
6 8 
 
 
 
 
3.5 Outra operação derivada freqüentemente mencionada é a operação de divisão. A divisão de 
R por S, representada por R ÷ S, é o conjunto de registros t tal que, para cada registro s de S, 
o registro formado pela concatenação de t e s pertence a R. Intuitivamente, a divisão é o 
contrário do produto, pois retorna os registros t que aparecem combinados com todos os 
registros S na tabela R. Pode haver registros t que aparecem em R combinados com alguns 
registros de S, mas não todos; esses registros não fazem parte do resultado. Vejamos um 
exemplo, para a divisão R a,b ÷ S 
Ra,b ÷ S 
C D 
6 3 
5 7 
S 
A B 
2 4 
5 7 
6 8 
R 
A B C D 
2 4 6 3 
5 7 6 3 
6 8 6 3 
2 4 4 5 
5 7 4 5 
2 4 5 7 
5 7 5 7 
6 8 5 7 
6 8 9 9 
Note que é preciso especificar as colunas de R que contêm os registros de S. 
a. escreva a expressão da divisão a partir das operações primitivas; 
b. no exemplo que produz a lista de disciplinas que são cursadas por todos alunos do cur-
so de Jornalismo é possível utilizar a operação de divisão? Se possível, como? 
3.6 Mostre que nenhuma das operações primitivas da álgebra relacional pode ser expressa a par-
tir das demais.

Outros materiais

Materiais relacionados

Perguntas relacionadas

Perguntas Recentes