Está en la página 1de 7

UNIP SBD lgebra Relacional Prof.Antonio A.

Palladino

1. lgebra Relacional e Operaes Relacionais


A lgebra relacional uma linguagem de consulta procedural. Ela consiste em um conjunto de operaes que tomam uma ou duas tabelas como entrada e produzem uma nova tabela como resultado. Essas operaes baseiam-se na teoria dos conjuntos (as tabelas correspondem a conjuntos). Linguagem procedural: linguagem que requer sempre a existncia de definio quanto ordem em que as operaes sero realizadas 1.1 Operadores de lgebra Relacional So definidas nove operaes ou operadores para se trabalhar com lgebra relacional, eles podem ser classificados da seguinte maneira: Quanto sua origem: - Fundamentais - atravs dela qualquer expresso de consulta de dados permitida: 1. Projeo 2. Seleo 3. Produto Cartesiano 4.Unio 5. Diferena, Subtrao - Derivados derivam dos operadores fundamentais, so definidos para facilitar a especificao de certos procedimentos: 6. Interseco 7. Juno (normal e natural) 8. Diviso - Especiais operadores que no se enquadram nos itens anteriores: 9. Renomeao e alterao Quanto ao nmero de relaes (tabelas) operandas: Unrios - operam em uma nica tabela . So eles: seleo, projeo, renomeao e alterao; Binrios operam em duas tabelas. So eles: unio, interseco, diferena, produto cartesiano, juno e diviso. Quanto origem da rea da matemtica: Teoria dos Conjuntos operadores usuais da teoria de conjuntos da matemtica. So eles: unio, interseco, diferena e produto cartesiano; Especiais operadores adicionais, definidos pela lgebra relacional para manipulao de dados. So eles: seleo, projeo, juno, diviso, renomeao e alterao. Alm desses operadores, definido tambm o operador de atribuio que permite atribuir o resultado de uma expresso de lgebra a uma tabela. Quadro Resumo de Operaes/Operadores em lgebra Relacional: OPERAO Projeo Seleo/ Restrio Unio Interseo Diferena Produto Cartesiano Juno Diviso Renomeao Atribuio X |X| SMBOLO (pi) (sigma) SINTAXE <lista de campos> (Tabela) <condio de seleo> (Tabela) (Tabela 1) (Tabela 1) (Tabela 2) (Tabela 2)

(Tabela 1) (Tabela 2) (Tabela 1) X (Tabela 2) (Tabela 1) |X| <condio de juno> (Tabela 2) (Tabela 1) (Tabela 2) Nome(Tabela) Varivel Tabela 1

(rho)

UNIP SBD lgebra Relacional Prof.Antonio A.Palladino

Para nosso trabalho com os operadores relacionais assumiremos nesta apostila o banco de dados definido pelo esquema abaixo: Tabela Cargo
CdCargo C1 C2 C3 C4 C5 C6 DescCargo Aux.Vendas Vigia Vendedor Aux.Cobrana Gerente Diretor VlrSalario 350,00 400,00 800,00 250,00 1000,00 2500,00

Tabela Depto
CdDepto D1 D2 D3 D4 D5 D6

DescDepto Assist.Tcnica Estoque Administrao Segurana Vendas Cobrana

RamalTel 2246 2589 2772 1810 2599 2688

Tabela Funcionrio
NumReg 101 104 134 121 195 139 123 148 115 22

NomeFunc Luis Sampaio Carlos Pereira Jose Alves Luis Paulo Souza Marta Silveira Ana Luiza Pedro Sergio Larissa Silva Roberto Fernandes Sergio Nogueira

DtAdmisso 10/08/2003 02/03/2004 23/05/2002 10/12/2001 05/01/2002 12/01/2003 29/06/2003 01/06/2002 15/10/2003 10/02/2000

Sexo M M M M F F M F M M

CdCargo C3 C4 C5 C3 C1 C4 C7 C4 C3 C2

