Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
IMPLEMENTAÇÃO DE BANCO DE DADOS Analise as seguintes afirmações: "(1) O valor de uma chave estrangeira só pode ser inserido em uma tabela se já existe na tabela onde é chave primária PORQUE (2) esta restrição garante a integridade referencial." Podemos afirmar: A primeira afirmação é falsa e a segunda é verdadeira. As duas afirmações são verdadeiras e primeira justifica a segunda. As duas afirmações são verdadeiras e primeira não justifica a segunda As duas afirmações são falsas. A primeira afirmação é verdadeira e a segunda é falsa. 2a Questão É responsável por garantir a Integridade Referencial: Chave Estrangeira Chave Secundária Chave Candidata Chave de Atributo Chave Primária 3a Questão Analise as afirmações a seguir, relativas ao conceito de chave primária: i. Pode ser composta por um ou vários atributos. ii. Não admite duplicidade de valores, exceto no caso de valores nulos. iii. Deve ser definida durante a construção do modelo de E-R. Marque a alternativa correta (apenas uma opção) As afirmações II e III são falsas. As afirmações I e II são falsas. Todas as afirmações são verdadeiras. Apenas as afirmações I e III são verdadeiras. Apenas as afirmações II e III são verdadeiras. Gabarito Coment. 4a Questão O entendimento dos modelos de banco de dados é fundamental para compreender as vantagens e desvantagens em aspectos de estrutura e manipulação dos dados. Um destes modelos utiliza tabelas bidimensionais para o armazenamento dos dados e a maneira como os dados são armazenados influencia na facilidade de acesso às informações, existindo técnicas de normalização para aperfeiçoar a organização. Trata-se do modelo orientado a objetos. relacional. em rede distribuído. hierárquico Gabarito Coment. 5a Questão Em banco de dados, todo método de controle de concorrência deve evitar anomalias de sincronização. Essas anomalias estão relacionadas a: I - perda da consistência do banco. II - acesso via ODBC. III - acesso a dados inconsistentes. IV - consulta recursiva. V - perda de atualizações. Estão certos apenas os itens II, III e IV. I, III e V. II, III e V. I, IV e V. I, II e IV. 6a Questão (CONSULPLAN - 2012) Dentre os objetivos da implementação de bancos de dados, um visa solucionar um problema que ocorre quando aplicações diferentes operam sobre os mesmos dados, armazenados em arquivos diferentes. Esse problema é conhecido por: Redundância de dados. Replicação de dados. Consistência de dados. Dependência de dados. Integridade de dados. 7a Questão Os conceitos de banco de dados relacional refletem o nível de abstração dos dados. Desta forma, marque a alternativa que se refere à instância da entidade. Pode ser modificado com o uso dos comandos DDL. Pode ser considerado como o resultado da aplicação do SELECT. É o conjunto de opções de preenchimento do atributo. Toda entidade deve possui chave primária. Uma chave estrangeira é sempre uma chave primária em outra tabela. 8a Questão Analise as seguintes afirmações: "(1) A restrição de integridade referencial diz que chave primária em uma relação não pode ter seu valor nulo PORQUE (2) esta chave identifica as tuplas da relação" Podemos afirmar: A primeira afirmação é falsa e a segunda é verdadeira. As duas afirmações são falsas. As duas afirmações são verdadeiras e a primeira não justifica a segunda. As duas afirmações são verdadeiras e a primeira justifica a segunda. A primeira afirmação é verdadeira e a segunda é falsa. A relação T1 abaixo conterá: T1 = nome, sexo,salário,dept ((sexo="MASCULINO") and (salário<5000) (EMPREGADO)) Nome e depto de todos os empregados homens que ganham menos que 5000 Nome, sexo, salário e depto de todos os empregados homens que ganham menos que 5000 Esta não é uma consulta válida Nome, sexo, salário e depto de todos os empregados que ganham menos que 5000 Nome, sexo, salário e depto de todos os empregados homens que ganham 5000 Gabarito Coment. Gabarito Coment. 2a Questão Admitindo as relações abaixo especificadas, marque a alternativa que representa a consulta em álgebra relacional que responde corretamente a seguinte pergunta: quais os nomes dos alunos e seus respectivos cursos? Alunos(matricula, nome, endereco, cpf, cod_curso) Cursos(codigo, nome_curso) ᴨnome, nome_curso(σcod_curso=codigo (Alunos X Cursos)) ᴨnome, nome_curso(σmatricula=codigo (Alunos X Cursos)) ᴨnome, nome_curso(σcod_curso=codigo (Alunos)) σnome, nome_curso(ᴨcod_curso=codigo (Alunos X Cursos)) ᴨnome, nome_curso(Alunos X Cursos) Gabarito Coment. 3a Questão A operação da álgebra relacional que recupera linhas em uma tabela é denominada: Seleção Diferença Projeção Junção Produto cartesiano Gabarito Coment. Gabarito Coment. 4a Questão Considere a relação: FILME (nome, diretor, tempoduracao, genero, ano) A consulta em álgebra relacional que retorna o nome e o ano de todos os filmes de ação com tempo de duração entre 120 e 180 minutos. nome, ano ((genero = "ação" AND tempoduracao >= 120 AND tempoduracao <= 180) (FILME) ) nome, ano ((genero = "ação" AND tempoduracao >= 120 OR tempoduracao <= 180) (FILME) ) nome, ano ((genero = "ação" AND tempoduracao >= 120 AND tempoduracao <= 180) (FILME) ) nome, ano ((genero = "ação" OR tempoduracao >= 120 AND tempoduracao <= 180) (FILME) ) nome, ano ((genero = "ação" AND tempoduracao = 120) (FILME) ) Gabarito Coment. 5a Questão Uma linguagem de consulta procedural, onde o objetivo fundamental é permitir a escrita de expressões relacionais é denominada de álgebra relacional. Com suas operações fundamentais é possível exprimir qualquer consulta nesta linguagem. Sendo assim, para apresentar os dados de acordo com a tabela abaixo, marque a alternativa correta que descreve a álgebra a ser utilizada. Produto.Nome Produto.Qualidade Estoque.Qtde Laranja 1 100 Laranja 2 150 Uva 1 200 Uva 2 130 Trigo 2 240 Pêssego 1 260 Pêssego 2 190 πNome, Qualidade, Qtde πNome, Qualidade, Qtde(σProduto.Cod_Prod = Estoque.Cod_Prod(Produto X Estoque)) πNome, Qualidade, Qtde(σProduto.Cod_Prod = Estoque.Cod_Prod) σProduto.Cod_Prod = Estoque.Cod_Prod(πNome, Qualidade, Qtde) σProduto.Cod_Prod = Estoque.Cod_Prod(Produto X Estoque) Gabarito Coment. 6a Questão Em relação a álgebra linear é correto afirmar que: I - A operação de projeção é aplicada sobre apenas uma relação visando selecionar um subconjunto de tuplas (com todos os seus atributos). II O produto cartesiano é uma operação binária que combina todas as tuplas de duas tabelas. III - A operação de seleção é aplicada sobre apenas uma relação de visando projetar os atributos de uma relação de acordo com uma lista de atributos oferecida. Estão corretas: Somente I Somente a II I e III Somente III II e III Gabarito Coment. 7a Questão Considere as relações: PROFESSOR (matriculaprf, nomeprf, titulacao, anoadmissao) MINISTRA (matricula, codigo) matricula REFERENCIA matriculaprf em PROFESSOR codigo REFERENCIA codigodisciplina em DISCIPLINA DISCIPLINA (codigodisciplina, nomedisciplina, creditos) A consulta em álgebra relacional que responde a questão "Quem são os professores (nome e matrícula) que ministram a disciplina Implementação de Bancos de Dados" está corretamente representada em: matriculaprf, nomeprf (PROFESSOR matriculaprf = ⋈matricula (nomedisciplina = "Implementação de Bancos de Dados" (DISCIPLINA)) matriculaprf, nomeprf (PROFESSOR matriculaprf = ⋈matricula (MINISTRAcodigo = ⋈codigodisciplina (DISCIPLINA))) matriculaprf, nomeprf (PROFESSORmatriculaprf = ⋈matricula MINISTRA) Não existe consulta que responda a esta questão. Gabarito Coment. 8a Questão De acordo com a tabela a seguir, como fica a instrução de seleção para recuperarmos os funcionários possuem ID maior do que 102, trabalham no Departamento 10 e ganham mais de R$ 2.000,00 de Salário? ID > 102 OU id_Depto = 10 OU Salario > 2000 (Empregado) ID = 102 E id_Depto = 10 E Salario > 2000 (Empregado) ID > 102 E id_Depto = 10 E Salario > 2000 (Empregado) ID = 102 OU id_Depto = OU E Salario > 2000 (Empregado) ID > 102 OU id_Depto = 10 E Salario > 2000 (Empregado) Partindo da tabela a seguir, considerando que a mesma já foi criada de acordo com essa ordem de atributos, como ficaria o comando SQL para aumentar em 10% o valor unitário de cada produto? UPDATE X_PROD SET VALOR_UNIT = VALOR_UNIT + VALOR_UNIT * 10 /100; UPDATE X_PROD SET VALOR_UNIT + 10 /100; UPDATE X_PROD SET VALOR_UNIT + VALOR_UNIT * 10 /100; UPDATE X_PROD SET VALOR_UNIT = VALOR_UNIT * 10 /100; UPDATE X_PROD SET VALOR_UNIT = VALOR_UNIT + 10 /100; Gabarito Coment. 2a Questão O comando SQL para excluir os registros da tabela Aluno, cujo campo nome comece com a letra M, é: DELETE FROM Aluno WHERE nome='M'. DELETE FROM Aluno WHERE nome LIKE 'G%'. DELETE FROM Aluno WHERE nome LIKE 'M%'. DELETE FROM Aluno WHERE nome SUCH '%M'. DELETE FROM Aluno Gabarito Coment. 3a Questão Dado o seguinte requisito funcional: É necessário cadastrar a matrícula, o nome e o curso dos alunos, e sabendo que um aluno pode fazer mais de um curso e um curso ter mais de um aluno. Qual das questões representa a normalização correta de um banco de dados relacional? CREATE TABLE CURSOS (CODIGO INTEGER, DESCRICAO VARCHAR(100), PRIMARY KEY (CODIGO)); CREATE TABLE ALUNOS (MATRICULA INTEGER, NOME VARCHAR(100), PRIMARY KEY (MATRICULA)); CREATE TABLE INSCRICAO (ALUNO INTEGER, CURSO INTEGER, PRIMARY KEY (ALUNO,CURSO), FOREIGN KEY (ALUNO) REFERENCES ALUNOS (MATRICULA), FOREIGN KEY (CURSO) REFERENCES CURSOS (CODIGO)); CREATE TABLE CURSOS (CODIGO INTEGER, DESCRICAO VARCHAR(100), PRIMARY KEY (CODIGO)); CREATE TABLE ALUNOS (MATRICULA INTEGER, NOME VARCHAR(100), CURSO INTEGER, PRIMARY KEY (MATRICULA), FOREIGN KEY (CURSO) REFERENCES CURSOS (CODIGO)); CREATE TABLE CURSOS (CODIGO INTEGER, DESCRICAO VARCHAR(100), PRIMARY KEY (CODIGO)); CREATE TABLE ALUNOS (MATRICULA INTEGER, NOME VARCHAR(100), PRIMARY KEY (MATRICULA)); CREATE TABLE INSCRICAO (ALUNO INTEGER, CURSO INTEGER, PRIMARY KEY (ALUNO,CURSO)); CREATE TABLE ALUNOS (MATRICULA INTEGER, NOME VARCHAR(100), CURSOS VARCHAR(50), PRIMARY KEY (MATRICULA)); CREATE TABLE CURSOS (CODIGO INTEGER, DESCRICAO VARCHAR(100), PRIMARY KEY (CODIGO)); CREATE TABLE ALUNOS (MATRICULA INTEGER, NOME VARCHAR(100), CURSO INTEGER, PRIMARY KEY (MATRICULA)); Gabarito Coment. 4a Questão Partindo da tabela a seguir, considerando que a mesma já foi criada de acordo com essa ordem de atributos, como ficaria o comando SQL para inserir um registro na tabela? INSERT INTO X_PROD VALUES ('TV Led 40 polegadas', 20, 400, 3000); INSERT INTO X_PROD VALUES ( 20, 'TV Led 40 polegadas', 400, 3000); INSERT INTO X_PROD VALUES ('20', 'TV Led 40 polegadas', '400', '3000'); INSERT INTO X_PROD VALUES ( TV Led 40 polegadas, 20, 400, 3000); INSERT INTO X_PROD VALUES (20, TV Led 40 polegadas, 400, 3000); Gabarito Coment. Gabarito Coment. 5a Questão A linguagem SQL pode ter vários enfoques, EXCETO: Linguagem interativa de consulta (query AdHoc) Linguagem de consulta em ambiente cliente/servidor Linguagem para acesso às bases de dados Linguagem de administração de banco de dados Linguagem para a programação de sistemas de informação Gabarito Coment. Gabarito Coment. 6a Questão No Script SQL de criação da tabela pagamento aparece a palavra 'funcionario' 4 vezes. Sendo assim, é possível afirmar que se referem, respectivamente: apelido, atributo, tabela, chave estrangeira tupla, chave primária, apelido, chave estrangeira atributo, apelido, campo, tabela campo, atributo, apelido, tabela coluna, tabela, apelido, chave primária 7a Questão O comando SQL que apaga um tabela é: INSERT INTO REMOVE TABLE DROP TABLE UPDATE DELETE TABLE 8a Questão (CONSULPLAN - 2012) Ao contrário das linguagens tradicionais, que são procedimentais, SQL é uma linguagem declarativa, que integra três sublinguagens: Data Manipulation Language (DML), Data Definition Language (DDL) e Data Control Language (DCL). Um comando DML e outro DDL são, respectivamente: Drop e Grant. Update e Drop. Delete e Update. Update e Grant. Grant e Delete. De acordo com o modelo de dados definido pelas tabelas a seguir, indique a instrução SQL adequada para: Apresentar apenas os nomes completos dos Empregados que trabalhem nos Departamentos 11, 21, 22, 31, 42 ou 51. SELECT PRIM_NOME || ' ' || ULT_NOME FROM EMPREGADO WHERE ID_DEPTO IN (11, 21, 22, 31, 42, 51); SELECT PRIM_NOME, ULT_NOME FROM EMPREGADO WHERE ID_DEPTO ON (11, 21, 22, 31, 42, 51); SELECT PRIM_NOME || ' ' || ULT_NOME FROM EMPREGADO WHERE ID_DEPTO =11 AND ID_DEPTO =21 AND ID_DEPTO =22 AND ID_DEPTO =31 AND ID_DEPTO =42 AND ID_DEPTO =51; SELECT PRIM_NOME || ' ' || ULT_NOME FROM EMPREGADO WHERE ID_DEPTO ON (11, 21, 22, 31, 42, 51); SELECT PRIM_NOME, ULT_NOME FROM EMPREGADO WHERE ID_DEPTO IN (11, 21, 22, 31, 42, 51); Gabarito Coment. 2a Questão Observe a tabela R: Qual será o resultado da consulta: SELECT X FROM R WHERE Y is null; 4 e null 1 e 5 1 e 4 null e 5 5 3a Questão Analise as seguintes instruções abaixo: SELECT * FROM PAÍS; SELECT NOMEPOPULAR FROM NOME; SELECT * FROM CAPTURA WHERE TEMPAGUA < 25; SELECT * FROM ESPÉCIE; Nos comandos SELECT acima encontramos exemplos de: Duas projeções e duas seleções. Uma seleção e uma projeção. Duas seleções e uma projeção. Duas projeções e duas restrições. Duas projeções e uma seleção. Gabarito Coment. 4a Questão O operador que possibilita a seleção de uma faixa de valores sem a necessidade do uso dos operadores >=, <= e AND é: LIKE BETWEEN GROUP BY IN HAVING 5a Questão Qual comando SQL é utilizado para obter um conjunto de dados em uma tabela em um banco de dados? INSERT GET SELECT JOIN UPDATE 6a Questão O esquema de banco de dados apresentado abaixo faz parte de um banco de dados criado a partir de um conjunto de dados públicos de captura de tubarões entre os anos de 2001 e 2013 na costa da Austrália. Os dados podem ser baixados no endereço: https://data.qld.gov.au/dataset/shark-control-program-shark-catch-statistics/resource/5c6be990-3938-4125-8cca-dac0cd734263 Características do esquema: Chave primária sublinhada e chave estrangeira em itálico. Seguem algumas tabelas do Esquema: Nome (IDNome, IDEspécie, NomePopular) Tubarão (IDTubarão, IDEspécie, Comprimento, Sexo) Captura (NumCaptura, IDTubarão, IDLocal, Data, TempAgua) Local (IDLocal, CodArea, NomeLocal) Area (CodArea, NomeArea) Sabendo-se que a tabela nome contém nomes populares de tubarões e deseja-se listar o comprimento e o sexo de todos os tubarões que tem nome popular terminado com a letra k. Assinale a alternativa abaixo que retorna corretamente a consulta desejada: SELECT Comprimento, Sexo FROM Tubarão T, Espécie E, Nome N WHERE T.IDEspecie = E.IDEspecie AND N.IDEspécie = E.IDEspecie AND NomePopular like '%k'; SELECT Comprimento, Sexo FROM Tubarão T, Espécie E, Nome N WHERE T.IDEspecie = N.IDEspécie AND NomePopular like '%k'; SELECT Comprimento, Sexo FROM Tubarão T, Espécie E, Nome N WHERE T.IDEspecie = E.IDEspecie AND N.IDEspécie = E.IDEspecie AND UPPER (NomePopular) like '_k'; SELECT Comprimento, Sexo FROM Tubarão T, Espécie E, Nome N WHERE T.IDEspecie = E.IDEspecie AND N.IDEspécie = E.IDEspecie AND UPPER (NomePopular) like '%k%'; SELECT * FROM Tubarão T, Espécie E, Nome N WHERE T.IDEspecie = E.IDEspecie AND N.IDEspécie = E.IDEspecie AND NomePopular like '%k'; 7a Questão Sobre a cláusula WHERE do comando SELECT, é correto afirmar que: Filtra as linhas a serem exibidas no resultado Filtra as colunas a serem exibidas no resultado É utilizado em todos os comandos SELECT Nunca pode ser utilizado com uma junção Especifica condição de ordenação 8a Questão Considere as seguintes tabelas de um banco de dados: - FORNECEDOR { for_codigo, for_nome, for_telefone, for_cidade, est_uf } - ESTADO { est_uf, est_nome } A instrução SQL que recupera os nomes dos estados para os quais não há fornecedores cadastrados é: SELECT e.est_uf FROM estado AS e WHERE e.est_nome NOT IN ( SELECT f.est_uf FROM fornecedor AS f ); SELECT e.est_nome FROM estado AS e WHERE e.est_uf IN ( select f.est_uf FROM fornecedor AS f ); SELECT e.est_nome FROM estado AS e WHERE e.est_uf NOT IN ( SELECT f.est_uf FROM fornecedor AS f ); SELECT e.est_nome FROM estado AS e, fornecedor AS f WHERE e.est_nome <> f.est_uf; SELECT e.est_nome FROM estado AS e, FROM fornecedor AS f WHERE e.est_uf = f.est_uf; Observe a tabela abaixo, referente a um banco de dados empresa: Para gerar uma consulta SQL com todos os atributos, classificados por NOME_PACIENTE, deve-se utilizar o seguinte comando: SELECT * OVER PACIENTE ORDER BY NOME_PACIENTE; SELECT * OVER PACIENTE ASC NOME_PACIENTE; SELECT * FROM PACIENTE DESC NOME_PACIENTE; SELECT * FROM PACIENTE ASC NOME_PACIENTE; SELECT * FROM PACIENTE ORDER BY NOME_PACIENTE; Gabarito Coment. 2a Questão Qual será o resultado da consulta SELECT COUNT(DISTINCT salario) FROM funcionario? 6 7 8 5 9 Gabarito Coment. 3a Questão Na linguagem SQL, para totalizarmos os valores de uma coluna usamos o comando: SUM COUNT GROUP BY AVG EQUAL Gabarito Coment. 4a Questão UM recurso do comando SELECT é a possibilidade de agruparmos nossos dados. Para isso usamos a cláusula: GROUP BY SUM ORDER ORDER BY JOIN Gabarito Coment. 5a Questão De acordo com o modelo de dados definido pelas tabelas a seguir, indique a instrução SQL adequada para: Apresentar o maior salário pago aos Empregados Agrupados por Departamento, para os Departamentos (11, 21, 22, 31, 42, 51). SELECT MAX(SALARIO) FROM EMPREGADO WHERE ID_DEPTO IN (11, 21, 22, 31, 42, 51) GROUP BY ID_DEPTO; SELECT MAXIMO(SALARIO) FROM EMPREGADO WHERE ID_DEPTO ON (11, 21, 22, 31, 42, 51) GROUP BY ID_DEPTO; SELECT MAXIMO(SALARIO) FROM EMPREGADO WHERE ID_DEPTO IN (11, 21, 22, 31, 42, 51) GROUP BY ID_DEPTO; SELECT MAX(SALARIO) FROM EMPREGADO WHERE ID_DEPTO ON (11, 21, 22, 31, 42, 51) GROUP BY ID_DEPTO; SELECT MAX(SALARIO) FROM EMPREGADO WHERE ID_DEPTO =11 AND ID_DEPTO =21 AND ID_DEPTO =22 AND ID_DEPTO =31 AND ID_DEPTO =42 AND ID_DEPTO =51; Gabarito Coment. 6a Questão Considere a seguinte consulta SQL: SELECT nome, count(*) FROM aluno GROUP BY nome Esta consulta tem como resultado. o atributo nome e o número de registros existentes para cada nome, na tabela nome. o atributo nome e o número de registros existentes para cada nome, da tabela aluno. todos os atributos das tabelas nome e aluno. o atributo nome e a soma do conteúdo do atributo nome, da tabela aluno. todos os atributos da tabela nome, além do atributo especial Count. Gabarito Coment. 7a Questão Em SQL, para contar linhas usamos: SUM SELECT AVG GROUP BY COUNT 8a Questão Considere a relação: ALUNO (matrícula, nome, endereço, estado, cidade, cep, datadeingresso, coeficiente_de_rendimento) A consulta SQL para listar os alunos com maior e menor coefiente de rendimento nos estado de SP, RJ e MG é: SELECT MAX(COEFICIENTE_DE_RENDIMENTO), MIN(COEFICIENTE_DE_RENDIMENTO) FROM ALUNO; SELECT MAX(COEFICIENTE_DE_RENDIMENTO), MIN(COEFICIENTE_DE_RENDIMENTO) FROM ALUNO WHERE ESTADO = 'SP' OR ESTADO = 'RJ' OR ESTADO = 'MG'; Nenhuma das respostas acima SELECT MAX, MIN(COEFICIENTE_DE_RENDIMENTO) FROM ALUNO WHERE ESTADO = 'SP' OR ESTADO = 'RJ' OR ESTADO = 'MG'; SELECT MAX(COEFICIENTE_DE_RENDIMENTO), MIN(COEFICIENTE_DE_RENDIMENTO) FROM ALUNO WHERE ESTADO = IMPLEMENTAÇÃO DE BANCO DE DADOS 6a aula Lupa Vídeo PPT MP3 Exercício: CCT0768_EX_A6_201401414761_V1 10/04/2019 (Finaliz.) Aluno(a): JOSE LEONARDO LOPES SENA 2019.1 EAD Disciplina: CCT0768 - IMPLEMENTAÇÃO DE BANCO DE DADOS 201401414761 1a Questão São tipos de JOIN: Apenas o INNER JOIN. Apenas o INNER JOIN e o LEFT JOIN. SELECT JOIN, INNER JOIN, LEFT JOIN e RIGHT JOIN. SELECT JOIN e INNER JOIN. INNER JOIN, LEFT JOIN e RIGHT JOIN. Gabarito Coment. 2a Questão Um sistema de informação usa um banco de dados relacional que possui tabelas cujos esquemas em SQL estão representados a seguir. CREATE TABLE Artista ( id INTEGER PRIMARY KEY, nome VARCHAR(40) NOT NULL, CPF CHAR(11) NOT NULL, dataNascimento DATE, UNIQUE (CPF) ); CREATE TABLE Evento ( id INTEGER PRIMARY KEY, descricao VARCHAR(60) NOT NULL, numMaxConvidados INTEGER DEFAULT 0, CHECK (numMaxConvidados >= 0) ); CREATE TABLE Atuacao ( idArtista INTEGER, idEvento INTEGER, PRIMARY KEY (idArtista, idEvento), FOREIGN KEY (idArtista) REFERENCES Artista, FOREIGN KEY (idEvento) REFERENCES Evento(id)); O sistema também possui uma consulta que integra um de seus relatórios, conforme indicado a seguir: SELECT A.nome, E.descricao FROM Evento E FULL JOIN Atuacao T ON E.id = T.idEvento FULL OUTER JOIN Artista A ON T.idArtista = A.id Considerando que todas as tabelas possuem dados, o resultado da consulta utilizada no relatório e: O nome de todos os artistas combinados com a descrição de todos os eventos O nome de todos os artistas e a descrição de todos os eventos em que eles atuam. A descrição de todos os eventos e, caso haja artistas alocados, os seus nomes. O nome de todos os artistas e, caso eles participem de eventos, a descrição do evento. O nome de todos os artistas, a descrição de todos os eventos e, caso eles se relacionem, os dois combinados. Gabarito Coment. 3a Questão Qual a sintaxe SQL-SELECT errada? SELECT X.COLUNA1, AVG(Y.COLUNA2) FROM TABELA1 X INNER JOIN TABELA2 Y ON X.COLUNA3=Y.COLUNA4 GROUP BY X.COLUNA1; SELECT COLUNA1, COLUNA2, COLUNA3 FROM TABELA1 ORDER BY 1 ASC, 2 DESC, 3 ASC; SELECT COLUNA1, COLUNA2 FROM TABELA1 WHERE COLUNA3 LIKE ('%X%') ORDER BY 3; SELECT COUNT(*) FROM TABELA1; SELECT COLUNA1, COLUNA2 FROM TABELA1 WHERE COLUNA3 IN (1,2,3); Gabarito Coment. 4a Questão Considere as afirmações abaixo: 1. As relações podem ser manipuladas através de operadores relacionais. Embora não seja utilizada frequentemente, devido à sua complexidade, ela ajuda a esclarecer a manipulação relacional e estabelece os fundamentos para o aprendizado da SQL. 2. A Álgebra Relacional é um conjunto de operações usadas para manipular relações e é oriunda da Teoria dos Conjuntos da matemática. 3. A Álgebra Relacional é fechada, o que significa que os resultados de uma ou mais operações relacionais são sempre uma relação. São VERDADEIRAS: Somente 1. 2 e 3. 1, 2 e 3. 1 e 3. 1 e 2. Gabarito Coment. 5a Questão Para se obter a quantidade de empregados por cargo deve-se digitar qual o select abaixo: SELECT C.DESCRICAO AS CARGO, COUNT(E.MATRICULA) AS QTDE FROM CARGO C INNER JOIN EMPREGADO E GROUP BY C.DESCRICAO; SELECT C.DESCRICAO AS CARGO, COUNT(E.MATRICULA) AS QTDE FROM CARGO C INNER JOIN EMPREGADO E ON C.CODIGO = E.CARGO GROUP BY C.DESCRICAO; SELECT DESCRICAO AS CARGO, COUNT(MATRICULA) AS QTDE FROM CARGO C INNER JOIN EMPREGADO E ON CODIGO = CARGO GROUP BY DESCRICAO; SELECT C.DESCRICAO AS CARGO, COUNT(E.MATRICULA) AS QTDE GROUP BY C.DESCRICAO FROM CARGO C INNER JOIN EMPREGADO E ON C.CODIGO = E.CARGO; SELECT C.DESCRICAO AS CARGO, SUM(E.MATRICULA) AS QTDE FROM CARGO C INNER JOIN EMPREGADO E ON C.CODIGO = E.CARGO GROUP BY C.DESCRICAO; Gabarito Coment. 6a Questão Qual das consultas abaixo retorna o nome e a placa de todos os veículos? SELECT placa FROM Veiculo INNER JOIN Cliente ON Cliente_cpf = cpf; SELECT v.placa, c.nome FROM Veiculo v INNER JOIN Cliente c ON v.Cliente_cpf = c.cpf; SELECT v.placa, c.nome FROM Cliente INNER JOIN Cliente c ON v.Cliente_cpf = c.cpf; SELECT c.nome FROM Veiculo v INNER JOIN Cliente c ON cpf = cpf; SELECT c.cpf, c.nome FROM Veiculo v INNER JOIN Cliente c ON v.Cliente_cpf = c.cpf WHERE v.placa; 7a 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? 20 registros 320 registros 220 registros 22 registros 160 registros 8a 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 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 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 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 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 RIGHT JOIN DEPARTAMENTO D ON E.NU_EMP_DEPARTAMENTO = D.ID_DEP_CODIGO; IMPLEMENTAÇÃO DE BANCO DE DADOS 8a aula Lupa Vídeo PPT MP3 Exercício: CCT0768_EX_A8_201401414761_V1 10/04/2019 (Finaliz.) Aluno(a): JOSE LEONARDO LOPES SENA 2019.1 EAD Disciplina: CCT0768 - IMPLEMENTAÇÃO DE BANCO DE DADOS 201401414761 1a Questão Para criarmos um índice para a tabela Fornecedor pelo Bairro e Cidade devemos dar o seguinte comando: Create Index Fornecedor BY Bairro, Cidade Create Index Fornecedor ON Forn_Bairro_Cidade(Bairro, Cidade) Create Index Forn_Bairro_Cidade ON Fornecedor BY Bairro, Cidade Create Index Forn_Bairro_Cidade From Fornecedor BY Bairro, Cidade Create Index Forn_Bairro_Cidade ON Fornecedor(Bairro, Cidade) Gabarito Coment. 2a Questão Com relação a Chaves e índices de Banco de Dados: 1 ) Chave designa o conceito de item de busca, ou seja , um dado que será empregado na consulta à base de dados. É um conceito lógico da aplicação; 2 ) Índice e um recurso físico visando otimizar a recuperação de uma informação, via um método de acesso. Seu objetivo principal está relacionado com a performance do sistema. 3 ) Uma chave pode ser utilizada como índice , mas um índice não e necessariamente uma chave. 4) Podemos ter em um banco de dados quantos índices desejarmos, sem qualquer tipo de preocupação Escolha a alternativa correta: Todos os quatro itens estão corretos. Apenas os itens 1 e 4 estão corretos. Apenas os ítens 1 e 2 estão corretos. Apenas os ítens 2 e 3 estão corretos. Apenas os itens 1, 2 e 3 estão corretos. Gabarito Coment. 3a Questão Para sabermos o valor atual em uma sequência, devemos usar: Select NomeSequencia.NEXTVAL from NomeTabela Nenhuma das demais respostas Select NomeSequencia.CURRVAL from NomeTabela Select NomeSequencia.NEXTVAL from Dual Select NomeSequencia.CURRVAL from Dual Gabarito Coment. 4a Questão São tipos de visões: Abstratas Simples e Abstratas Simples Complexas Simples e Complexas Gabarito Coment. 5a 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) currval (3) nextval e nextval (4) não podem (5) não podem (1) indices (2) nextval (3) currval e nextval (4) podem (5) não 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) podem (1) sequences (2) nextval (3) currval e nextval (4) podem (5) podem Gabarito Coment. 6a Questão O comando SQL para criar uma visão chamada Eye, abrangendo os atributos A1 e A2 da tabela Pen, é: BUILD Eye AS INSERT A1, A2 FROM Pen CREATE DROP Eye FROM A1, A2 FROM Pen COMPILE Eye AS INSERT A1, A2 FROM Pen COMPOSE FLASH Eye AS A1, A2 FROM Pen CREATE VIEW Eye AS SELECT A1, A2 FROM Pen Gabarito Coment. 7a Questão O comando para apagar um visão é: DROP VIEW DELETE VIEW NEW VIEW DEL VIEW CANCEL VIEW Gabarito Coment. 8a Questão Dentre as regras de utilização de NEXTVAL e CURRVAL, qual das opções abaixo NÃO pode ser usada? Numa cláusula SELECT em tabelas (exceção a Views) Na cláusula VALUES de um comando INSERT Na cláusula SET de um comando UPDATE No SELECT da query principal de uma construção com subqueries Na cláusula WHERE de um comando DELETE Gabarito Coment. As abordagens clássicas utilizadas pelo otimizador de consultas são: Regras Regras e custo Custo e tempo Regras e tempo Custo 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 de buckets? 1 log2n PR 2 2n 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 processamento. Baseada em roteamento. Baseada em regras. Baseada em custo. 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 otimização de consultas. controle de concorrência. chaves primárias e estrangeiras. índices do tipo bit map. recuperação de dados após falhas. 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 custo. Baseada em processamento. Baseada em semântica. Baseada em regras. Baseada em roteamento. 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 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. Analise sintática Geração de Código Analise semântica Reescrita de consulta Otimização de consulta Gabarito Coment. 8a Questão Sobre algoritmos para o processamento de junções, assinale a alternativa verdadeira. 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. 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. Í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. 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. É responsável por garantir a Integridade Referencial: Chave de Atributo Chave Secundária Chave Candidata Chave Estrangeira Chave Primária 2a Questão (Ref.:201401562619) Acerto: 1,0 / 1,0 Relacione as colunas abaixo: (1) Tabela bidimensional, composta por linhas e colunas de dados (2) Coluna (3) Linha (4) Conjunto de valores de um atributo (5) Nomes das relações seguidas pelos nomes dos atributos, com chaves primária e estrangeiras identificadas ( ) Esquema ( ) Atributo ( ) Tupla ( ) Relação ( ) Domínio A sequência correta está representada na opção: 5,3,2,1,4 5,2,3,1,4 5,2,1,3,4 5,2,3,4,1 4,2,3,1,5 3a Questão (Ref.:201401563486) Acerto: 1,0 / 1,0 A partir da tabela abaixo, identifique a expressão, em álgebra relacional, que permite listar a matrícula dos funcionários do setor de Projetos: π matricula (σ setor = "Projetos" (Funcionarios_ste)) π Funcionarios_ste (σ matricula, setor = "Projetos") σ setor = "Projetos" (Funcionarios_ste) π setor = "Projetos" (σ matricula (Funcionarios_ste)) σ matricula (π setor = "Projetos" (Funcionarios_ste)) 4a Questão (Ref.:201401563484) Acerto: 1,0 / 1,0 Em relação a álgebra linear é correto afirmar que: I - A operação de projeção é aplicada sobre apenas uma relação visando selecionar um subconjunto de tuplas (com todos os seus atributos). II O produto cartesiano é uma operação binária que combina todas as tuplas de duas tabelas. III - A operação de seleção é aplicada sobre apenas uma relação de visando projetar os atributos de uma relação de acordo com uma lista de atributos oferecida. Estão corretas: II e III Somente a II I e III Somente I Somente III Gabarito Coment. 5a Questão (Ref.:201401563216) Acerto: 0,0 / 1,0 Como ficaria o comando SQL para criar a tabela a seguir? CREATE TABLE X_PROD ( CODIGO NUMBER(5) PRIMARY KEY, DESCRICAO VARCHAR2(40) NOT NULL UNIQUE, QUANTIDADE NUMBER(8), VALOR_UNIT NUMBER(9,2) ) CREATE TABLE X_EMPR ( CODIGO NUMBER(5) PRIMARY KEY, DESCRICAO VARCHAR2(40) NOT NULL UNIQUE, QUANTIDADE NUMBER(8), VALOR_UNIT NUMBER(9,2) ) CREATE TABLE X_EMPR ( CODIGO NUMBER(5) PRIMARY KEY, DESCRICAO VARCHAR2(40) NOT NULL, QUANTIDADE NUMBER(8), VALOR_UNIT NUMBER(9,2) ) CREATE TABLE X_PROD ( CODIGO NUMBER(5) PRIMARY KEY, DESCRICAO VARCHAR2(40) NOT NULL, QUANTIDADE NUMBER(8), VALOR_UNIT NUMBER(9,2) ) CREATE TABLE X_PROD ( CODIGO VARCHAR2(5) PRIMARY KEY, DESCRICAO VARCHAR2(40) NOT NULL UNIQUE, QUANTIDADE NUMBER(8), VALOR_UNIT NUMBER(9,2) ) Gabarito Coment. Gabarito Coment. 6a Questão (Ref.:201402120039) Acerto: 1,0 / 1,0 Sabemos que a Linguagem SQL é utilizada para acesso a banco de dados e é dividida em comandos DDL, DQL, DML, DCL e DTL. São comandos da DML (Data Manipulation Language) SELECT CREATE, DROP e ALTER INSERT, UPDATE e DELETE GRANT, REVOKE Gabarito Coment. 7a Questão (Ref.:201402048809) Acerto: 1,0 / 1,0 Sabendo-se que existem dados de TCC cadastrados com datas de defesa que variam de 20/11/2012 até o dia de hoje, assinale qual das alternativas abaixo retornaria o mesmo resultado que o comando "SELECT * FROM TCC WHERE DTDEFESA IN ('21/11/2013', '22/11/2014');": SELECT * FROM TCC WHERE DTDEFESA BETWEEN '21/11/2013' AND '22/11/2014'; SELECT * FROM TCC WHERE DTDEFESA = '21/11/2013' AND '22/11/2014'; SELECT * FROM TCC WHERE DTDEFESA BETWEEN ('21/11/2013'; '22/11/2014'); SELECT * FROM TCC WHERE DTDEFESA > '21/11/2013' AND < '22/11/2014'; SELECT * FROM TCC WHERE DTDEFESA => '21/11/2013' AND <= '22/11/2014'; 8a Questão (Ref.:201401562988) Acerto: 0,0 / 1,0 O comando SELECT FROM corresponde a seguinte operação da álgebra relacional: Seleção Junção Interseção União Projeção 9a Questão (Ref.:201401563420) Acerto: 0,0 / 1,0 De acordo com o modelo de dados definido pelas tabelas a seguir, indique a instrução SQL adequada para: Apresentar o maior salário pago aos Empregados Agrupados por Departamento, para os Departamentos (11, 21, 22, 31, 42, 51). SELECT MAXIMO(SALARIO) FROM EMPREGADO WHERE ID_DEPTO IN (11, 21, 22, 31, 42, 51) GROUP BY ID_DEPTO; SELECT MAX(SALARIO) FROM EMPREGADO WHERE ID_DEPTO =11 AND ID_DEPTO =21 AND ID_DEPTO =22 AND ID_DEPTO =31 AND ID_DEPTO =42 AND ID_DEPTO =51; SELECT MAX(SALARIO) FROM EMPREGADO WHERE ID_DEPTO IN (11, 21, 22, 31, 42, 51) GROUP BY ID_DEPTO; SELECT MAX(SALARIO) FROM EMPREGADO WHERE ID_DEPTO ON (11, 21, 22, 31, 42, 51) GROUP BY ID_DEPTO; SELECT MAXIMO(SALARIO) FROM EMPREGADO WHERE ID_DEPTO ON (11, 21, 22, 31, 42, 51) GROUP BY ID_DEPTO; Gabarito Coment. 10a Questão (Ref.:201401563393) Acerto: 1,0 / 1,0 De acordo com o modelo de dados definido pelas tabelas a seguir, indique a instrução SQL adequada para: Apresentar os primeiros nomes, o salário e a data de admissão dos Empregados que ganham acima de R$ 1.000,00 em ordem Crescente de Salário e de Data de Admissão. SELECT PRIM_NOME, SALARIO, DT_ADMISSAO FROM EMPREGADO WHERE SALARIO > 1000 ORDER BY ASC SALARIO, DESC DT_ADMISSAO; SELECT PRIM_NOME, SALARIO, DT_ADMISSAO FROM EMPREGADO WHERE SALARIO > 1000 ORDER BY SALARIO DESC, DT_ADMISSAO DESC; SELECT PRIM_NOME, SALARIO, DT_ADMISSAO FROM EMPREGADO WHERE SALARIO > 1000 ORDER BY DESC SALARIO, ASC DT_ADMISSAO; SELECT PRIM_NOME, SALARIO, DT_ADMISSAO FROM EMPREGADO WHERE SALARIO > 1000 ORDER BY ASC SALARIO, ASC DT_ADMISSAO; SELECT PRIM_NOME, SALARIO, DT_ADMISSAO FROM EMPREGADO WHERE SALARIO > 1000 ORDER BY SALARIO, DT_ADMISSAO;