Exercícios de Lógica – Exercícios de Fixação 08 Exercícios 1. A linguagem SQL apresenta uma série de comandos que permitem a definição dos dados, chamada de DDL (Data Definition Language). Assinale a alternativa que contém apenas comandos DDL. a) CREATE, ALTER, GRANT b) CREATE, ALTER, DROP c) ALTER, DROP, REVOKE d) CREATE, GRANT, REVOKE e) SELECT, INSERT, UPDATE 2. A linguagem SQL tem comandos que pertencem a série DML (Data Manipulation Language). Assinale a alternativa que NÃO é um comando DML. a) SELECT b) INSERT c) UPDATE d) DELETE e) CREATE 3. Considere as seguintes dependências funcionais identificadas durante o processo de modelagem da base de dados de um sistema de controle de biblioteca (os atributos multivalorados estão marcados com *). (CODIGO_LIVRO) -> (TITULO, AUTOR*) (AUTOR) -> (DATA_NASCIMENTO_AUTOR) (MATRICULA_USUARIO) -> (NOME, TELEFONE*) (DATA_EMPRESTIMO, CODIGO_LIVRO, MATRICULA_USUARIO) -> (DEVOLUCAO_PREVISTA) Identifique a opção em que as tabelas definidas atendem às dependências funcionais especificadas acima e estão na 3FN: a) Autor(Autor, Data_Nascimento) Livro(Codigo_Livro, Titulo, Autor*) Contato(Matricula_Usuario, Nome, Telefone) Emprestimo(Codigo_Livro, Matricula_Usuario, Data_Emprestimo, Devolucao_Prevista) b) Autoria(Codigo_Livro, Autor, Titulo, Data_Nascimento) Usuario_Telefone(Matricula_Usuario,Nome, Telefone) Emprestimo(Codigo_Livro, Matricula_Usuario, Data_Emprestimo, Devolucao_Prevista) c) Livro(Codigo_Livro, Titulo) Autoria(Codigo_Livro, Autor) Autor(Autor, Data_Nascimento) Usuario(Matricula_Usuario, Nome) Contato(Matricula_Usuario,Telefone) Emprestimo(Codigo_Livro, Matricula_Usuario, Data_Emprestimo, Devolucao_Prevista) d) Livro(Codigo_Livro, Titulo, Data_Emprestimo, Devolucao_Prevista) Autoria(Codigo_Livro, Autor, Data_Nascimento) Usuario(Matricula_Usuario, Nome, Telefone) e) Livro(Codigo_Livro, Titulo, Autor*) Autor(Autor, Data_Nascimento) Usuario(Matricula_Usuario, Nome, Telefone*) Emprestimo(Codigo_Livro, Matricula_Usuario, Data_Emprestimo, Devolucao_Prevista) 4. As tabelas abaixo participam de uma base de dados de uma empresa da área financeira (colunas participantes de chaves primárias estão sublinhadas, e participantes de chaves estrangeiras, em negrito). PESSOA(ID_PESSOA, ENDERECO) PESSOA_FISICA(ID_PESSOA, NOME, CPF, NUMERO_DEPENDENTES) PESSOA_JURIDICA(ID_PESSOA, RAZAO_SOCIAL, CNPJ, NUMERO_FUNCIONARIOS) EMPRESTIMOS(ID_PESSOA, DATA, VALOR) As tabelas PESSOA, PESSOA_FISICA e PESSOA_JURIDICA armazenam informações sobre indivíduos e empresas que são clientes da instituição. Alguns dos clientes realizam empréstimos. Toda pessoa cadastrada na instituição será sempre cadastrada como pessoa física ou jurídica. A coluna ID_PESSOA, nas tabelas PESSOA_FISICA e PESSOA_JURIDICA, possui chave estrangeira que referencia a coluna ID_PESSOA da tabela PESSOA. A tabela EMPRESTIMOS apresenta informações sobre empréstimos contraídos por pessoas, incluindo a data do empréstimo e o valor. Deseja-se montar um relatório que apresente informações de todas as pessoas físicas e jurídicas que já contraíram algum empréstimo. Qual dos comandos SQL abaixo atende às condições desejadas? a) SELECT PF.NOME, PF.CPF, PJ.RAZAO_SOCIAL, PJ.CNPJ FROM PESSOA_FISICA PF INNER JOIN PESSOA P ON PF.ID_PESSOA = P.ID_PESSOA INNER JOIN PESSOA_JURIDICA PJ ON PJ.ID_PESSOA = P.ID_PESSOA WHERE EXISTS (SELECT 1 FROM EMPRESTIMOS EM) b) SELECT PF.NOME, PF.CPF, PJ.RAZAO_SOCIAL, PJ.CNPJ FROM PESSOA_FISICA PF INNER JOIN PESSOA P ON PF.ID_PESSOA = P.ID_PESSOA INNER JOIN PESSOA_JURIDICA PJ ON PJ.ID_PESSOA = P.ID_PESSOA WHERE ID_PESSOA IN (SELECT DISTINCT ID_PESSOA FROM EMPRESTIMOS) c) SELECT PF.NOME, PF.CPF, PJ.RAZAO_SOCIAL, PJ.CNPJ FROM PESSOA_FISICA PF INNER JOIN EMPRESTIMOS EM ON EM.ID_PESSOA = PF.ID_PESSOA INNER JOIN PESSOA_JURIDICA PJ ON PJ.ID_PESSOA = EM.ID_PESSOA d) SELECT PF.NOME AS NOME, PF.CPF AS CONTRIBUINTE FROM PESSOA_FISICA PF INNER JOIN EMPRESTIMOS EM ON EM.ID_PESSOA = PF.ID_PESSOA UNION ALL SELECT PJ.RAZAO_SOCIAL AS NOME, PJ.CNPJ AS CONTRIBUINTE FROM PESSOA_JURIDICA PJ INNER JOIN EMPRESTIMOS EM ON EM.ID_PESSOA = PJ.ID_PESSOA e) SELECT PF.NOME AS NOME, PF.CPF AS CONTRIBUINTE FROM PESSOA_FISICA PF INNER JOIN EMPRESTIMOS EM ON EM.ID_PESSOA = PF.ID_PESSOA EXCEPT SELECT PJ.RAZAO_SOCIAL AS NOME, PJ.CNPJ AS CONTRIBUINTE FROM PESSOA_JURIDICA PJ INNER JOIN EMPRESTIMOS EM ON EM.ID_PESSOA = PJ.ID_PESSOA 5. Considere as proposições abaixo, a respeito de Bancos de Dados. I. Uma das técnicas para armazenamento de dados dimensionais é a organização de tabelas, segundo o Esquema Estrela. Em bases de dados, que atendem a esse esquema, podem-se encontrar tabelas que não atendam à Terceira Forma Normal. II. Bases de dados de apoio à tomada de decisão armazenam grande quantidade de dados. Por isso, não é recomendável a criação de índices em tais bases de dados. III. Em gerenciadores de bancos de dados multidimensionais podem ser encontrados operadores que permitem percorrer hierarquias existentes. Dentre tais operadores estão o de Drill Down e o de Drill Up. IV. O procedimento de Extração, Transformação e Carga (também conhecido por ETL) é um dos processos realizados em ambientes de depósitos de dados (data warehouse). Nesse contexto, a Extração se refere à tarefa de retirada de dados do data warehouse (visando a reduzir os dados antigos); a Transformação se refere ao processo de compactação de dados, e a Carga se refere à tarefa de inclusão de novos dados no data warehouse. V. Uma das características de bases de dados de apoio à tomada de decisão é a necessidade de armazenarem dados que refletem sempre a situação atual do assunto que representam. Nesse tipo de base de dados, quaisquer informações que não sejam atuais podem ser descartadas, pois não auxiliam em uma boa tomada de decisão. Estão corretas APENAS as afirmativas a) I e II b) I e III c) II e III d) III e V e) IV e V 6. Sobre bases de dados relacionais, é INCORRETO afirmar que a) em uma tabela, podemos definir várias chaves estrangeiras, porém somente uma chave primária, sendo que cada uma das chaves (estrangeira e primária) definidas pode englobar várias colunas. b) uma chave primária define os atributos cujos conjuntos de valores não se repetem em diferentes linhas da mesma tabela. c) restrições do tipo check podem ser utilizadas para restringir o domínio de atributos. d) chaves estrangeiras determinam conjunto de atributos cujos valores devem obrigatoriamente corresponder a valores existentes em atributos das tabelas referenciadas. e) chaves candidatas são formadas por colunas cujos conjuntos de valores podem se repetir em diferentes linhas das tabelas e, por isso, não se pode definir uma chave primária em tais colunas. 7. Considere o exemplo de consulta SQL a seguir: SELECT CARGO, MAX(SALARIO) ________ TABELA1 ________ CARGO>10 ______ CARGO __________ MAX(SALARIO)>400 Assinale a alternativa que apresenta a sequência correta de palavras que preenchem as lacunas. a) FROM, WHERE, INNER JOIN, GROUP BY. b) FROM, HAVING, GROUP BY, ORDER BY. c) FROM, GROUP BY, ORDER BY, WHERE. d) FROM, LEFT JOIN, GROUP BY, HAVING. e) FROM, WHERE, GROUP BY, HAVING. Considere para as questões 8 e 9, um sistema de controle de uma biblioteca com as seguintes relações: livro(id, título, idioma); autor(id, nome, país); usuário(id, nome, endereço, telefone, email); empréstimo(id, data, id_usuario, id_livro); autoria(id_livro, id_autor); 8. O comando para realizar a consulta de quais usuários nunca retiraram livro é: a) select nome from usuario right join emprestimo on (usuario.id = emprestimo.id_usuario) where emprestimo.id is NULL; b) select nome from usuario join emprestimo on (usuario.id = emprestimo.id_usuario) where emprestimo.id is NULL; c) select nome from usuario left join emprestimo on (usuario.id = emprestimo.id_usuario) where emprestimo.id is NULL; d) select id_usuario from emprestimo where id_livro is NULL; e) Nenhuma das alternativas. 9. O que realiza o seguinte comando: select autor.nome, count(*) from autor, autoria where autor.id = autoria.id_autor group by autor.nome a) de quantos autores diferentes há livros na biblioteca. b) quantos autores possui cada livro da biblioteca. c) quantos livros de cada autor há na biblioteca. d) de quais autores a biblioteca tem mais livros. e) Nenhuma das alternativas. 10. Considere as afirmações sobre a utilização de índices em bancos de dados relacionais. I. Um índice é uma estrutura auxiliar associado a uma tabela. II. A estrutura de indexação não requer uma área adicional de armazenamento. III. O tempo de inserção de um novo registro em uma tabela indexada inclui também o tempo para atualizar o índice. Está correto o que se afirma em: a) I, apenas. b) II, apenas. c) III, apenas. d) I e II, apenas. e) I e III, apenas. 11. Qual expressão SQL possibilita o retorno do valor médio de uma coluna que contém somente números? a) SELECT column_name FROM table_name SETTING AVG b) SELECT column_name (AVG) FROM table_name c) SELECT AVG OF column_name FROM table_name d) SELECT FROM table_name AVG(column_name) e) SELECT AVG(column_name) FROM table_name 12. Em um banco de dados relacional, quando se diz que uma relação contém 4 tuplas, é equivalente a dizer que a relação contém 4: a) índices. b) tabelas. c) atributos. d) registros. e) chaves estrangeiras. 13. Os bancos de dados utilizam a linguagem SQL (Structured Query Language). Esta linguagem possui comandos que podem ser divididos em vários grupos, como: DDL, DML e DCL. Baseado em seus conhecimentos em banco de dados, analise as afirmações a seguir: I. DDL é a Linguagem de Definição de Dados utilizada para definirmos as estruturas de um banco de dados. São exemplos de comandos: create table, drop index, alter table. II. DML é a Linguagem de Manipulação de dados utilizada para inserir, alterar e apagar dados em uma tabela do banco de dados. III. DCL é a linguagem de Controle de Dados utilizada para controlar as transações em um banco de dados, como exemplos os comandos: commit e rollback. Quais afirmativas estão corretas? a) ( ) Apenas I b) ( ) Apenas II c) ( ) Apenas I e II d) ( ) Apenas II e III e) ( ) Todas as alternativas estão corretas 14. O processo de normalização possui várias regras, que devem ser obedecidas para que seja considerada que uma tabela está em uma determinada forma normal. Com base nisto, analise as afirmações abaixo: I. Uma tabela está na primeira forma normal (1FN), quando ela não contém tabelas aninhadas. II. Uma tabela está na segunda forma normal (2FN), quando além de estar na 1FN, todo atributo não chave é irredutivelmente dependente da chave primária. III. Uma tabela está na terceira forma normal (3FN), quando além de estar na 2FN, todo atributo não chave é dependente de forma não transitiva da chave primária. Quais afirmativas estão corretas? a) ( ) Apenas I b) ( ) Apenas II c) ( ) Apenas I e II d) ( ) Apenas II e III e) ( ) Todas as alternativas estão corretas 15. O catálogo (ou dicionário de dados) de um Sistema Gerenciador de Bancos de Dados Relacional a) visa a propiciar o acesso rápido a dados com um determinado valor. b) é um item opcional do banco de dados, que pode ser removido caso o usuário deseje. c) é raramente utilizado, sendo sua organização pouco in#uente no desempenho do sistema. d) contém informações descritivas sobre os diversos objetos do sistema. e) tem seus dados organizados segundo um esquema hierárquico, para maior e#ciência no acesso. 16. As relações abaixo compõem uma base de dados em que atributos sublinhados são identificadores e atributos em itálico e negrito são chaves estrangeiras. Autor (CPFAutor, Nome, DataNascimento) Obra (TituloObra, DataConclusao, CPFAutor, CodigoAssunto) Editora (CNPJEditora, Nome, Local) Publicacao (TituloObra, CNPJEditora, DataLancamento ) Assunto (CodigoAssunto, Descricao) Que comando SQL apresenta como resultado a quantidade de publicações do assunto 'Policial' por editora? a) select P.CNPJEditora, count(P.TituloObra) from Publicacao P inner join Obra O on P.TituloObra = Obra.TituloObra inner join Assunto A on O.CodigoAssunto = A.CodigoAssunto where A.Descricao = 'Policial' b) select P.CNPJEditora, count(P.TituloObra) from Publicacao P, Obra O, Assunto A where P.TituloObra = O.TituloObra and O.CodigoAssunto = A.CodigoAssunto and A.Descricao = 'Policial' group by P.CNPJEditora c) select P.CNPJEditora, count(P.TituloObra) from Publicacao P, Obra O, Assunto A, Editora E group by P.CNPJEditora having A.Descricao = 'Policial' d) select P.CNPJEditora, sum(P.TituloObra) from Publicacao P inner join Obra O on P.TituloObra = Obra.TituloObra inner join Assunto A on O.CodigoAssunto = A.CodigoAssunto where A.Descricao = 'Policial' group by P.CNPJEditora e) select P.CNPJEditora, count(P.TituloObra) from Publicacao P left outer join Obra O on P.TituloObra = Obra.TituloObra left outer join Assunto A on O.CodigoAssunto = A.CodigoAssunto group by P.CNPJEditora Boa Sorte Fernando Anselmo