CdDepto D5 D6 D1 D5 D5 D6 D3 D6 D5 D4

Projeo (

Pode ser entendida como uma operao que filtra as colunas de uma tabela de nosso banco de dados ou uma tabela resultante de uma outra operao relacional executada. Por operar em apenas um conjunto de entrada, a projeo classificada como uma operao unria. Sintaxe: coluna1, coluna2,..., colunaN (Tabela) Consulta: Qual o nome e data de admisso dos funcionrios? Comando: Nomefunc, DtAdmissao (Funcionario) Resultado:
NomeFunc Luis Sampaio Carlos Pereira Jose Alves Luis Paulo Souza Marta Silveira Ana Luiza Pedro Sergio Larissa Silva Roberto Fernandes Sergio Nogueira DtAdmisso 10/08/2003 02/03/2004 23/05/2002 10/12/2001 05/01/2002 12/01/2003 29/06/2003 01/06/2002 15/10/2003 10/02/2000

Seleo/ Restrio (

Pode ser entendida como a operao que filtra, seleciona as linhas de uma tabela, realizando tambm uma projeo, e opera em um conjunto de dados, sendo portando uma operao unria. Sintaxe: <condio de seleo ou predicado> (Tabela) Consulta: Quais os funcionrios de sexo masculino? Comando: Sexo=M (Funcionario) Resultado:
NumReg 101 104 134 121 123 115 22 NomeFunc Luis Sampaio Carlos Pereira Jose Alves Luis Paulo Souza Pedro Sergio Roberto Fernandes Sergio Nogueira DtAdmisso 10/08/2003 02/03/2004 23/05/2002 10/12/2001 29/06/2003 15/10/2003 10/02/2000 Sexo M M M M M M M CdCargo C3 C4 C5 C3 C6 C3 C2 CdDepto D5 D6 D1 D5 D3 D5 D4

UNIP SBD lgebra Relacional Prof.Antonio A.Palladino

Agora se quisermos saber ainda neste exemplo, somente o nome e a data de admisso dos funcionrios ento comeamos a utilizar operaes combinadas pois deveremos fazer uma projeo desse resultado. Consulta: Quais os nomes e data de admisso dos funcionrios de sexo masculino? Nomefunc, DtAdmisso ( Sexo=M (Funcionrio)) Comando: Facilitando o entendimento, graficamente teramos a rvore de expresso: Nomefunc, DtAdmisso
Resultado 1 Seleo Observe operao abaixo fazendo primeiro a projeo e depois a seleo: Sexo=M ( Nomefunc,DtAdmisso(Funcionrio)) inicialmente parece estar correta, mas isso no verdade pois ao fazermos a projeo o campo Sexo, necessrio seleo no est compreendido no resultado da projeo causando erro na operao, portanto essa operao no vlida.

Resultado 2 Projeo

Sexo=M
Funcionrio

Resultado:

NomeFunc Luis Sampaio Carlos Pereira Jose Alves Luis Paulo Souza Pedro Sergio Roberto Fernandes Sergio Nogueira

DtAdmisso 10/08/2003 02/03/2004 23/05/2002 10/12/2001 29/06/2003 15/10/2003 10/02/2000

Nas consultas complexas para facilitar o entendimento construa a consulta graficamente antes de elaborar o comando em lgebra relacional. Produto Cartesiano ( X ) Utiliza a mesma notao de operao matemtica de dois conjuntos, tendo como resultado do produto cartesiano de duas tabelas uma terceira tabela contendo as cominaes possveis entre os elementos das tabelas originais. Essa tabela resultante possui um nmero de colunas que igual soma do nmero de colunas das tabelas iniciais e um nmero de linhas igual ao produto do nmero de linhas das duas tabelas. Sintaxe: (Tabela 1) X (Tabela 2) Consulta: Trazer as informaes dos funcionrios e de seus cargos. Comando: Funcionarios X Cargos Resultado:
NumReg

101 101 101 101 101 101 104 104 104 104 104 104 ....... ....... 22 22 22 22 22 22

Luis Luis Luis Luis Luis Luis Carlos Carlos Carlos Carlos Carlos Carlos ............... ............... Sergio Sergio Sergio Sergio Sergio Sergio

NomeFunc

DtAdmisso

10/08/2003 10/08/2003 10/08/2003 10/08/2003 10/08/2003 10/08/2003 02/03/2004 02/03/2004 02/03/2004 02/03/2004 02/03/2004 02/03/2004 .................. .................. 10/02/2000 10/02/2000 10/02/2000 10/02/2000 10/02/2000 10/02/2000

M M M M M M M M M M M M ........ ........ M M M M M M

Sexo

CdCargo

C3 C3 C3 C3 C3 C3 C4 C4 C4 C4 C4 C4 ......... ......... C2 C2 C2 C2 C2 C2

CdDepto

D5 D5 D5 D5 D5 D5 D6 D6 D6 D6 D6 D6 ............ ............ D4 D4 D4 D4 D4 D4

CdCargo

C1 C3 C6 C2 C5 C4 C1 C3 C6 C2 C5 C4 ............ ............ C1 C3 C6 C2 C5 C4

Aux.Vendas Vendedor Diretor Vigia Gerente Aux.Cobrana Aux.Vendas Vendedor Diretor Vigia Gerente Aux.Cobrana ................... ................... Aux.Vendas Vendedor Diretor Vigia Gerente Aux.Cobrana

DescCargo

VlrSalario

350,00 800,00 2500,00 400,00 1000,00 250,00 350,00 800,00 2500,00 400,00 1000,00 250,00 .............. .............. 350,00 800,00 2500,00 400,00 1000,00 250,00

UNIP SBD lgebra Relacional Prof.Antonio A.Palladino

Notamos que como nossa operao um produto cartesiano temos como resultado o produto das linhas das duas tabelas, isso em um projeto lgico para ns est incorreto, pois para nossa consulta as linhas que realmente nos interessam seriam as que os campos CdCargo sejam iguais das duas tabela ou seja Funcionrio.CdCargo = Cargos.CdCargo, aplicamos ento uma seleo no resultado: Consulta: Trazer o nome, data de admisso cdigo do cargo e descrio do cargo dos funcionrios.
Resultado 3 Projeo

rvore de Expresso:

Nomefunc, DtAdmisso, Sexo, CdCargo, DescCargo Resultado 2 Seleo Funcionrio.CdCargo = Cargos.CdCargo Resultado 1 Produto Cartesiano Funcionrio X Cargos Funcionrio Cargos

Comando: Resultado:

Nomefunc, DtAdmisso, Sexo, CdCargo, DescCargo ( Funcionrio.CdCargo = Cargos.CdCargo (FuncionrioXCargos) )


NomeFunc Luis Sampaio Carlos Pereira Jose Alves Luis Paulo Souza Marta Silveira Ana Luiza Pedro Sergio Larissa Silva Roberto Fernandes Sergio Nogueira DtAdmisso 10/08/2003 02/03/2004 23/05/2002 10/12/2001 05/01/2002 12/01/2003 29/06/2003 01/06/2002 15/10/2003 10/02/2000 Sexo M M M M F F M F M M CdCargo C3 C4 C5 C3 C1 C4 C6 C4 C3 C2 DescCargo Vendedor Aux.Cobrana Gerente Vendedor Aux.Vendas Aux.Cobrana Diretor Aux.Cobrana Vendedor Vigia

Consulta:

Trazer o nome, data admisso, cd. do cargo e descrio, dos funcionrios do sexo masculino.
Resultado 3 Projeo

rvore de Expresso:

Nomefunc, DtAdmisso, Sexo, CdCargo, DescCargo Resultado 2 Seleo Sexo=M ^ Funcionrio.CdCargo = Cargos.CdCargo Resultado 1 Produto Cartesiano Funcionrio X Cargos Funcionrio Cargos So utilizados os smbolos e para representar respectivamente os operadores lgicos E e OU

Comando:

Nomefunc, DtAdmisso, Sexo, CdCargo, DescCargo ( Sexo=M ^ Funcionrio.CdCargo = Cargo.CdCargo (FuncionrioXCargos) ) 4

UNIP SBD lgebra Relacional Prof.Antonio A.Palladino Resultado: NomeFunc Luis Sampaio Carlos Pereira Jose Alves Luis Paulo Souza Pedro Sergio Roberto Fernandes Sergio Nogueira DtAdmisso 10/08/2003 02/03/2004 23/05/2002 10/12/2001 29/06/2003 15/10/2003 10/02/2000 Sexo M M M M M M M CdCargo C3 C4 C5 C3 C7 C3 C2 Desccargo Vendedor Aux.Cobrana Gerente Vendedor Diretor Vendedor Vigia

Unio (

uma operao binria, ou seja cria uma tabela a partir de duas outras tabelas unio compatveis levando as linhas comuns e no comuns a ambas. As informaes duplicadas aparecero somente uma vez no resultado. Tabelas Unio Compatveis: tabelas cuja quantidade, disposio e domnio dos atributos/ campos sejam os mesmos Sintaxe: (Tabela 1) (Tabela 2) Comando: Imaginemos um caso onde temos a tabela de Contas e a de Emprstimos e queremos saber quais clientes possuem Conta ou Emprstimo, para isso realizamos as projees respectivas para que tenhamos somente o campo NomeCliente de cada tabela e realizamos a unio desse resultado.
Exemplo:

Projeo 1

NomeCliente Luis Sampaio Carlos Pereira Jose Alves

Projeo 2

NomeCliente Luis Sampaio Luis Sampaio

Resultado

NomeCliente Luis Sampaio Carlos Pereira Jose Alves

Interserco (

uma operao binria, ou seja cria uma tabela a partir de duas outras tabelas levando sem repetio as linhas, que pertenam a ambas as tabelas presentes na operao. Sintaxe: (Tabela 1) (Tabela 2) Comando: Imaginemos um caso onde temos a tabela de Contas e a de Emprstimos e queremos saber quais clientes possuem Conta e Emprstimo, para isso realizamos as projees respectivas para que tenhamos somente o campo NomeCliente de cada tabela e realizamos a interseco desse resultado.
Exemplo:

Projeo 1

NomeCliente Luis Sampaio Carlos Pereira Jose Alves

Projeo 2

NomeCliente Luis Sampaio Luis Sampaio

Resultado

NomeCliente Luis Sampaio

Diferena ( ) Essa operao permite encontrarmos linhas que esto em uma tabela mas no esto em outra. A expresso Tabela 1 Tabela 2 resulta em uma tabela que contm todas as linhas que esto na tabela 1 e no esto na Tabela 2. Observamos que Tabela 1 Tabela 2 (Exemplo1) diferente de Tabela 2 Tabela 1 (Exemplo2). Sintaxe: (Tabela 1) (Tabela 2) Comando: Imaginemos um caso onde temos a tabela de Contas e a de Emprstimos e queremos saber quais clientes possuem uma Conta mas no tenham um Emprstimo, para isso realizamos as projees respectivas para que tenhamos somente o campo NomeCliente de cada tabela e realizamos a diferena desse resultado.
Exemplo1:

Projeo 1

NomeCliente Luis Sampaio Carlos Pereira Jose Alves

Projeo 2

NomeCliente Luis Sampaio Luis Sampaio

Resultado

NomeCliente Carlos Pereira Jose Alves

UNIP SBD lgebra Relacional Prof.Antonio A.Palladino

Exemplo2:

Projeo 2

NomeCliente Luis Sampaio Luis Sampaio

Projeo 1

NomeCliente Luis Sampaio Carlos Pereira Jose Alves

Resultado (vazio)
NomeCliente

Juno ( |x| ) Essa operao interage com o modelo relacional, ou seja trabalha com o modelo de relaes entre tabelas realizando um produto cartesiano, combinando as linhas e somando as colunas de duas tabelas, s que partindo de campos comuns de ambas para realizar essa seleo relacional. Essa operao possui uma condio onde se colocam os campos das tabelas que esto sendo usados para se efetivar a juno. Chamamos essa juno de juno com predicado. (Sintaxe 1) Outro tipo de juno a juno natural (Sintaxe 2). Nela no h especificao de condio sendo usado para isso todas as colunas comuns s duas tabelas. As colunas resultantes so a soma das colunas das duas tabelas sem a repetio das colunas idnticas (aparecero uma vez somente). No deve ser empregada quando se deseja associar duas tabelas apenas por um ou alguns dos seus atributos idnticos, caso isso seja feito os resultados so imprevisveis. Sintaxe1 (Juno com Predicado): (Tabela 1) |x| <condio de juno> (Tabela 2) Sintaxe2 (Juno Natural): (Tabela 1) |x| (Tabela 2) Ex: (Tabela 1) |x| <condio de juno> (Tabela 2) Consulta: Trazer o nome, data de admisso e cargo dos funcionrios do sexo masculino. Comando: Comando:
Resultado:
Comando utilizando Nomefunc, DtAdmisso, NumCargo ( Sexo=M ( Funcionrio |x| Funcionrio.CdCargo = Cargo.CdCargo Cargos ) ) juno com predicado Nomefunc, DtAdmisso, NumCargo ( Sexo=M ( Funcionrio |x| Cargos ) )

NomeFunc Luis Sampaio Carlos Pereira Jose Alves Luis Paulo Souza Pedro Sergio Roberto Fernandes Sergio Nogueira

DtAdmisso 10/08/2003 02/03/2004 23/05/2002 10/12/2001 29/06/2003 15/10/2003 10/02/2000

DescCargo Vendedor Aux.Cobrana Gerente Vendedor Diretor Vendedor Vigia

Comando utilizando juno natural

Diviso ( ) Essa operao produz como resultado a projeo de todos os elementos da primeira tabela que se relacionam com todos os elementos da segunda tabela. Essa operao tambm pode ser obtida atravs de outras operaes de lgebra relacional. Sintaxe: (Tabela 1) (Tabela 2) Utilizando as tabelas abaixo como exemplo: Tabela Equipe Tabela Projeto
NumReg 101 104 134 101 104 101 CdProjeto Projeto1 Projeto1 Projeto1 Projeto2 Projeto2 Projeto3 CdProjeto Projeto1 Projeto2 Projeto3
F1 F4

Descrio Suporte Manuteno Desenvolvimento

Consulta: Quais os funcionrios que trabalham em todos os projetos? Comando: ( NumReg, CdProjeto (EQUIPE)) ( CdProjeto (PROJETOS))
Projeo 1 Projeo 2

Resultado NumReg 101

NumReg 101 104 134 101 104 101

CdProjeto Projeto1 Projeto1 Projeto1 Projeto2 Projeto2 Projeto3

CdProjeto Projeto1 Projeto2 Projeto3

O operando dividendo a tabela resultante da Projeo 1, o operando divisor a tabela resultante da Projeo 2, e a tabela de Resultado o quociente da operao.

UNIP SBD lgebra Relacional Prof.Antonio A.Palladino

Renomeao ( ) a operao que renomeia uma tabela. Sintaxe: Nome(Tabela) Exemplo:

Funcionairo2(Funcionario)

Atribuio ( ) utilizada para simplificar comandos muito extensos definindo ento passos de comando. Sintaxe: Varivel Tabela Exemplo: Nomes_Func Nomefunc(Funcionario) 1.2. Funes em lgebra Relacional

Algumas operaes muito comuns sobre base de dados no podem ser executadas usando apenas as operaes de lgebra relacional e so implementadas na linguagem de consulta base de dados (SQL) dos SGBD (Sistemas Gerenciadores de Banco de Dados). Funes de Agregao: aplicadas em uma coleo de valores numricos: SOMA, MDIA, MXIMO, MNIMO ou usada para contar linhas: CONTADOR.
BIBLIOGRAFIA - MACHADO, Felipe Nery Rodrigues Banco de Dados: Projeto e Implementao Edtora rica; EXERCCIOS 1- Dados o esquema abaixo, especificar as operaes da lgebra relacional para as solicitaes. Na resoluo do exerccio demonstrar a rvore de expresso:
FORNECEDOR (CD-FORN, NOME-FORN, CD-CONDICAO) PRODUTO (CD-PROD, NOME-PROD, COR-PROD) PEDIDO (CD-FORN, CD-PROD, QTD-PEDIDA) Onde: PEDIDO.CD-FORN referencia FORNECEDOR.CD-FORN PEDIDO.CD-PROD referencia PRODUTO.CD-PROD

a) Traga o cdigo e nome dos fornecedores; b) Traga o cdigo e nome dos fornecedores que esto inativos (CD-CONDICAO=I); c) Traga as informaes dos fornecedores que forneceram o produto de cdigo PD-23 e esto ativos (CD-CONDICAO=A); (utilizar juno com predicado) d) Qual o nome dos fornecedores que forneceram pelo menos um produto cuja a cor VERDE; (utilizar juno natural) e) Qual o nome dos produtos de cor VERMELHA com pedidos em quantidade superior a 5000; f) Qual o cdigo e nome dos fornecedores que forneceram algum produto. (trazer as linhas de resultado sem repetio) 2- Dados o esquema abaixo, especificar as operaes da lgebra relacional para as solicitaes. Na resoluo do exerccio demonstrar a rvore de expresso e o resultado final da solicitao:
ALUNO DISCIPLINA HISTORICO PROFESSOR Onde: (CD-ALUNO, NOME-ALUNO, END-ALUNO, SEXO-ALUNO) (CD-DISC, NOME-DISC, CH-DISC, CD-PROF) (CD-ALUNO, CD-DISC, NOTA) (CD-PROF, NOME-PROFESSOR)

