Prévia do material em texto
Fundamentos de Banco de Dados Álgebra Relacional Profa.: Luana Dantas Chagas 2 Modelo Relacional Modelos de dados determinam como dados devem ser estruturados. E quais as formas de manipulação e recuperação desses. 3 Modelo Relacional Dentre os modelos de dados, está o modelo relacional. Que estabelece um banco de dados como uma coleção de relações. {P01, Maçã, 11.98} {P02, Amaciante, 5.86} {P03, Sabão em pó, 12.4} {P04, Farinha, 5.99} 4 Modelo Relacional O modelo foi desenvolvido na década de 60 e proposto pelo pesquisador da IBM Edgar Frank Codd. A idéia era deixar os dados independentes dos códigos das implementações. 5 Modelo Relacional ● Para criar seu modelo, Codd se baseou na: → Teoria dos conjuntos; → Lógica de predicado de primeira ordem. ● A base do modelo dizia que: Dada um coleção de conjuntos D 1 , D 2 , …, D n , R é uma relação sobre esses conjuntos se ela é um conjunto de n-tuplas ordenadas <d 1 , d 2 , …, d n >, tal que d 1 pertence a D 1 , d 2 pertence a D 2 , …, d n pertence a D n . 6 Modelo Relacional ● Por exemplo, considere os seguintes conjuntos: ● Deles, pode-se ter, por exemplo, a relação Estudante: COD NOME CIDADE C1 Fernanda Angicos C3 José Caicó C6 Marta Caicó 7 Modelo Relacional ● Comumente, “no mundo dos bancos de dados”, considera-se relação e tabela como sinônimos. ● Porém, relações são conjuntos matemáticos, e não possuem dados duplicados ou ordenação entre atributos. ● Já as tabelas dos SGBDs possuem... 8 Modelo Relacional ● Relações (ou tabelas) possuem atributos, cujos valores pertencem a um domínio. ● E são compostas por tuplas (ou linhas), que correspondem aos registros guardados no banco. ID Nome Curso A01 Ana Ferreira BSI A02 Fernando de Castro LCI A03 Fátima Bezerra BSI A04 Luciana Almeida LCI Atributo Registro 9 Modelo Relacional ● Codd estabeleceu propriedades para as relações: ● Cada relação deve ter um nome distinto. ● Cada atributo deve ter um nome distinto. ● Cada tupla deve ser distinta. ● Os valores dos atributos devem pertencer ao mesmo domínio. ● A ordem das tuplas é irrelevante. ● A ordem dos atributos é irrelevante. 10 Modelo Relacional ● Codd estabeleceu ainda que: ● O número de atributos da relação determina seu grau. ● O número de tuplas da relação determina sua cardinalidade. COD NOME CIDADE C1 Fernanda Angicos C3 José Caicó C6 Marta Caicó 3 atributos → grau 3 3 tuplas→ cardi- nalidade 3 11 Exercício ● Considere a relação Conta: a) Quais os atributos da relação? b) Quais as tuplas da relação? c) Quais os domínios dos atributos? d) Qual o grau e a cardinalidade da relação? e) Quais problemas podem ser identificados na relação? número_conta nome_agência saldo A-101 Natal 500,00 A-215 Fortaleza 300,00 A-102 Recife 1 200,00 A-101 Natal 500,00 A-222 Natal 5 000,00 12 Modelo Relacional ● Para definir uma relação, sem desenhá-la, utilizamos um esquema. ● Este é composto pelo nome da relação e seus atributos. ● Por exemplo, considere a tabela Aluno: cod nome cidade C1 Fernanda Angicos C3 José Caicó C6 Marta Caicó 13 Modelo Relacional ● O esquema dessa relação será: Aluno = (cod, nome, cidade) ou Aluno (cod, nome, cidade) ● Por convenção, o nome da tabela começa com letra maiúscula... ● E os nomes dos atributos com letra minúscula. cod nome cidade 14 Modelo Relacional ● Uma vez que tuplas precisam ser distintas, é preciso um atributo que as identifique unicamente. ● Tal atributo é denominado de chave primária. ● E tem como característica nunca ter valores repetidos. 15 Modelo Relacional ● Por exemplo, considere a tabela Cidade: ● Perceba que todas as cidades têm o mesmo nome e código. ● Mas, devido a chave primária ID_Cidade, nenhuma linha é igual! ID_Cidade Nome Código PB01 Bom Jesus BJ PI01 Bom Jesus BJ RN01 Bom Jesus BJ RS01 Bom Jesus BJ SC01 Bom Jesus BJ 16 Modelo Relacional ● É preciso ter cuidado ao definir qual atributo será chave primária! ● Pode-se pensar em atributos como nome, por exemplo... ● Mas, podemos ter pessoas com nomes exatamente iguais. João da Silva 17 Modelo Relacional ● É possível que um mesmo atributo apareça em diferentes relações. ● Eles permitem relacionar tuplas de diferentes tabelas. ● Por exemplo, considere as seguintes tabelas: Conta (num_conta, cod_ag, saldo) Agencia (cod_ag, cidade_ag) Cliente (nome_cliente, endereço, num_conta) 18 Modelo Relacional ● O atributo cod_ag aparece tanto nas tabelas Conta e Agência. ● Assim, é possível, por exemplo, descobrir a cidade de uma determinada conta. Conta (num_conta, cod_ag, saldo) Agencia (cod_ag, cidade_ag) 19 Modelo Relacional ● Por exemplo, qual a cidade da conta de número 1375-9? num_conta cod_ag saldo 1245-0 AvLeste 5 567,90 1375-9 PçBandeira 2 476, 21 1212-1 PçImperatriz 89,9 7634-8 AvLeste 12 788,87 cod_ag cidade_ag AvLeste Angicos PçBandeira Caicó PçImperatriz Mossoró AvLeste Angicos 20 Modelo Relacional ● O atributo num_conta aparece nas tabelas Conta e Cliente. ● Assim, é possível, por exemplo, descobrir um endereço de um cliente com determinado saldo. Conta (num_conta, cod_ag, saldo) Cliente (nome_cliente, endereço, num_conta) 21 Modelo Relacional ● Por exemplo, quais os endereços dos clientes que possuem mais de R$ 10 mil de saldo? num_conta cod_ag saldo 1245-0 AvLeste 5 567,90 1375-9 PçBandeira 2 476, 21 1212-1 PçImperatriz 89,9 7634-8 AvLeste 12 788,87 nome_cliente endereco num_conta Paulo Barros Angicos 1375-9 Mara Pessoa Caicó 1245-0 Feliciano da Silva Mossoró 7634-8 Odete Pereira Angicos 1212-1 22 Modelo Relacional ● Quando uma chave primária aparece em outra tabela, denominamos de chave estrangeira. ● No caso, cod_ag é chave primária na tabela Agência e chave estrangeira na tabela Conta. num_conta cod_ag saldo 1245-0 AvLeste 5 567,90 1375-9 PçBandeira 2 476, 21 1212-1 PçImperatriz 89,9 7634-8 AvLeste 12 788,87 cod_ag cidade_ag AvLeste Angicos PçBandeira Caicó PçImperatriz Mossoró AvLeste Angicos 23 Álgebra Relacional ● Para manipular dados, Codd propôs a álgebra relacional. A álgebra relacional consiste em um conjunto de operações que usam uma ou mais relações como entrada e produzem uma nova relação como resultado 24 Álgebra Relacional ● A álgebra relacional disponibiliza nove operadores. ● Operadores derivados da teoria dos conjuntos: ● União ● Interseção ● Diferença ● Produto cartesiano 25 Álgebra Relacional ● E operadores relacionais especiais: ● Seleção ● Projeção ● Junção ● Renomeação ● Divisão 26 Álgebra Relacional - Seleção ● A operação de seleção é unária. ● Ou seja, só recebe uma tabela como entrada. ● Essa operação permite selecionar tuplas de uma relação que satisfazem um determinado predicado. ● O símbolo que representa a seleção é a letra grega sigma. 27 Álgebra Relacional - Seleção ● A sintaxe da operação define-se por σ predicado (relação) ● No predicado, utiliza-se símbolos de comparação. ● São eles: = (igual) ≠ (diferente) < (menor que) > (maior que) ≤ (menor ou igual) ≥ (maior ou igual) 28 Álgebra Relacional - Seleção ● A seleção retorna as tuplas que atendem a condição determinada no predicado. ● Com os mesmos atributos da relação de entrada. 29 Álgebra Relacional - Seleção ● Considere a relação Aluno: ● Para retornar somente os alunos da Licenciatura em Computação faríamos: σ Curso = “LCI” (Aluno) Cod_aluno Nome Disciplina Nota Curso A01 Ana Marques BD 8.8 BSI A02 Breno Rocha BD 6.7 BSI A03 Daniel Praxedes APII 9.1 LCI A04 Mauro Mendonça APII 5.2 LCI A05 Vera de Matos Lógica 6.5 LCI 30 Álgebra Relacional - Seleção ● No caso, todas as tuplas são verificadas... ● … Buscando as que tem no atributo Curso o valor “LCI”. Cod_aluno Nome Disciplina Nota Curso A01 Ana Marques BD 8.8 BSI A02 Breno Rocha BD 6.7 BSI A03 Daniel Praxedes APII 9.1 LCI A04 Mauro MendonçaAPII 5.2 LCI A05 Vera de Matos Lógica 6.5 LCI 31 Álgebra Relacional - Seleção ● E a operação retorna somente as linhas que atendem a condição. ● No caso, a tabela resultante será: Cod_aluno Nome Disciplina Nota Curso A03 Daniel Praxedes APII 9.1 LCI A04 Mauro Mendonça APII 5.2 LCI A05 Vera de Matos Lógica 6.5 LCI 32 Álgebra Relacional - Seleção ● Suponha agora que deseja-se retornar somente os alunos cuja nota foi maior ou igual a 7. ● Para tal, fazemos: σ Nota ≥ 7 (Aluno) Cod_aluno Nome Disciplina Nota Curso A01 Ana Marques BD 8.8 BSI A02 Breno Rocha BD 6.7 BSI A03 Daniel Praxedes APII 9.1 LCI A04 Mauro Mendonça APII 5.2 LCI A05 Vera de Matos Lógica 6.5 LCI 33 Álgebra Relacional - Seleção ● Novamente, a operação irá buscar as tuplas que atendem a condição: ● E retorna como resultado: Cod_aluno Nome Disciplina Nota Curso A01 Ana Marques BD 8.8 BSI A02 Breno Rocha BD 6.7 BSI A03 Daniel Praxedes APII 9.1 LCI A04 Mauro Mendonça APII 5.2 LCI A05 Vera de Matos Lógica 6.5 LCI Cod_aluno Nome Disciplina Nota Curso A01 Ana Marques BD 8.8 BSI A03 Daniel Praxedes APII 9.1 LCI 34 Álgebra Relacional - Seleção ● É possível, ainda, utilizar operadores conectivos como ^ (e) e v (ou). ● Através desses, é possível combinar condições no predicado. ● Por exemplo, podemos determinar uma consulta em que: ● Os alunos cursem o BSI; ● E tenham tirado nota maior ou igual a 7. 35 Álgebra Relacional - Seleção ● Nesse caso, fazemos: σ Curso = “BSI” ^ Nota ≥ 7 (Aluno) ● A operação busca as linhas que satisfazem as condições: Cod_aluno Nome Disciplina Nota Curso A01 Ana Marques BD 8.8 BSI A02 Breno Rocha BD 6.7 BSI A03 Daniel Praxedes APII 9.1 LCI A04 Mauro Mendonça APII 5.2 LCI A05 Vera de Matos Lógica 6.5 LCI 36 Álgebra Relacional - Seleção ● E retorna como resultado a tabela somente com essas tuplas: σ Curso = “BSI” ^ Nota ≥ 7 (Aluno) Cod_aluno Nome Disciplina Nota Curso A01 Ana Marques BD 8.8 BSI 37 Álgebra Relacional - Seleção ● Outra situação possível é comparar os atributos de uma mesma relação. ● Considere a relação Empréstimo: Nome_cliente Nome_banqueiro cod_emprestimo Manoel Ananias Ana Beatriz EP01 Carlos Augusto Ana Beatriz EP02 Mateus Silva Augusto Lima EP03 Fátima Carlos Mateus Silva EP04 Patrícia Moreira Augusto Lima EP05 38 Álgebra Relacional - Seleção ● Podemos criar uma consulta para saber se alguém banqueiro fez empréstimo para si próprio. ● Nesse caso, teremos que saber se há alguma linha em que o nome do cliente seja o mesmo nome do banqueiro. ● Para tal, fazemos: σ nome_cliente = nome_banqueiro (Emprestimo) 39 Álgebra Relacional - Seleção ● Para essa consulta, a operação retornará: Nome_cliente Nome_banqueiro cod_emprestimo Manoel Ananias Ana Beatriz EP01 Carlos Augusto Ana Beatriz EP02 Mateus Silva Augusto Lima EP03 Fátima Carlos Mateus Silva EP04 Patrícia Moreira Augusto Lima EP05 ● Perceba que há um banqueiro que fez empréstimo, mas não a si mesmo: Nome_cliente Nome_banqueiro cod_emprestimo 40 Exercício ● Considere a relação Empregado: ● Determine operações da álgebra relacional para: a)Retornar as tuplas cuja cidade seja Angicos. b)Retornar as tuplas cujo o empregado seja estagiário. c)Retornar as tuplas cuja cidade seja Angicos e o empregado tenha cargo de direção. cod_emp nome_emp cidade cargo salario CE01 Maria dos Santos Angicos Secretaria 1200 CE02 Ayrton Sales Caicó Estagiário 400 CE03 William Bento Tibau Porteiro 1000 CE04 João de Deus Angicos Diretor 4000 CE05 Ana Maria Matos Angicos Estagiário 400 41 Exercício d)Retornar as tuplas cujo salário do empregado seja maior que R$ 1500. e)Retornar as tuplas cujo salário do empregado seja maior que R$ 600 e menor que R$1500. f)Retornar as tuplas cuja cidade seja Caicó ou Tibau. cod_emp nome_emp cidade cargo salario CE01 Maria dos Santos Angicos Secretaria 1200 CE02 Ayrton Sales Caicó Estagiário 400 CE03 William Bento Tibau Porteiro 1000 CE04 João de Deus Angicos Diretor 4000 CE05 Ana Maria Matos Angicos Estagiário 400 42 Álgebra Relacional - Projeção ● A operação de projeção é unária. ● Essa operação permite selecionar somente atributos determinados na lista de atributos. ● Ou seja, a projeção é feita com base nas colunas! ● Caso alguma linha da tabela resultante esteja duplicada, ela é ignorada. 43 Álgebra Relacional - Projeção ● O símbolo que representa a projeção é a letra grega pi. ● A sintaxe da operação define-se por Л lista de atributos (relação) na lista de atributos, os nomes são separados por vírgula. 44 Álgebra Relacional - Projeção ● São selecionadas para a tabela resultante somente as colunas determinadas na lista de atributos. OBS: perceba que na projeção não é possível utilizar restrições como <, >, =, entre outros. 45 Álgebra Relacional - Projeção ● Considere a relação Aluno: ● Para retornar somente os nomes dos alunos, fazemos: Л Nome (Aluno) Cod_aluno Nome Disciplina Nota Curso A01 Ana Marques BD 8.8 BSI A02 Breno Rocha BD 6.7 BSI A03 Daniel Praxedes APII 9.1 LCI A04 Mauro Mendonça APII 5.2 LCI A05 Vera de Matos Lógica 6.5 LCI 46 Álgebra Relacional - Projeção ● A operação buscará somente pelo atributo determinado: Cod_aluno Nome Disciplina Nota Curso A01 Ana Marques BD 8.8 BSI A02 Breno Rocha BD 6.7 BSI A03 Daniel Praxedes APII 9.1 LCI A04 Mauro Mendonça APII 5.2 LCI A05 Vera de Matos Lógica 6.5 LCI ● E retornará as tuplas somente desse atributo: Nome Ana Marques Breno Rocha Daniel Praxedes Mauro Mendonça Vera de Matos 47 Álgebra Relacional - Projeção ● Considere, ainda, a tabela Aluno: ● Para retornar somente os nomes dos alunos e seus respectivos cursos, fazemos: Л Nome, Curso (Aluno) Cod_aluno Nome Disciplina Nota Curso A01 Ana Marques BD 8.8 BSI A02 Breno Rocha BD 6.7 BSI A03 Daniel Praxedes APII 9.1 LCI A04 Mauro Mendonça APII 5.2 LCI A05 Vera de Matos Lógica 6.5 LCI 48 Álgebra Relacional - Projeção ● A operação buscará pelo nome e curso em cada tupla: Cod_aluno Nome Disciplina Nota Curso A01 Ana Marques BD 8.8 BSI A02 Breno Rocha BD 6.7 BSI A03 Daniel Praxedes APII 9.1 LCI A04 Mauro Mendonça APII 5.2 LCI A05 Vera de Matos Lógica 6.5 LCI ● E retornará as tuplas somente desses atributos: Nome Curso Ana Marques BSI Breno Rocha BSI Daniel Praxedes LCI Mauro Mendonça LCI Vera de Matos LCI 49 Álgebra Relacional - Projeção ● É possível combinar operações da álgebra relacional! ● Pois uma operação retorna uma tabela que servirá de entrada para outra. ● Por exemplo, considere a tabela Aluno mais uma vez: Cod_aluno Nome Disciplina Nota Curso A01 Ana Marques BD 8.8 BSI A02 Breno Rocha BD 6.7 BSI A03 Daniel Praxedes APII 9.1 LCI A04 Mauro Mendonça APII 5.2 LCI A05 Vera de Matos Lógica 6.5 LCI 50 Álgebra Relacional - Projeção ● Considere que devemos retornar os nomes dos alunos que tiraram nota acima de 8. ● Como queremos somente a coluna nome, precisamos realizar uma projeção! ● E como queremos a restrição da nota ser >8, precisamos realizar uma seleção! ● Assim, combinaremos as duas operações. 51 Álgebra Relacional - Projeção ● Primeiro, usamos a seleção para filtrar as linhas cuja nota seja acima de 8. ● E, na tabela resultante, aplicamos a projeção. ● No caso, a operação será: Πnome (σnota>8 ( Aluno) ) 52 Álgebra Relacional - Projeção ● A operação é realizada de cima para baixo, da direita para a esquerda. ● Portanto, primeiro é executada a operação: Πnome (σnota>8 ( Aluno) ) σnota>8 (Aluno ) 53 Álgebra Relacional - Projeção ● Na tabela resultante, é executado: Πnome Cod_aluno Nome Disciplina Nota Curso A01 Ana Marques BD 8.8 BSI A02 Breno Rocha BD 6.7 BSI A03 Daniel Praxedes APII 9.1 LCI A04 Mauro Mendonça APII 5.2 LCI A05 Vera de Matos Lógica 6.5 LCI ● Representando com ''figuras'', teríamos: Πnome σnota>8( ) ( ) 54 Álgebra Relacional - Projeção Cod_alun o Nome Disciplina Nota Curso A01Ana Marques BD 8.8 BSI A02 Breno Rocha BD 6.7 BSI A03 Daniel Praxedes APII 9.1 LCI A04 Mauro Mendonça APII 5.2 LCI A05 Vera de Matos Lógica 6.5 LCI ● A operação busca somente as linhas que satisfazem a condição: Πnome σnota>8( ) ( ) 55 Álgebra Relacional - Projeção Cod_aluno Nome Disciplina Nota Curso A01 Ana Marques BD 8.8 BSI A03 Daniel Praxedes APII 9.1 LCI ● E as retorna como resultado: Πnome ( ) ● Enfim, a última operação é executada e retorna a seguinte tabela: Nome Ana Marques Daniel Praxedes 56 Álgebra Relacional - Projeção ● Ainda na tabela Aluno, podemos escrever uma operação para retornar os códigos e nomes dos alunos da LCI. ● Nesse caso, faremos: ● E teremos como resultado: CodAluno Nome A03 Daniel Praxedes A04 Mauro Mendonça A05 Vera de Matos ΠcodAluno ,nome (σcurso =LCI ( Aluno) ) 57 Exercício ● Considere a relação Empregado: ● Determine operações da álgebra relacional para: a) Retornar os nomes dos funcionários. b) Retornar os nomes e cidades dos funcionários. c) Retornar as linhas em que o salário é menor que 1 000. cod nome sexo cidade cargo salario admissão E01 Maria F Angicos Secretaria 1200 2006 E02 Ayrton M Caicó Estagiário 400 2012 E03 William M Tibau Porteiro 1000 2016 E04 João M Angicos Diretor 4000 2002 E05 Ana F Angicos Estagiário 400 2000 58 Exercício d) Retornar as cidades que têm funcionários ganhando mais de 5 mil. e) Retornar os nomes dos empregados que estão na empresa a mais de 5 anos. f) Retornar os códigos e nomes dos funcionários que são da cidade de Mossoró e ganham mais de 2 mil. cod nome sexo cidade cargo salario admissão E01 Maria F Angicos Secretaria 1200 2006 E02 Ayrton M Caicó Estagiário 400 2012 E03 William M Tibau Porteiro 1000 2016 E04 João M Angicos Diretor 4000 2002 E05 Ana F Angicos Estagiário 400 2000 59 Exercício ● Dada a relação descrita abaixo, determine uma operação da álgebra relacional para: Pedidos (numero, data, valor, frete, CPF_cliente) a) Retornar os CPFs de todos os clientes. b) Retornar as linhas cujo valor do pedido foi maior que R$ 500. c) Retornar as datas dos pedidos cujo frete foi menor que RS 9,99. d) Retornar os CPFs dos clientes e valores dos pedidos que foram realizados após 20/02/2002 e o frete foi maior que R$ 150. 60 Álgebra Relacional - União ● O operador de união trata-se de uma operação binária. ● Essa operação cria uma relação a partir de outras duas, unindo suas tuplas (sem duplicações). ● O símbolo que representa a operação é a letra U. ● E a sintaxe da relação se dá por: relação1 U relação2 61 Álgebra Relacional - União ● Para que duas relações sejam unidas elas precisam ser compatíveis. ● Ou seja, o número e tipo de atributos precisam ser os mesmos. 62 Álgebra Relacional - União ● Por exemplo, considere as tabelas Professor e Aluno: ● Essas tabelas são compatíveis e podem ser unidas, resultando em: Professor Cod Nome P01 Ricardo P02 Bruna P03 Marcelo Aluno Cod Nome A01 Pâmela A02 Carolina A03 Rafael Professor Cod Nome P01 Ricardo P02 Bruna P03 Marcelo Cod Nome P01 Ricardo P02 Bruna P03 Marcelo A01 Pâmela A02 Carolina A03 Rafael 63 Álgebra Relacional - União ● Agora considere a tabela FilialFortaleza: ● E a tabela FilialNatal: Cod Nome Sexo Cargo FF01 Patrícia Bueno F Diretora FF02 Tales Lacerda M Secretário FF03 José Borges M Advogado Cod Nome Cargo FN01 Álvaro Segundo Vice-diretor FN02 Gustavo Félix Porteiro FN03 Fernanda Nunes Supervisora 64 Álgebra Relacional - União ● Não é possível unir as tabelas, pois são incompatíveis. ● Sua união causaria um problema: Cod Nome Sexo Cargo FF01 Patrícia Bueno F Diretora FF02 Tales Lacerda M Secretário FF03 José Borges M Advogado FN01 Álvaro Segundo Vice-diretor FN02 Gustavo Félix Porteiro FN03 Fernanda Nunes Supervisora 65 Álgebra Relacional - União ● Considerando as tabelas FilialNatal e FilialFortaleza é possível, no entanto, unir atributos selecionados. ● Por exemplo, podemos unir os nomes dos funcionários: Nome Patrícia Bueno Tales Lacerda José Borges Álvaro Segundo Gustavo Félix Fernanda Nunes Πnome (FilialNatal )U Πnome (FilialFortaleza ) 66 Álgebra Relacional - União ● As tabelas podem ser unidas, mesmos que os nomes dos atributos sejam diferentes. ● Por exemplo, considere as tabelas Vendedor e Gerente: Vendedor Cod Nome V01 Miguel Muriel V02 Jordana Carlos V03 Lucas Correia Gerente Codigo NomeCompleto G01 Leticia Coelho G02 Ana França G03 Marcos Ribeiro 67 Álgebra Relacional - União ● Como as tabelas possuem os mesmos números de atributos e domínios, podem ser unidas. ● Por convenção, adota-se os nomes dos atributos da primeira tabela. Assim: Cod Nome V01 Miguel Muriel V02 Jordana Carlos V03 Lucas Correia G01 Leticia Coelho G02 Ana França G03 Marcos Ribeiro VendedorUGerente 68 Exercício ● Considere as tabelas 2017_1 e 2017_2: 2017_1 Cod Nome Nota A01 Breno Mercedes 9.9 A02 Laís Padilha 7.2 A08 Jorge Navarro 5.4 2017_2 Cod Nome Nota A01 Breno Mercedes 9.2 A05 Mário Pires 2.7 A09 Glória Furtado 7.6 ● Escreva um comando para retornar: a) O nome de todos os alunos. Qual será o resultado? b) Os nomes dos alunos aprovados. c) Os nomes dos alunos que passaram no semestre 2017_1 junto com os que reprovaram em 2017_2. 69 Exercício ● Considere as seguintes tabelas: Professor (codigo, nome, cidade, titulação, anoNasc) Disciplina (codigo, nome, horário, professor) Aluno (codigo, nome, cidade) ● Determine operações da álgebra relacional para retornar: a) Os professores e alunos que moram em Lajes. b) Os professores que são doutores ou que lecionam a disciplina de banco de dados. c) Os professores que são doutores e tem menos de 30 anos ou que lecionam a disciplina de APII. 70 Álgebra Relacional - Diferença ● A operação de diferença é binária. ● E permite encontrar tuplas que estão em uma relação, mas não estão em outra. ● Para tal, as relações precisam ser compatíveis. ● Caso alguma linha resultante esteja duplicada, ela é ignorada. 71 Álgebra Relacional - Diferença ● Se os nomes dos atributos forem diferentes, adota-se os nomes da primeira tabela. ● O símbolo que representa a diferença é o mesmo da subtração matemática: - . ● A sintaxe da operação se dá por: Relação1 – Relação2 72 Álgebra Relacional - Diferença ● A operação verifica todas as tuplas e retorna as que estão na primeira tabela, mas não na segunda. ● Perceba que na segunda tabela há uma tupla que não está na primeira, mas essa não fará parte do resultado. 73 Álgebra Relacional - Diferença ● Considere as tabelas Banco de Dados e Algoritmos: Banco de Dados Cod Nome A01 Maria Santos A02 Ayrton Sales A03 William Bento A04 Fátima Nobre Algoritmos Codigo Nome A01 Maria Santos A02 Ayrton Sales A06 Pedro Pereira ● Por meio da diferença, podemos descobrir quais alunos estão cursando Banco de Dados, mas não estão cursando Algoritmos. 74 Álgebra Relacional - Diferença ● Nesse caso, faremos: Banco de Dados - Algoritmos Cod Nome A01 Maria Santos A02 Ayrton Sales A03 William Bento A04 Fátima Nobre Codigo Nome A01 Maria Santos A02 Ayrton Sales A06 Pedro Pereira ● E teremos como resultado: - Cod Nome A03 William Bento A04 Fátima Nobre 75 Álgebra Relacional - Diferença ● Para saber quem está em Algoritmos, mas não em Banco de Dados faríamos: Algoritmos - Banco de Dados Cod Nome A01 Maria Santos A02 Ayrton Sales A03 William Bento A04 Fátima Nobre Codigo Nome A01 Maria Santos A02 Ayrton Sales A06 Pedro Pereira ● E teremos como resultado: - Cod Nome A06 Pedro Pereira 76 Exercício ● Dadas as relações abaixo, determine operações da álgebra relacional para: Correntista (codC, nome, cidade) Depósito (codD, nomeCliente, conta, agencia, valor) Emprestimo (codE, nomeCliente, valor) a) Retornar os nomes de todos os correntistas. b) Retornar as contas que receberam depósitos demais de 2 mil reais. c) Retornar os nomes dos clientes que fizeram empréstimo ou depósito. 77 Exercício Correntista (codC, nome, cidade) Depósito (codD, nomeCliente, conta, agencia, valor) Emprestimo (codE, nomeCliente, valor) d) Retornar os nomes dos clientes que fizeram empréstimo, mas não fizeram depósito. e) Retornar os nomes dos clientes que possuem conta, mas não fizeram empréstimo de mais de mil reais. f) Retornar os nomes dos clientes que não fizeram nem empréstimo nem depósito. 78 Álgebra Relacional – Renomeação ● A renomeação é uma operação unária. ● Ela permite renomear relações ou atributos. ● Assim, tem como resultado a mesma relação de entrada, mas com a alteração de nomes. ● O símbolo que representa a operação é a letra grega ro (ρ). 79 Álgebra Relacional – Renomeação ● A sintaxe da operação define-se por: Ou... ρnovoNome (Relação ) ρnovoNomeAtributo1, novoNomeAtributo2. .. (Relação ) 80 Álgebra Relacional – Renomeação ● Por exemplo, considere a relação Empresa: ● Para renomear a tabela para ''Organizações'', faríamos: Codigo Nome EMP01 Samsung EMP02 Lego EMP03 Subway ρOrganizações ( Empresa) 81 Álgebra Relacional – Renomeação ● Considere a relação Empresa novamente: ● Para renomear os atributos Código para ID e Nome para Marca, faríamos: Codigo Nome EMP01 Samsung EMP02 Lego EMP03 Subway ρID , Marca (Empresa) 82 Álgebra Relacional – Renomeação ● Mais uma vez, considere a relação Empresa: ● Para renomear os atributos Código para ID e Nome para Marca, e também renomear a tabela para Organizações, faríamos: Codigo Nome EMP01 Samsung EMP02 Lego EMP03 Subway ρOrganizações( ID,Marca) (Empresa) 83 Álgebra Relacional – Renomeação ● A renomeação é muito útil quando precisamos renomear resultados de operações. ● Por exemplo, considere a tabela Pessoas: Pessoas (CPF, nome, cidade, anoNasc) ● Podemos escrever uma consulta para retornar: ● os nomes das pessoas da cidade de Angicos ● e que nasceram a partir de 1990. 84 Álgebra Relacional – Renomeação ● Nesse caso, teríamos: ● Para renomear a tabela resultante para Angicanos faríamos: Πnome (σcidade= ' ' Angicos ' '∧anoNasc>1990 ( Pessoas) ) ρAngicanos (Π nome (σ cidade=' ' Angicos' '∧anoNasc >1990 ( Pessoas) ) ) 85 Exercício ● Considere as relações Empregado e Departamento descritas a seguir e determine comandos da álgebra relacional para: Empregado (emp_id, nome, endereço, salário) Departamento (dept_id, nome, qtdadeFunc, gerente) a) Renomear a relação Empregado para Funcionário. b) Retornar os nomes dos empregados que ganham mais de 10 mil. A relação resultante deve ser chamada de resultado. c) Retornar os nomes dos empregados que são gerentes. 86 Contato: luana.dantas@ufersa.edu.br Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25 Slide 26 Slide 27 Slide 28 Slide 29 Slide 30 Slide 31 Slide 32 Slide 33 Slide 34 Slide 35 Slide 36 Slide 37 Slide 38 Slide 39 Slide 40 Slide 41 Slide 42 Slide 43 Slide 44 Slide 45 Slide 46 Slide 47 Slide 48 Slide 49 Slide 50 Slide 51 Slide 52 Slide 53 Slide 54 Slide 55 Slide 56 Slide 57 Slide 58 Slide 59 Slide 60 Slide 61 Slide 62 Slide 63 Slide 64 Slide 65 Slide 66 Slide 67 Slide 68 Slide 69 Slide 70 Slide 71 Slide 72 Slide 73 Slide 74 Slide 75 Slide 76 Slide 77 Slide 78 Slide 79 Slide 80 Slide 81 Slide 82 Slide 83 Slide 84 Slide 85 Slide 86