Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Palladino
(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)
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
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
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
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
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:
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:
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
Projeo 2
Resultado
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
Projeo 2
Resultado
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
Projeo 2
Resultado
Exemplo2:
Projeo 2
Projeo 1
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
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
Consulta: Quais os funcionrios que trabalham em todos os projetos? Comando: ( NumReg, CdProjeto (EQUIPE)) ( CdProjeto (PROJETOS))
Projeo 1 Projeo 2
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.
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
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
PROFESSOR
CDProf 1 2
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