ALUNO
CDALUNO 1 2 3

NomeAluno Carlos Ana Pedro

EndAluno Rua A Rua B Rua C

DISCIPLINA.CD-PROF referencia PROFESSOR.CD-PROF HISTORICO.CD-ALUNO referencia ALUNO.CD-ALUNO HISTORICO.CD-DISC referencia DISCIPLINA.CD-DISC DISCIPLINA HISTORICO
SexoAluno M F M CDDisc CI MD LBD Nome-Disc ChDisc Clculo-I 40 Modelagem 80 Lab.BDs 80 CDProf 1 2 2 CDAluno 1 1 2

CDDisc CI MD CI

Nota 6,0 7,0 8,0

PROFESSOR
CDProf 1 2

NomeProf Paulo Antonio

a) b) c) d) e)

Traga o cdigo, nome e sexo dos alunos; Traga o cdigo, nome e sexo dos alunos do sexo masculino; Traga o cdigo da disciplina, nome dela e nome dos professores que a lecionam; Traga o cdigo da disciplina e nome dos professores que lecionam a disciplina de nome Clculo-I; Traga as informaes dos alunos que tiveram nota superior a 6 nas disciplinas de Modelagem e Clculo-I? f) Qual o nome e cdigo dos alunos que cursaram todas as disciplinas com carga horria (CH-DISC) maior que 50 horas, com nota superior a 7? g) Quais nomes de disciplinas onde todos os alunos que j a cursaram obtiveram nota superior a 5? 7

También podría gustarte