Banco de Dados I Álgebra Relacional Frederico Queiroga fredericoqueiroga@gmail.com https://sites.google.com/site/fredericoqueiroga/ Álgebra Relacional Álgebra Relacional: conjunto de operações que podem ser realizadas em tabelas para obter resultados de consultas. Existem cinco operações básicas que podem ser combinadas para atender consultas mais complexas: Seleção Projeção União Diferença Produto Cartesiano Frederico Queiroga Banco de Dados I 2 1
Seleção (S ou σ) Sigma A operação de seleção permite a escolha de registros (linhas ou tuplas) que atendam determinadas condições numa tabela; A condição é definida por um predicado, onde podem ser feitas comparações usando os operadores: =, >, <,, >=, <= Os operadores E (AND) e OU (OR) podem ser usados para formar predicados compostos. Notação: σ (Tabela) predicado Frederico Queiroga Banco de Dados I 3 Seleção (S ou σ) - Exemplos Dada a tabela de, resolva as consultas: 1. Selecionar os registros da tabela onde o nome é Caio: σ () nome = Caio 2. Selecionar os registros da tabela onde o nome é Maria ou salário menor do que R$ 500,00: σ () nome = Maria OU salario < 500 Frederico Queiroga Banco de Dados I 4 2
Seleção (S ou σ) - Exemplos Dada a tabela de, resolva as consultas: 3. Selecionar os registros da tabela onde o CPF é 555: σ () CPF = 555 4. Selecionar os registros da tabela onde CPF é 999 e salário maior do que R$ 200,00: σ () CPF = 999 E salario > 200 Frederico Queiroga Banco de Dados I 5 Projeção (P ou π) A operação de projeção permite a escolha de apenas alguns atributos (colunas) de uma tabela, omitindo os demais. Para listar vários atributos, é necessário usar vírgulas para separá-los. Pode ser combinada à operação de seleção. Notação: π (Tabela) atributo π (Tabela) atributo1, atributo2,..., atributon Frederico Queiroga Banco de Dados I 6 3
Projeção (P ou π) - Exemplos Dada a tabela de, resolva as consultas: 1. Selecionar o Salário de todos os : π () salario 2. Selecionar nome e CPF de todos os : π () Nome, cpf Frederico Queiroga Banco de Dados I 7 Projeção (P ou π) - Exemplos Dada a tabela de, resolva as consultas: 3. Selecionar o nome dos cujo salário seja maior ou igual a 300: () (σ salario >= 300) π nome 4. Selecionar o CPF e nome dos onde salário maior do que R$ 200,00 e idade menor do que 30 anos: () (σ salario > 200 E idade < 30) π Frederico nome, cpf Queiroga Banco de Dados I 8 4
União(U ou ) A operação de união corresponde à união dos elementos de duas relações (tabelas). Os valores duplicados são eliminados da relação resultante. A união só pode ocorrer entre relações compatíveis (com mesmo número de atributos e domínios semelhantes para cada atributo). Notação: relação U relação Dica: como dificilmente duas tabelas completas serão compatíveis, costuma-se usar a projeção (π) para obter atributos compatíveis de cada uma e, conseqüentemente sua união. Frederico Queiroga Banco de Dados I 9 União(U ou ) - Exemplos Dadas as tabelas de e Funcionários, resolva as consultas: Funcionários 1. Selecionar o nome de todos os e Funcionários: π () U π (Funcionários) nome nome 2. Selecionar nome e CPF de todos os e Funcionários: π () U π (Funcionários) Nome, cpf Nome, cpf Frederico Queiroga Banco de Dados I 10 5
União(U ou ) - Exemplos Dadas as tabelas de e Funcionários, resolva as consultas: Funcionários 3. Erro: π () U π (Funcionários) Nome, salario Nome, função Frederico Queiroga Banco de Dados I 11 Diferença(-) A operação de diferença seleciona registros que aparecem em uma relação e não aparecem em outra. A expressão r s resulta na relação que contém tuplas (linhas ou registros) que estão em r mas não em s. Registros que aparecem nas duas relações não são exibidos. A diferença também só pode ocorrer entre relações compatíveis. Notação: relação relação Frederico Queiroga Banco de Dados I 12 6
Diferença(-) - Exemplos Dada as tabelas de, Telefones e Compras, resolva as consultas: Telefones Compras 1. Selecionar o CPF dos clientes que não fizeram compras: π () cpf - π (compras) cpf 2. Selecionar o CPF dos clientes que não têm telefone: π () cpf - π (telefones) cpf Frederico Queiroga Banco de Dados I 13 Diferença(-) - Exemplos Dada as tabelas de, Telefones e Compras, resolva as consultas: Telefones Compras 3. Selecionar o CPF dos clientes que fizeram compras e não têm telefone: π (Compras) - π (Telefones) cpf cpf Frederico Queiroga Banco de Dados I 14 7
Produto Cartesiano ( ) A operação de produto cartesiano (junção de tabelas) permite a combinação de tabelas para relacionar dados separados em tabelas diferentes e formar uma nova tabela (relação). Permite a concatenação das tuplas (linhas) de cada relação, gerando todas as tuplas possíveis. É importante identificar apenas as combinações válidas (observar colunas em comum em cada tabela). Para identificar atributos com o mesmo nome em diferentes relações, basta acrescentar o nome da relação ao atributo. Notação: relação x relação Frederico Queiroga Banco de Dados I 15 Produto Cartesiano - Exemplos Telefones Ligação Registros Válidos Frederico Queiroga Banco de Dados I 16 8
Produto Cartesiano - Exemplos Dada as tabelas de e Telefones, resolva as consultas: Telefones 1. Selecionar o nome e o telefone de todos os : ( x Telefones) (σ π clientes.cpf = telefones.cpf).nome, telefone.numero 2. Selecionar o nome, salário e o telefone de todos os : ( x Telefones) π ( σ clientes.cpf = telefones.cpf).nome,.salario, telefone.numero Frederico Queiroga Banco de Dados I 17 Produto Cartesiano - Exemplos Dada as tabelas de e Telefones, resolva as consultas: Telefones 3. Selecionar o CPF, nome, a idade e o telefone de todos os que tenham 27 anos ou mais: ( x Telefones) (σ π clientes.cpf = telefones.cpf E clientes.idade >= 27).cpf,.nome,.idade, telefone.numero 4. Selecionar o nome, salário e o telefone dos que ganham mais de R$ 400: ( x Telefones) (σ Frederico π clientes.cpf = telefones.cpf E clientes.salario > 400) Queiroga Banco de Dados I 18.nome,.salario, telefone.numero 9
Peças CodPeca Nome Cor Peso Cidade P1 HD Externo Azul 300g Recife P2 Monitor LCD Preto 2kg João Pessoa P3 Gravador DVD Cinza 300g Maceió P4 Pen Drive 16gb Fornecedores CodFornec Nome Status Cidade F1 Fornecedor 1 5 São Paulo F2 Fornecedor 2 10 João Pessoa F3 Fornecedor 3 7 São Paulo Pedido CodPeca CodFornec Qtde Disp. P1 F1 100 P1 F2 200 P3 F3 300 P2 F1 200 P2 F4 350 F4 Fornecedor 4 5 João Pessoa Frederico Queiroga Banco de Dados I 19 Produto Cartesiano - Exercícios 1. Mostre os dados das peças com o código P1 e P2; 2. Mostre os dados de todos os fornecedores que sejam do município de João Pessoa e tenham Pedidos com quantidade maior que 100 peças; 3. Apresente o códigos e os nomes de todas as peças que já foram vendidas; 4. Mostre as cidades de todos os fornecedores; 5. Mostre o código da peça e a quantidade disponibilizada, para cada Envio da peça do fornecedor F1; 6. Obtenha o nome e a cidade de todos os fornecedores que têm envios e status maior do que 5; 7. Mostre o nome do fornecedor, o nome da peça e a quantidade disponibilizada para todos os pedidos; Frederico Queiroga Banco de Dados I 20 10
FIM Frederico Queiroga Banco de Dados I 21 11