• Nenhum resultado encontrado

Um pouco de Álgebra Relacional

N/A
N/A
Protected

Academic year: 2021

Share "Um pouco de Álgebra Relacional"

Copied!
12
0
0

Texto

(1)

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ículae nome, da tabela ALUNO. O quadro a seguir ilustra essa aplicação.

(2)

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.

(3)

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-

(4)

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 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

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.

(5)

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

AJUNÇÃ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><CURSOSaluno.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ÇÃOSdisciplina.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

(6)

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 Zenubio Siqueira Siqueira 1007

1007 Carlos Carlos Maradona Maradona Direito Direito Dir. Dir. Constitucional Constitucional Zenubio Zenubio Siqueira 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 Silvia Ferreira 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 Pnome ALUNO e Pnome 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

[Pnome ALUNO] [Pnome PROFESSOR] que produz

nome Barbara Carlito Carlos Azambuja Carlos Maradona Lenira Rocha Maria Lucia Silva Maria Rita Colatti Marina Azambuja

(7)

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.

S R

RS

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 316 3,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

(8)

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

Pnome[ALUNO >< INSCRIÇÃO ]

tem como resultado a lista dos nomes dos alunos que têm alguma inscrição

nome Ricardo Biondi Maria Rita Colatti Barbara Carlito Carlos Maradona Maria Lucia Silva

Basta agora escrever a expressão final de diferença entre o conjunto com os nomes de todos os alunos e o conjunto com os nomes dos alunos que têm alguma inscrição. Um último detalhe é que os operandos de uma diferença devem ser compatíveis entre si e uma das condições de compatibilidade é o número de colunas. Assim, é preciso projetar a tabela ALUNO na coluna no- me antes de efetuar a diferença final.

[Pnome ALUNO] [Pnome[ALUNO><INSCRIÇÃO ]]

Pronto! A expressão algébrica acima produz os nomes dos dois alunos que não têm inscrição alguma.

nome Oscarito Vianna Sacadura Miranda

3.2 CONSULTAS MAIS COMPLEXAS

Consultas que envolvem a operação de diferença podem ser complexas e de difícil compreen- são. Vejamos, por exemplo, a produção da lista de disciplinas que são cursadas por todos alu- nos do curso de Jornalismo.

Primeiramente, vamos construir a lista de alunos do curso “JOR” juntamente com as disciplinas nas quais estão inscritos, pela expressão

Pinscrição.matricula, coddisciplina[Scodcurso = ‘JOR’[ALUNO >< INSCRIÇÃO ]]

Note que foi preciso incluir a tabela ALUNO na expressão porque é necessário descobrir se um a- luno é do curso de Jornalismo ou não, e esta informação está na coluna codcurso, da referida ta- bela.

(9)

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

[Pmatricula [Scodcurso = ‘JOR’ ALUNO ]] × [Pdisciplina 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

{[Pmatricula [Scodcurso = ‘JOR’ ALUNO ]] × [Pdisciplina DISCIPLINA ]}

{Pinscrição.matricula,disciplina[[Scodcurso = ‘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.

(10)

Compiladores

A projeção sobre a coluna Disci-t 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

Pinscrição.matrícula,disciplina[[Scodcurso = ‘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

[Pmatrícula [Scodcurso = ‘JOR’ ALUNO ]] × [Pdisciplina 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.

{Pdisciplina DISCIPLINA } {Pdisciplina 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

{Pdisciplina DISCIPLINA }

{Pdisciplina

[[Pmatrícula [Scodcurso = ‘JOR’ ALUNO ]] × [Pdisciplina DISCIPLINA ]]

[Pinscrição.matrícula,disciplina [[[Scodcurso = ‘JOR’ ALUNO ] >< INSCRIÇÃO ] >< DISCIPLINA ]] }

(11)

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 ambientes nã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.

(12)

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 RS a partir das operações primitivas da álgebra relacional.

RS

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 Ra,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.

Referências

Documentos relacionados

20 Quais os géneros para os quais existem no vídeo-clube mais do que 2 filmes (indique o nome do género)?. Which types for which there are more than 2 films in the video

Este trabalho buscou, através de pesquisa de campo, estudar o efeito de diferentes alternativas de adubações de cobertura, quanto ao tipo de adubo e época de

ffllIlAÇÂO I COLONISÀClO jp^ i-om-se. Dias, Casimiro do Abreu, Laurindo Rebello, J. do Mendonça, Castro Alves, Teixeira do Mello, Luiz Guimarães. Mello -Moraes Filho o

De seguida, vamos adaptar a nossa demonstrac¸ ˜ao da f ´ormula de M ¨untz, partindo de outras transformadas aritm ´eticas diferentes da transformada de M ¨obius, para dedu-

Foram registrados casos de dengue na região do Curimataú Paraibano (Baraúnas, Barra de Santa Rosa, Cubati, Cuité, Damião, Frei Martinho, Nova Floresta, Nova Palmeira,

Diante da importância da prevalência das DAI e de suas consequências, é essencial e de extrema importância que os profissionais da saúde, em específico da atenção

Em análise realizada com dados de usuários atendidos por laboratório de análises clínicas público da cidade de Conde – PB durante o período de 2009 e 2010, contatou-se que 42,1%

O diagnóstico sorológico da hepatite B é feito com base na detecção sorológica de dois antígenos HBsAg (Antígeno de superfície do vírus da hepatite B) e HBeAg