lgebra Relacional Prof Jos Antnio da Cunha CEFETRN
Á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 que R’ R Formato: (R) <predicado de seleção> AND , OR , NOT , , , – Ex: (ALUNO) Nome ‘João Azevedo’ AND N_matricula>11111 Bancos de Dados I – jose. Cunha@ifrn. edu. br 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 – jose. Cunha@ifrn. edu. br 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>11111 (ALUNO)) Bancos de Dados I – jose. Cunha@ifrn. edu. br 4
Project– Exemplo • Tabela 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 – jose. Cunha@ifrn. edu. br 5
Esquema das operações Bancos de Dados I – jose. Cunha@ifrn. edu. br 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 R 1 e R 2, compatíveis. • Sejam duas relações de grau n, R 1(A 1, . . . , An) e R 2(B 1, . . . , Bn), se dom(A 1)=dom(B 1), . . . , dom(An)=dom(Bn), então R 1 e R 2 são compatíveis. – Saída: uma relação R’, tal que grau(R’) = grau(R 1) = grau(R 2) e R’ R 1 e/ou R’ R 2 – Formato: R 1 R 2 Bancos de Dados I – jose. Cunha@ifrn. edu. br 7
União– Exemplo • Tabelas r, s: 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 – jose. Cunha@ifrn. edu. br 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 R 1 e R 2, compatíveis. – Saída: uma relação R’, tal que grau(R’) = grau(R 1) = grau(R 2) e R’ R 1 – Formato: R 1 R 2 – Ex: Nome (ALUNO) Nome (PROFESSOR) Bancos de Dados I – jose. Cunha@ifrn. edu. br 9
Diferença – Exemplo • Tabelas r, s: 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 – jose. Cunha@ifrn. edu. br 10
Modelo Relacional – Álgebra Relacional • PRODUTO CARTESIANO ( ) – Descrição: concatena as tuplas das relações de entrada de forma combinatorial – Entrada: duas relações R 1(A 1, . . . , An) e R 2(B 1, . . . , Bn), não necessariamente compatíveis. – Saída: uma relação R’(A 1, . . . , An, B 1, . . . , Bn), tal que grau(R’) = grau(R 1) + grau(R 2) e R’ = R 1 * R 2 – Formato: R 1 R 2 – Obs: sem significado se aplicada isoladamente – Ex: ALUNO PROFESSOR Bancos de Dados I – jose. Cunha@ifrn. edu. br 11
Produto Cartesiano – Exemplo Tabelas r, s: A B C D E 1 2 10 10 20 10 + + – – r r x s: s A B C D E 1 1 2 2 10 19 20 10 10 10 20 10 + + – – Em SQL Select * from R, S Bancos de Dados I – jose. Cunha@ifrn. edu. br 12
Operador relacional de DIVISÃO COL 1 COL 2 COL 1 A 1 2 C B 1 3 C 2 A÷B 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 col 1 from Tabela_A a where not exists (select null from Tabela_B b where not exists (select null from Tabela_A where col 2=b. col 2 and a. col 1=col 1)); Bancos de Dados I – jose. Cunha@ifrn. edu. br
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 – jose. Cunha@ifrn. edu. br
Representação Gráfica • Operadores Tradicionais • União Intersecção Diferença Bancos de Dados I – jose. Cunha@ifrn. edu. br 15
Representação Gráfica • Operadores Tradicionais • Produto Cartesiano Bancos de Dados I – jose. Cunha@ifrn. edu. br 16
Representação Gráfica • Operadores Relacionais • Seleção Projeção Bancos de Dados I – jose. Cunha@ifrn. edu. br 17
Simbologia • • • União Diferença Prod. Cartesiano Seleção Projeção • Junção R S R–S R S F (R) i 1, i 2, . . . , im(R) R⋈S Bancos de Dados I – jose. Cunha@ifrn. edu. br 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: G 1, G 2, …, Gn • • F 1( A 1), …, Fn( An) (R) R é uma relação G 1, G 2 …, 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 – jose. Cunha@ifrn. edu. br 19
Funções agregadas – Exemplo • Tabela r: Sum c(r) A B C 7 7 3 10 sum-C 27 Bancos de Dados I – jose. Cunha@ifrn. edu. br 20
Funções agregadas – Exemplo • Tabela contas agrupada por branch-name (filial): branch-name Perryridge Brighton Redwood branch-name account-number balance A-102 A-201 A-217 A-215 A-222 400 900 750 700 sum balance (account) branch-name Perryridge Brighton Redwood balance 1300 750 700 Bancos de Dados I – jose. Cunha@ifrn. edu. br 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 – jose. Cunha@ifrn. edu. br 22
Exercícios empregado(RG, sexo, dt_nasc, pnome, unome, rua, cida de, estado, salario, dnum, sup. RG ) sup. RG references empregado(RG) dnum references departamento(dnum) departamento(dnum, dnome, ger. RG, dt_inicio) ger. RG references empregado(rg) projeto (pnum, pnome, localização, dnum) dnum references departamento(dnum) dependente(dep_nome, dep_sexo, dep_dt_nasc, emp. RG) emp. RG references empregado(RG) trabalha_em(RG, pnum, horas) RG references empregado(RG) pnum references projeto(pnum) localizacao(localizacao, dnum) dnum references departamento(dnum) 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
- Slides: 23