Álgebra Relacional Prof.: José Antônio da Cunha CEFET-RN 1 Modelo Relacional – Álgebra Relacional • SELEÇÃO () – – – – Descrição: seleciona tuplas que satisfazem a um predicado Entrada: uma relação R Saída: uma relação R’, tal queR’R Formato: (R) <predicado de seleção> AND , OR , NOT , , , , , , – Ex: (ALUNO) Nome‘João Azevedo’ AND N_matricula>1111111111 Bancos de Dados I – [email protected] 2 Seleção– Exemplo • Tabela r A=B ^ D > 5 (r) A B C D 1 7 5 7 12 3 23 10 A B C D 1 7 23 10 Em SQL Select * from R where a=b and d>5 Bancos de Dados I – [email protected] 3 Modelo Relacional – Álgebra Relacional • PROJEÇÃO () – Descrição: seleciona atributos de uma relação – Entrada: uma relação R – Formato: <lista de atributos> (R) – Ex: Nome, N_matricula (ALUNO) Nome, Data_nasc ( N_matricula>1111111111 (ALUNO)) Bancos de Dados I – [email protected] 4 Project– Exemplo • Tabela r: A ,C ( R) A B C 10 1 20 1 30 1 40 2 A C 1 1 1 2 Em SQL Select a, c from R Bancos de Dados I – [email protected] 5 Esquema das operações Bancos de Dados I – [email protected] 6 Modelo Relacional – Álgebra Relacional • UNIÃO () – Descrição: reúne em uma única relação as tuplas das relações de entrada – Entrada: duas relações R1 e R2, compatíveis. • Sejam duas relações de grau n, R1(A1, ..., An) e R2(B1, ..., Bn), se dom(A1)=dom(B1), ..., dom(An)=dom(Bn), então R1 e R2 são compatíveis. – Saída: uma relação R’, tal que grau(R’) = grau(R1) = grau(R2) e R’R1 e/ou R’R2 – Formato: R1 R2 Bancos de Dados I – [email protected] 7 União– Exemplo • Tabelas r, s: A B A B 1 2 2 3 1 s r r s: A B 1 2 1 3 Em SQL Select a, b from R Union all Select a,b from S Bancos de Dados I – [email protected] 8 Modelo Relacional – Álgebra Relacional • DIFFERENÇA DE CONJUNTOS () – Descrição: seleciona as tuplas presentes na primeira relação e não presentes na segunda – Entrada: duas relações R1 e R2, compatíveis. – Saída: uma relação R’, tal que grau(R’) = grau(R1) = grau(R2) e R’R1 – Formato: R1 R2 – Ex: (ALUNO) Nome (PROFESSOR) Nome Bancos de Dados I – [email protected] 9 Diferença – Exemplo • Tabelas r, s: A B A B 1 2 2 3 1 s r r – s: A B 1 1 Em SQL Select a, b from R minus Select a, b from S Bancos de Dados I – [email protected] 10 Modelo Relacional – Álgebra Relacional • PRODUTO CARTESIANO () – Descrição: concatena as tuplas das relações de entrada de forma combinatorial – Entrada: duas relações R1(A1, ..., An) e R2(B1, ..., Bn), não necessariamente compatíveis. – Saída: uma relação R’(A1, ..., An, B1, ..., Bn), tal que grau(R’) = grau(R1) + grau(R2) e R’=R1*R2 – Formato: R1 R2 – Obs: sem significado se aplicada isoladamente – Ex: ALUNO PROFESSOR Bancos de Dados I – [email protected] 11 Produto Cartesiano – Exemplo Tabelas r, s: A B C D E 1 2 10 10 20 10 + + – – r s r x s: A B C D E 1 1 1 1 2 2 2 2 10 19 20 10 10 10 20 10 + + – – + + – – Em SQL Select * from R,S Bancos de Dados I – [email protected] 12 Operador relacional de DIVISÃO COL1 COL2 COL2 COL1 A 1 2 C B 1 3 A÷B C 2 A 2 Tabela_B B 3 C 3 A 4 B 4 C 5 Tabela_A As linhas da Tabela A que não possuem correspondência com todas as linhas da Tabela B serão excluídas. Em SQL Select distinct col1 from Tabela_A a where not exists (select null from Tabela_B b where not exists (select null from Tabela_A where col2=b.col2 and a.col1=col1)); Bancos de Dados I – [email protected] Operador relacional de RENOMEAR Sintaxe ρ<novo nome (R) Exemplo TB_ESTADO_CIVIL (estado_civil, descrição) ρEA(cod,desc) (TB_ESTADO_CIVIL) Em SQL Select estdo_civil as cod, descrição as desc from TB_ESTADO_CIVIL EA Bancos de Dados I – [email protected] Representação Gráfica • Operadores Tradicionais • União Intersecção Diferença Bancos de Dados I – [email protected] 15 Representação Gráfica • Operadores Tradicionais • Produto Cartesiano Bancos de Dados I – [email protected] 16 Representação Gráfica • Operadores Relacionais • Seleção Projeção Bancos de Dados I – [email protected] 17 Simbologia • • • • • União Diferença Prod. Cartesiano Seleção Projeção • Junção RS R–S RS F (R) i1, i2, ..., im(R) R⋈S Bancos de Dados I – [email protected] 18 Modelo Relacional – Álgebra Relacional FUNÇÕES DE AGREGAÇÃO () • Uma função de agregação tome uma coleção de valores e retorna um único valor como resultado avg: média min: mínimo max: máximo sum: soma count: número de valores • Formato: G1, G2, …, Gn • • • • F1( A1), …, Fn( An) (R) R é uma relação G1, G2 …, Gn é a lista de atributos de agrupamento (pode ser vazia) Cada Fi é uma função de agregação Cada Ai é um atributo Bancos de Dados I – [email protected] 19 Funções agregadas – Exemplo • Tabela r: Sum c(r) A B C 7 7 3 10 sum-C 27 Bancos de Dados I – [email protected] 20 Funções agregadas – Exemplo • Tabela contas agrupada por branch-name (filial): branch-name Perryridge Perryridge Brighton Brighton Redwood branch-name account-number balance A-102 A-201 A-217 A-215 A-222 400 900 750 750 700 sum balance (account) branch-name Perryridge Brighton Redwood balance 1300 750 700 Bancos de Dados I – [email protected] 21 Exemplos • • • • sum salario (trabalhador) count nome_agencia(trabalhador) Count-distinct nome_agencia(trabalhador) Nome_agência G sum salario (trabalhador) – Dividirá as tuplas de trabalhador em grupos, conforme os nomes das agências – Somará os valores dos salários de cada grupo – Apresentará o resultado Bancos de Dados I – [email protected] 22 Exercícios empregado(RG, sexo, dt_nasc,pnome,unome,rua,cida de,estado,salario,dnum,supRG ) supRG references empregado(RG) dnum references departamento(dnum) departamento(dnum,dnome, gerRG,dt_inicio) gerRG references empregado(rg) projeto (pnum, pnome,localização,dnum) dnum references departamento(dnum) dependente(dep_nome,dep_sexo, dep_dt_nasc,empRG) empRG references empregado(RG) trabalha_em(RG,pnum,horas) RG references empregado(RG) pnum references projeto(pnum) localizacao(localizacao,dnum) dnum references 13. Retorne o nome do empregado e o nome de cada projeto em que ele trabalha 14. Retorne o nome dos empregados que trabalham em algum projeto controlado pelo departamento 5 15. Retorne o número de empregados da empresa 16. Retorne o número do departamento e o número de empregados de CADA departamento da empresa 17. Retorne o número do departamento e a média do salário dos empregados de CADA departamento da empresa 18. Retorne o nome e o endereço de todos os empregados que trabalham no departamento ‘Pesquisa’ 19. Para cada projeto localizado em ‘Londrina’, retorne o número do projeto, o número do departamento que o controla, o nome e sexo do gerente do departamento 23