Baixe o app para aproveitar ainda mais
Prévia do material em texto
05. Discuta as características das relações que as fazem diferentes de tabelas e arquivos comuns. Uma relação se esforça para representar fatos em um nível lógico ou abstrato. Logo, podemos avaliar que diferente de tabelas e arquivos, as relações não apenas disponibilizam espaço para armazenamento de dados, mas “criam” um ambiente lógico como meio de solução de um fato. Além disso, elas estabelecem “sentido” aos dados aleatórios registrados, permitindo extração de informação através do relacionamento entre os dados. Muitas ordens lógicas podem ser especificadas em uma relação. Quando uma relação é implementada como um arquivo ou exibida como uma tabela, uma ordenação em particular pode ser especificada nos registros do arquivo ou linhas da tabela, proporcionando muita flexibilidade na extração de informações. 10. Discutir os vários tipos de operações de JUNÇÃO INTERNA. Por que a JUNÇÃO THETA é necessária? Theta: Permite o uso de qualquer operador de comparação. Equijunção: Permite apenas a condição de igualdade. Natural: Tipo de equijunção onde os atributos com nomes idênticos são usados na comparação (igualdade). Uma operação JUNÇÃO com uma condição de junção geral é chamada JUNÇÃO THETA (THETA JOIN). As tuplas, cujos atributos de junção são null não aparecem no resultado. Nesse sentido, a operação JUNÇÃO não preserva, necessariamente, todas as informações das relações participantes. O uso mais comum de JUNÇÃO envolve as condições de junção apenas em comparações de igualdade. Assim, uma JUNÇÃO em que o único operador de comparação usado for o = é chamada EQUIJUNÇÃO. Como um, de cada par de atributos com valores idênticos, é supérfluo, uma nova operação, chamada JUNÇÃO NATURAL foi criada, livrando o segundo atributo (supérfluo) da condição de EQUIJUNÇÃO. Mas por que a JUNÇÃO THETA é necessária? Para criar uma junção, por mais simples que seja, é necessário equiparar um atributo identificador da primeira entidade a outro atributo identificador da segunda entidade. Além disso, para criar qualquer tipo de cláusula que filtre valores através de condições, é preciso utilizar uma comparação. Logo, se precisamos utilizar operadores de comparação, como: =, <,<,>, > e *, estamos condicionando valores. Neste ponto, podemos entender o quanto a JUNÇÃO THETA é necessária, uma vez que ela permite que seja realizada essas condições a junção. 15. Exercício 6.19 (Elmasri e Navathe – 4ª. Edição – Página 134) 6.19. Especifique as seguintes consultas em álgebra relacional no esquema de banco de dados do Exercício 5.13: a. Liste o Pedido# e Pdata para todos os pedidos remetidos pelo Depósito de número 'W2'. b. Liste as informações do Depósito do qual o Cliente chamado 'José Lopez' teve seus pedidos fornecidos. Produza uma listagem: Pedido#, Depósito#. c. Produza uma listagem NOMECLI, #D0SPEDID0S, TOTAL_MEDIA_PEDIDO, em que a coluna do meio é o número total de pedidos feitos pelo cliente, e a última coluna é a média dos valores totais dos pedidos desse cliente. d. Liste os pedidos que não foram remetidos até 30 dias da data do pedido. e. Liste o Pedido# dos pedidos que foram remetidos de todos os depósitos cuja a empresa seja em Nova York. a) b) � c) d) e) 20. Exercício 8.13 (Elmasri e Navathe – 4ª. Edição – Página 180) 8.13. Especifique as consultas do Exercício 6.16 em SQL. Mostre o resultado de cada consulta se ela fosse aplicada ao banco de dados EMPRESA da Figura 5.6. a) SELECT e.nome FROM Empregado E INNER JOIN Projeto P ON P.dnum= e.dno INNER JOIN Trabalha_em t ON p.num = t.pno WHERE e.dno= 5 AND t.horas> 10 AND p.dnome = 'ProdutoX ' b) SELECT e.nome FROM Empregado E INNER JOIN Dependente D ON e.ssn = d.ssn WHERE e1.Minicial = d.nomeDependente c) SELECT e.nome FROM Empregado E INNER JOIN Empregado e1 ON e1.SUPERSSN = e.SSN WHERE e1..Minicial = ' Franklin Wong' SELECT p.pjnome, SUM ( T.horas ) FROM Projeto P INNER JOIN Trabalha_em T ON T.pno = P.numero GROUP BY P.pjnome e) SELECT e.nome FROM Empregado E HAVING count (*) = ( select count (*) FROM Projeto ) f) SELECT e.nome FROM Empregado E HAVING count (*) =0 g) SELECT p.nome, AVG ( e.salario ) FROM Empregado E INNER JOIN Departamento D ON d.numero = e.dno GROUP BY d.nome h) SELECT AVG ( e.salario ) FROM Empregado E INNER JOIN Departamento D ON d.numero = e.dno WHERE e.sexo = ' Feminino ' SELECT e.nome, e.endereço FROM Empregado E, DepartamentoLocalização D, Projeto P WHERE e.dno = d.numero AND d.numeor = p.numero AND p.localização = 'Houston ' AND d.localização < > ' Houston' j) SELECT e.Unome FROM Empregado E INNER JOIN Departamento D ON d.Gerssn = e.ssn LEFT JOIN Dependente DE ON DE.essn = E.ssn 25. Exercício 8.18 (Elmasri e Navathe – 4ª. Edição – Página 181) 8.18. Especifique as consultas e as atualizações dos Exercícios 6.17 e 5.11, os quais se referem ao banco de dados COMPANHIA AÉREA (Figura 5.8), em SQL. a) SELECT numero_voo, codAeroportoPart, codAeroportoCheg FROM Trajeto_voo b) SELECT t.numero_voo, it.data FROM Trajeto_voo T INNER JOIN Instancia_Trajeto IT ON t.numero_voo = it. numero_voo WHERE t.codAeroportoCheg = ' LAX ' AND t.codAeroportoPart = ' IAH' SELECT t.numero_voo, t.codAeroportoPart, t.horarioAgenCheg, it.data FROM Trajeto_voo T INNER JOIN Aeroporto A ON a.codAeroporto= t.codAeroporto INNER JOIN Instancia_Trajeto IT ON it.numero_voo = t.numero_voo WHERE a.cidade = 'Houston' AND a.cidade = 'Los Angeles' SELECT λ FROM ReservaAssentos WHERE numero_voo = ' CO197' e) SELECT t.numAssentosDisp FROM Instancia_Projeto IP WHERE numero_voo = ' CO197' AND data = ' 1999-10-09'
Compartilhar