Prévia do material em texto
IMPLEMENTAÇÃO DE BANCO DE DADOS TESTE DE CONHECIMENTO AULAS 6 A 10 AULA 6 1a Questão Para se obter todos as matrículas, nomes e descrições dos departamentos de todos empregados independente de terem ou não códigos de departamento atribuídos (entenda-se por nulo os departamentos não atribuídos) deve-se escrever qual o select: SELECT E.ID_EMP_MATRICULA AS MATRICULA, E.VC_EMP_NOME AS NOME, D.VC_DEP_NOME AS DEPARTAMENTO FROM EMPREGADO E RIGHT JOIN DEPARTAMENTO D ON E.NU_EMP_DEPARTAMENTO = D.ID_DEP_CODIGO; SELECT E.ID_EMP_MATRICULA AS MATRICULA, E.VC_EMP_NOME AS NOME, D.VC_DEP_NOME AS DEPARTAMENTO FROM EMPREGADO E INNER JOIN DEPARTAMENTO D ON E.NU_EMP_DEPARTAMENTO = D.ID_DEP_CODIGO WHERE E.NU_EMP_DEPARTAMENTO IS NULL; SELECT E.ID_EMP_MATRICULA AS MATRICULA, E.VC_EMP_NOME AS NOME, D.VC_DEP_NOME AS DEPARTAMENTO FROM EMPREGADO E LEFT JOIN DEPARTAMENTO D ON E.NU_EMP_DEPARTAMENTO = D.ID_DEP_CODIGO; SELECT E.ID_EMP_MATRICULA AS MATRICULA, E.VC_EMP_NOME AS NOME, D.VC_DEP_NOME AS DEPARTAMENTO FROM EMPREGADO E INNER JOIN DEPARTAMENTO D ON E.NU_EMP_DEPARTAMENTO != D.ID_DEP_CODIGO; SELECT E.ID_EMP_MATRICULA AS MATRICULA, E.VC_EMP_NOME AS NOME, D.VC_DEP_NOME AS DEPARTAMENTO FROM EMPREGADO E INNER JOIN DEPARTAMENTO D ON E.NU_EMP_DEPARTAMENTO = D.ID_DEP_CODIGO; Respondido em 16/05/2019 14:39:56 Gabarito Coment. 2a Questão Qual comando representa a especificação abaixo? Especifica a junção entre duas tabelas com uma cláusula de junção explícita. WHERE INNER JOIN GROUP BY ORDER BY SELECT Respondido em 16/05/2019 14:40:14 Gabarito Coment. 3a Questão A operação SQL que recupera tuplas provenientes de duas tabelas é: Projeção Relação Seleção Junção Subtração Respondido em 16/05/2019 14:40:33 Gabarito Coment. 4a Questão Em uma junção Cruzada entre três tabelas com respectivamente 10, 8 e 4 resgistros, gerará uma saída com quantos registros? 320 registros 20 registros 160 registros 220 registros 22 registros Respondido em 16/05/2019 14:41:11 5a Questão A junção irrestrita também é conhecida como: Junção Cruzada Junção Interior Junção Contínua Junção Exterior Autojunção Respondido em 16/05/2019 14:41:24 6a Questão São restrições para manipular (INSERT, DELETE ou UPDATE) os dados de uma tabela no banco dados através de uma visão, EXCETO: Não possuir a cláusula DISTINCT na sua consulta. As cláusulas GROUP BY ou HAVING não estarem presentes na sua consulta. Não possuir colunas derivadas de funções de agregação. A chave primaria estar contida na consulta que originou a visão. Não possuir junções, ou seja, ter sido criada sobre uma única tabela. Respondido em 16/05/2019 14:42:31 Explicação: A chave primária deve estar contida na consulta que gerou a visão para que possa receber valor em caso de INSERT. 7a Questão Conforme a relação de empregado abaixo, através da álgebra relacional, escolha a opção que selecione o nome e endereço de cada empregado, que possua salário superior a R$ 5.000,00. Empregado(matrícula, nome, endereço, salário, departamento, cargo). π salario>5000 X (δ nome,endereco (Empregado)) π nome,endereco (δ salario>5000 (Empregado)) π salario>5000 (δ nome,endereco (Empregado)) π nome,endereço (Empregado) X (δ salario>5000 (Empregado)) δ nome,endereco (π salario>5000 (Empregado)) Respondido em 16/05/2019 14:42:43 Gabarito Coment. 8a Questão Uma operação de junção pode ser considerada uma sequência de duas operações. São elas: INTERSEÇÃO E UNIÃO PRODUTO CARTESIANO E SELEÇÃO SELEÇÃO E PROJEÇÃO PROJEÇÃO E UNIÃO PRODUTO CARTESIANO E PROJEÇÃO AULA 7 1a Questão Qual dos operadores de conjunto a seguir, devemos tomar cuidado na hora de colocarmos a ordem das tabelas, pois retorna diferentes resultados ao se inverter a ordem das tabelas? UNION ALL INTERSECT UNION MINUS MINUS ALL Respondido em 16/05/2019 14:43:53 Gabarito Coment. 2a Questão Qual opção abaixo representa uma sequência de operadores de conjunto? char, unique, varchar e numeric foreign key, primary key, references e unique varchar, primary key, references e check union, union all, intersect e except char, date, vardate e int Respondido em 16/05/2019 14:44:07 Gabarito Coment. 3a Questão Sabendo que a estrutura da tabela é: ID_EMP_MATRICULA, VC_EMP_NOME, NU_EMP_CARGO, NU_EMP_SALARIO, NU_EMP_GRATIFICACAO, NU_EMP_DESCONTO. Pede-se que, exiba a(s) matrícula(s), o(s) nome(s), o(s) salário(s) líquido(s) do(s) maior(es) salário(s) pago(s) aos empregados pela empresa, apenas dos que sejam do cargo de código 99 e que o salário líquido seja maior que 3000. Para se resolver essa consulta deve-se obrigatoriamente usar além das argumentos SELECT e FROM, usar: WHERE. WHERE, GROUP BY e SUBQUERY. WHERE e HAVING e SUBQUERY. WHERE e SUBQUERY. WHERE, GROUP BY e HAVING. Respondido em 16/05/2019 14:44:41 Gabarito Coment. 4a Questão Uma consulta que ocorre dentro de outro comando SQL é denominada: Consulta interna Operação Subconsulta Não é possivel uma consulta deste tipo Consulta externa Respondido em 16/05/2019 14:46:04 5a Questão (FCC - 2009 - Análise de Sistemas - Suporte - ADAPTADA) Uma instrução Select usada na cláusula Where ou Having de outra instrução Select é Uma visão. Um crosstab. Um join. Um índice. Uma subconsulta. Respondido em 16/05/2019 14:46:44 6a Questão Qual dos tipos de sub-consulta que faz referência a uma coluna da tabela da consulta externa? Sub-Consulta Principal Sub-Consulta Correlata Sub-Consulta Multi-Linhas Sub-Consulta Simple Sub-Consulta Multi-Valorada Respondido em 16/05/2019 14:47:10 7a Questão Qual dos operadores de comparação de consultas Multi-Linhas a seguir NÃO é válido? < ALL = ANY > ALL = <> ALL Respondido em 16/05/2019 14:47:46 8a Questão (FGV - 2010 - DETRAN-RN - Assessor Técnico - Administração de Banco de Dados) Assinale a alternativa correta sobre fragmento de comando a seguir: (select distinct nome_cliente from contas) intersect (select distinct nome_cliente from emprestimos) Se um cliente tem diversas contas e empréstimos no banco, aparecerá somente uma vez no resultado. Se um cliente não possui conta mas possui empréstimos no banco, aparecerá no resultado. Se um cliente tem diversas contas e empréstimos no banco, não aparecerá no resultado. Se um cliente tem diversas contas e empréstimos no banco, aparecerá todas as repetições no resultado. Se um cliente possui conta mas não possui empréstimos no banco, aparecerá no resultado. AULA 8 1a Questão Analise as afirmações abaixo: I. Quando fazemos uma consulta em umaView podemos usar todos as clausulas do comando Select, tais como : Where, Group By, Having e Order By. II. Quando fazemos uma consulta em uma View podemos utilizar os operadores relacionais ( in, between, like, is null), os operadores lógicos ( and, or not) e as funções de grupo. III. Quando fazemos uma consulta em uma View podemos fazer junções com uma tabela IV. Quando fazemos uma consulta em uma View podemos fazer subconsultas e utilizar operadores de conjunto; São VERDADEIRAS: I e II. I, III e IV. I, II, III e IV. I, II e III. I, II, e IV. Respondido em 16/05/2019 14:50:11 2a Questão Dentre as regras de utilização de NEXTVAL e CURRVAL, qual das opções abaixo NÃO pode ser usada? Na cláusula WHERE de um comando DELETE No SELECT da query principal de uma construção com subqueries Numa cláusula SELECT em tabelas (exceção a Views) Na cláusula SET de um comando UPDATE Na cláusula VALUES de um comando INSERT Respondido em 16/05/2019 14:50:28 Gabarito Coment. 3a Questão Para sabermos o valor atual em uma sequência, devemos usar: Select NomeSequencia.NEXTVAL from NomeTabela Select NomeSequencia.NEXTVAL from Dual Select NomeSequencia.CURRVAL from Dual Nenhuma das demais respostas Select NomeSequencia.CURRVAL from NomeTabela Respondido em 16/05/2019 14:50:37 Gabarito Coment. 4a Questão Para criarmos um índice para a tabela Fornecedor pelo Bairro e Cidade devemos dar o seguinte comando: Create Index Forn_Bairro_Cidade From Fornecedor BY Bairro, Cidade Create Index Forn_Bairro_Cidade ON Fornecedor(Bairro, Cidade) Create Index Fornecedor ON Forn_Bairro_Cidade(Bairro, Cidade) Create Index Fornecedor BY Bairro, Cidade Create Index Forn_Bairro_Cidade ON Fornecedor BY Bairro, Cidade Respondido em 16/05/2019 14:50:45 Gabarito Coment. 5a Questão São tipos de visões: Simples Abstratas Simples e Complexas Complexas Simples e Abstratas Respondido em 16/05/2019 14:50:56 Gabarito Coment. 6a Questão 1. ______________ são objetos que apresentam auto-incremento. 2. ______________ uma pseudocoluna utilizada para extrair valores de uma sequence qualquer, sempre que for referenciada. 3. ______________ uma pseudocoluna utilizada para informar o último valor gerado por uma sequence. É sempre incrementada após um ______________ 4. Nextval e currval ___________ ser usados na cláusula VALUES de um comando INSERT 5. Nextval e currval ___________ ser usados dentro de uma subconsulta. As palavras que preenchem as lacunas corretamente estão representadas em: (1) sequences (2) nextval (3) currval e nextval (4) podem (5) podem (1) sequences (2) nextval (3) currval e nextval (4) podem (5) não podem (1) sequences (2) currval (3) nextval e nextval (4) não podem (5) não podem (1) sequences (2) currval - (3) nextval e nextval (4) não podem (5) podem (1) indices (2) nextval (3) currval e nextval (4) podem (5) não podem Respondido em 16/05/2019 14:51:02 Gabarito Coment. 7a Questão O comando SQL para criar uma visão chamada Eye, abrangendo os atributos A1 e A2 da tabela Pen, é: CREATE VIEW Eye AS SELECT A1, A2 FROM Pen COMPOSE FLASH Eye AS A1, A2 FROM Pen BUILD Eye AS INSERT A1, A2 FROM Pen COMPILE Eye AS INSERT A1, A2 FROM Pen CREATE DROP Eye FROM A1, A2 FROM Pen Respondido em 16/05/2019 14:51:08 Gabarito Coment. 8a Questão O comando para apagar um visão é: DELETE VIEW DEL VIEW NEW VIEW DROP VIEW CANCEL VIEW AULA 9 1a Questão Para iniciar uma transação no Oracle, basta usarmos um comando SQL executável e para encerrar, podemos usar qualquer dos comandos abaixo, com Exceção de: GRANT COMMIT CREATE SELECT ROLLBACK Respondido em 16/05/2019 14:51:39 Gabarito Coment. 2a Questão A propriedade que garante que todas as operações de uma transação são refletidas corretamente no banco de dados ou nenhuma será é: Isolamento Indisivibilidade Atomicidade Durabilidade Consistência Respondido em 16/05/2019 14:52:23 3a Questão O comando SQL que garante a atomicidade de uma transação é: ROOLBACK GRANT COMMIT REVOKE USER Respondido em 16/05/2019 14:52:37 Gabarito Coment. 4a Questão A propriedade que garante que depois de a transação completar-se com sucesso, as mudanças que ela faz no banco de dados permanecem, até mesmo se houver falha no sistema é: Consistência Persistência Coerência Atomicidade Durabilidade Respondido em 16/05/2019 14:52:51 Gabarito Coment. 5a Questão Dentre as propriedades de uma transação, qual delas é responsável por preservar a integridade do banco de dados? Consistência Durabilidade Isolamento Atomicidade Isonomia Respondido em 16/05/2019 14:53:00 6a Questão Uma unidade de execução de programa delimitada pelos comandos BEGIN TRANSACTION e END TRANSACTION é denominada uma: Proograma Transação Operação Comando Seleção Respondido em 16/05/2019 14:53:19 7a Questão A propriedade que garante a proteção de uma transação dos efeitos de atualizações executadas por outras transações simultâneas é: Consistência Isolamento Atomicidade Persistência Durabilidade Respondido em 16/05/2019 14:53:31 Gabarito Coment. 8a Questão (CESGRANRIO - 2006 - EPE - Área Tecnologia da Informação) Para as técnicas de controle de concorrência em Bancos de Dados, assinale a afirmativa INCORRETA. O deadlock ocorre quando cada transação em um conjunto de duas ou mais transações espera por algum item que esteja bloqueado por alguma outra transação T no conjunto. Uma forma para detectar um estado de deadlock consiste em construir um grafo wait-for. As técnicas de controle de concorrência baseadas em ordenação por timestamp não usam bloqueios, portanto, deadlocks nunca podem ocorrer. Diz-se que uma transação segue o protocolo de bloqueio de duas fases se todas as operações (read_lock, write_lock) precedem a última operação de desbloqueio na transação O problema de espera indefinida (starvation) pode ocorrer se o esquema de espera para itens bloqueados for parcial, dando prioridade a algumas transações sobre as outras. AULA 10 1a Questão As abordagens clássicas utilizadas pelo otimizador de consultas são: Custo e tempo Regras Custo Regras e custo Regras e tempo Respondido em 16/05/2019 14:54:11 Gabarito Coment. 2a Questão Quantos acessos a disco são necessários para encontrar uma linha de uma tabela utilizando um índice hash, admitindo que não há a ocorrência de overflow debuckets? log2n PR 2n 1 2 Respondido em 16/05/2019 14:54:19 3a Questão Os SGBD´s possuem abordagens para otimizar as consultas em um banco de dados. Quando o SGBD não possui no dicionário de dados estatísticas sobre o objeto referenciado, o otimizador aplica regras baseadas na sintaxe dos comandos e define o melhor caminho com o menor número de ranking da análise dos possíveis caminhos. Marque a alternativa que indica a abordagem denominada para este procedimento. Baseada em semântica. Baseada em custo. Baseada em regras. Baseada em processamento. Baseada em roteamento. Respondido em 16/05/2019 14:54:30 Gabarito Coment. 4a Questão (CESGRANRIO - 2010 - IBGE - Analista de Sistemas - Desenvolvimento de Aplicações) Algumas regras de heurísticas vinculadas à álgebra relacional, como "execute as operações de seleção o mais cedo possível", "execute antes as projeções" e "evite os produtos cartesianos", são usualmente empregadas em sistemas gerenciadores de bancos de dados para a implementação de chaves primárias e estrangeiras. recuperação de dados após falhas. controle de concorrência. índices do tipo bit map. otimização de consultas. Respondido em 16/05/2019 14:55:03 5a Questão Os SGBD ́s possuem abordagens para otimizar as consultas em um banco de Se o dicionário de dados mantém estatísticas sobre o objeto referenciado, o otimizador utilizará estas estatísticas para fazer a seleção dos caminhos. Marque a alternativa que indica a abordagem denominada para este procedimento. Baseada em semântica. Baseada em regras. Baseada em roteamento. Baseada em custo. Baseada em processamento. Respondido em 16/05/2019 14:55:15 6a Questão O otimizador do Oracle transforma condições envolvendo certos operadores, no caso do operador BETWEEN, ao usarmos como o exemplo a construção: Salario BETWEEN 1000 AND 3000 A sua otimização resultante será: salário > 1000 OR salário < 3000 salário >= 1000 AND salário <= 3000 salário >= 1000 OR salário <= 3000 salário < 1000 OR salário > 3000 salário > 1000 AND salário < 3000 Respondido em 16/05/2019 14:55:22 Gabarito Coment. 7a Questão O SGBD realiza a execução de comandos em 5 etapas. Marque a alternativa que nomeia a etapa onde o SGBD verifica a existência de tabelas, visões e colunas, bem como realiza verificações de tipos dos atributos e dados utilizados na consulta. Reescrita de consulta Geração de Código Analise sintática Otimização de consulta Analise semântica Respondido em 16/05/2019 14:55:48 Gabarito Coment. 8a Questão Sobre algoritmos para o processamento de junções, assinale a alternativa verdadeira. O algoritmo Hash Join, altamente recomendável quando as tabelas envolvidas são pequenas, não possui qualquer relação com os índices hash, nem trabalha com a noção de buckets. O algoritmo Nested-Loop Join pode produzir o menor custo de execução possível, desde que uma das duas tabelas possa ser armazenada por inteiro na memória. O algoritmo Sort Merge Join, baseado no clássico algoritmo Merge Sort, somente pode ser aplicado se as duas tabelas estiverem ordenadas por seus atributos de junção. Índices primários e secundários podem ser utilizados pelo algoritmo Nested-Loop Join com Índices, mas não o índice hash, pois não é ordenado. A variação Block Nested-Loop Join do algoritmo Nested-Loop Join não deve ser utilizada na prática, pois sempre leva a uma maior leitura de páginas do disco.