Buscar

Exercicios Banco de Dados NOSQL

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 9 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 9 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 9 páginas

Prévia do material em texto

Banco de Dados NOSQL 
Exercícios Aulas 
Aula 1 
1) Assinale a afirmativa incorreta em relação aos modelos de dados hierárquico, em rede, relacional, relacional-objeto 
e NoSQL: 
a) ONOSQL tem os modelos chave-valor, orientado a documentos e de modo colunar e em grafos. 
b) No modelo de dados hierárquico todo o projeto do banco necessitava ser definido de forma hierárquica. 
c) Na organização do modelo em rede utilizava-se ponteiros para o acesso aos registros. 
d) O modelo relacional-objeto permite criar tipos de dados e usar herança. 
e) O relacional tem fundamentação matemática, usa a SQL e segue o Teorema CAP. 
 
2) Assinale a opção que indica a relação incorreta quanto ao tipo de dado e o arquivo usado: 
a) E-mail – semiestruturado. 
b) Vídeos – não estruturado. 
c) Tabela – relacional. 
d) Arquivo .xml – semiestruturado. 
e) Rede social – não estruturado. 
 
3) Marque a opção que assinala a opção falsa quanto às diferenças dos modelos NoSQL para o modelo de dados 
relacional: 
a) Os modelos NoSQL podem responder consultas em SQL, porém existem linguagens próprias para explorar todas as 
suas potencialidades. 
b) Uma das maiores vantagens dos modelos NoSQL está na facilidade de responder consultas complexas. 
c) O relacional necessita de uma pré-definição da estrutura de suas tabelas. 
d) Os NoSQL têm escalonamento vertical e o relacional, horizontal. 
e) O relacional tem o controle de transações baseado nas propriedades ACID. 
 
Aula 2 
1) Assinale a afirmativa incorreta quanto às características dos modelos de dados NoSQL: 
a) O modelo chave-valor é o mais usado e é conhecido pelo formato como armazenam os dados, ou seja, utiliza pares 
de chaves-valores, sendo denominados como key-value pair databases (KVP). 
b) Os bancos de dados em grafos são compostos em sua modelagem por nós que representam as entidades de dados, 
arestas que representam os relacionamentos existentes entre os nós, e propriedades que descrevem os dados 
armazenados. 
c) Assim como no modelo orientado a colunas, o modelo relacional possibilita a escolha da orientação do 
armazenamento em colunas, semelhantemente ao armazenamento em linhas. 
d) Uma linha no banco de dados orientado a colunas, ou colunar, é uma coleção de colunas que tem uma associação 
a uma determinada chave, e uma família de colunas corresponde a uma coleção de linhas semelhantes. 
e) A vantagem principal do modelo orientado a objetos é que ele pode ser listado como a capacidade de suportar 
conjuntos de conjuntos de pares chave-valor, ou seja, sua característica principal é o armazenamento de documentos. 
2) Assinale a opção que indica de forma incorreta exemplos de SGBDs para cada modelo NoSQL: 
a) MongoDB –documentos. 
b) Neo4J - grafos. 
c) Hypertable - chave-valor. 
d) CouchDB - documentos. 
e) Hbase – colunar. 
 
3) Assinale a opção falsa em relação às indicações de aplicações de uso ou categorias de sistemas de informação mais 
adequados para cada um dos modelos de bancos de dados NoSQL apresentados: 
a) Grafos - uso com sistemas de recomendação para a indicação mais acertada de produtos de acordo com o perfil do 
usuário. 
b) Colunar - plataformas de blogs e contadores de visitantes em aplicativos. 
c) Documentos - em aplicativos de comércio eletrônico por conta das diferenças de atributos para as diversas 
categorias de produtos existentes. 
d) Chave-valor- no controle de dados de sessões web. 
e) Grafos - análise em tempo real dos serviços financeiros como a bolsa de valores onde há um grande volume de 
dados a ser processado. 
 
Aula 3 
1) Assinale a afirmativa que indica um fator importante para o desempenho dos bancos de dadosNoSQL: 
a) A característica de ser schemaless. 
b) Não usar apenas a SQL. 
c) A escalabilidade vertical. 
d) A limitação de que os valores presentes em um conjunto de pares chave-valor sejam do mesmo tipo de dado. 
e) Ter suporte de transações diferente do relacional. 
 
2) Assinale a afirmativa correta quanto à criação de tabelas eàcaracterística schemaless no modelo chave-valor: 
a) Exige a definição da estrutura da tabela. 
b) Exige a definição dos tipos de dados utilizados. 
c) Não exige a predefinição da estrutura da tabela. 
d) Exige a definição da quantidade de tabelas da aplicação. 
e) Não exige o uso de um schema, permitindo a criação das tabelas apenas no schema public. 
 
3) Assinale a afirmativa que contém o código para a inclusão dos registros da tabela apresentada na questão para o 
armazenamento de produtos. Considere o uso de um campo identificador e campos necessários para os demais 
detalhes do produto. Utilize o tipo de dado JSON em sua resposta. Considere os registros apresentados na tabela a 
seguir: 
 
nr cliente produto Qtd peso 
1 Nei Smartphone Xiaomi 8 
 
2 Rui Tablet Samsung 9 
 
3 Lia Smartphone iPhone 5 194 gramas 
a) INSERT INTO pedidos(detalhes) VALUES (‘{‘cliente’:’Nei’, ‘produto’: ‘Smartphone Xiaomi’,’qtd’:8}’),(‘{‘cliente’: ‘Rui’, 
‘produto’: ‘Tablet Samsung’,’qtd’:9}’),(‘{‘cliente’:’Lia’,’produto’:’Smartphone iPhone’,’qtd’:5,’peso’:194}’); 
b) INSERT INTO pedidos(detalhes) VALUES ('{"cliente"=>"Nei","produto"=>"Smartphone 
Xiaomi","qtd"=>8}'),('{"cliente"=>"Rui","produto"=>"Tablet 
Samsung","qtd"=>9}'),('{"cliente"=>"Lia","produto"=>"Smartphone iPhone","qtd"=>5,"peso"=>194}'); 
c) INSERT INTO pedidos(detalhes) VALUES ('{"cliente"="Nei","produto"="Smartphone 
Xiaomi","qtd"=8}'),('{"cliente"="Rui","produto"="Tablet Samsung","qtd"=9}'), 
('{"cliente"="Lia","produto"="Smartphone iPhone","qtd"=5,"peso"=194}'); 
d) INSERT INTO pedidos(detalhes) VALUES ("cliente"=>"Nei","produto"=>"Smartphone 
Xiaomi","qtd"=>8),('cliente"=>"Rui","produto"=>"Tablet Samsung","qtd"=>9'), 
('cliente"=>"Lia","produto"=>"Smartphone iPhone","qtd"=>5,"peso"=>194'); 
e) INSERT INTO pedidos(detalhes) VALUES ('{"cliente":"Nei","produto":"Smartphone 
Xiaomi","qtd":8}'),('{"cliente":"Rui","produto":"Tablet Samsung","qtd":9}'), 
('{"cliente":"Lia","produto":"Smartphone iPhone","qtd":5,"peso":194}'); 
 
Aula 4 
1) De acordo com os comandos para a criação da tabela empréstimo e da inclusão de registros apresentados a seguir, 
indique o comando que pode ser usado para exibir os registros com o atributo JSONB de forma indentada: 
 
CREATE TABLE emprestimo (idemprestimo serial PRIMARY KEY, 
emprestimo_detalhes jsonb NOT NULL); 
INSERT INTO emprestimo (emprestimo_detalhes) VALUES 
('{"emprestimo_detalhes": 
{ "socio_id":1, 
"nome":"Ana", 
"endereco":"Rua A", 
"telefone":"2222-4444", 
"email": ana@eu.br , 
"emprestimo": 
[ 
{ 
"acervo_idlivro":100, 
"data_emp":"2020-03-01", 
"data_devolucao":"2020-03-11", 
"multa":5.50, 
"data_reserva":"2020-02-25" 
}, 
{ 
"exemplar_idlivro":101, 
"data_emp":"2020-03-01", 
"data_devolucao":"2020-03-11" 
}]} }'); 
 
a) SELECT jsonb_pretty(emprestimo_detalhes) FROM emprestimo. 
b) SELECT jsonb_array_elements_text(emprestimo_detalhes) FROM emprestimo. 
c) SELECT json_each (emprestimo_detalhes) FROM emprestimo. 
d) SELECT json_typeof(emprestimo_detalhes) FROM emprestimo. 
e) SELECT jsonb_json (emprestimo_detalhes) FROM emprestimo. 
 
2) Com base na tabela apresentada a seguir e no registro a ser incluído nessa tabela, assinale a afirmativa que 
apresente os nomes dos autores em formato de texto: 
 
CREATE TABLE acervo ( 
idtitulo serial PRIMARY KEY, 
acervo_detalhes jsonb NOT NULL ) ; 
INSERT INTO acervo ( acervo_detalhes ) VALUES 
( '{ "isbn_id" : "978-85-7522-338-3 ", 
"titulo" : "NoSQL Essencial" , 
"paginas" : 220 , 
"peso" : 200 , 
"editora" : "Pearson", 
"autor" : ["Pramod J. Sadalage" , "Martin Fowler"] , 
"idlivro" : [100, 101, 102, 103] 
} ') ; 
 
a) select jsonb_array_elements_text (acervo_detalhes ->>'autor') as autor from acervo. 
b) select jsonb_pretty (acervo_detalhes ->'autor') as autor from acervo. 
c) select (acervo_detalhes_'autor')::JSONB as autor from acervo. 
d) select acervo_detalhes -> 'autor' as autor from acervo. 
e)select acervo_detalhes ->> 'autor' as autor from acervo. 
 
3) Dados os registros apresentados na tabela a seguir. Considere o uso de um campo identificador e, para os campos 
que armazenarãoos demais detalhes dos pedidos, deve-se criar os campos: nome (texto), produto (texto), quantidade 
(inteiro), e o peso (texto). Utilize um array como tipo de dado JSONB em sua resposta incluindo todos os campos com 
exceção do identificador e do nome do cliente nesse tipo de dado. Assinale a afirmativa que contém o código para a 
inclusão de registros da tabela apresentada na questão contendo os dados de pedidos de compras de produtos. 
 
nr cliente produto quantidade peso 
1 Nei Smartphone Xiaomi 8 
 
2 
 
Tablet Samsung 9 
 
3 
 
Smartphone iPhone 5 194 gramas 
 
a) INSERT INTO pedidos(detalhes) VALUES (' {'cliente' : 'Nei', "itens": ['produto':'Smartphone Xiaomi', 'qtd':8}'),( 
'{'cliente':'Rui','produto':'Tablet Samsung','qtd':9}'),('{'cliente': 'Lia', 'produto': 'Smartphone iPhone 6', 'qtd':5, 
'peso':194 gramas } ] } ') ; 
b) INSERT INTO pedidos(detalhes) VALUES ('{"cliente"=>"Nei","itens": ["produto"=>"Smartphone 
Xiaomi","qtd"=>8}'),('{"cliente"=>"Rui","produto"=>"Tablet Samsung","qtd"=>9}'), 
('{"cliente"=>"Lia","produto"=>"Smartphone iPhone","qtd"=>5,"peso"=>194 gramas } ] } ') ; 
c) INSERT INTO pedidos(detalhes) VALUES 
('{"cliente":"Nei","itens":[ 
{"produto":"Smartphone Xiaomi","qtd":8},{"produto":"Tablet Samsung","qtd":9}, 
{"produto":"Smartphone iPhone","qtd":5,"peso":194gramas }]}'); 
d) INSERT INTO pedidos(detalhes) VALUES ("cliente"=>"Nei","itens": ["produto"=>"Smartphone 
Xiaomi","qtd"=>8),('cliente"=>"Rui","produto"=>"Tablet Samsung","qtd"=>9'), 
('cliente"=>"Lia","produto"=>"Smartphone iPhone","qtd"=>5,"peso"=>194 gramas }]}') ; 
e) INSERT INTO pedidos(detalhes) VALUES ('{"cliente":"Nei","itens": ["produto":"Smartphone 
Xiaomi","qtd":8}'),('{"cliente":"Rui","produto":"Tablet Samsung","qtd":9}'), 
('{"cliente":"Lia","produto":"Smartphone iPhone","qtd":5,"peso":194 gramas }]}') ; 
 
Aula 5 
1) Assinale a afirmativa errada quando a relação entre a nomenclatura usada na definição de uma estrutura de um 
banco de dados orientado a documentos e um banco de dados relacional. 
a) Banco de dados → banco de dados. 
b) Linha → documento. 
c) Tabela → coleção. 
d) Registro → para chave-valor. 
e) Tupla → documento. 
 
2) Assinale a afirmativa que indica um formato de arquivo que não é usado para o armazenamento de dados em um 
banco de dados orientado a documentos: 
a) BSON. 
b) XLS. 
c) XML. 
d) JSON. 
e) JSONB. 
 
3) De acordo com os comandos para a criação da tabela avaliações e da inclusão dosdocumentos apresentados a 
seguir, indique o comando que pode ser usado para exibir os documentos de forma indentada: 
 
use aula 
db.createCollection ("avaliacoes", { capped : true, size : 1410740, max : 500 } ) 
use avaliacoes 
db 
show dbs 
db.avaliacoes.insert( [ 
{ 
titulo : 'MongoDB' , 
descricao : 'MongoDBé um banco de dados orientado a documentos' , 
endereco : 'https://www.mongodb.com/' , 
tags : [ 'banco de dados NOSQL', 'Mongodb', 'NOSQL' ] , 
curtidas : 100 
} , 
{ 
titulo : 'CouchDB', 
descricao : 'CouchDB é um banco de dados orientado a documentos' , 
endereco : 'https://couchdb.apache.org/‘, 
tags : ['CouchDB', 'banco de dados NOSQL', 'NOSQL'] , 
curtidas : 20 
} , 
{ 
titulo : 'Couchbase' , 
descricao : 'Couchbase é um banco de dados orientado a documentos e diferente do CouchDB' , 
endereco : 'http://couchbase.com/' , 
tags : [ 'banco de dados NOSQL', 'Couchbase', 'NOSQL' ] , 
curtidas : 10 
} 
] ) 
 
a) SELECT jsonb_pretty(detalhes) FROM avaliacoes. 
b) SELECT db. avaliacoes.find({}).pretty(). 
c) SELECT db.avaliacoes FROM pretty(). 
d) SELECT * FROM db. avaliacoes.find({}). 
e) db. avaliacoes.find({}).pretty(). 
 
Aula 6 
1) Assinale a afirmativa errada quanto ao entendimento do termo “agregado”em um projeto de banco de dados 
orientado a documentos: 
a) Foi criado no surgimento do projeto orientado a domínios. 
b) O agregado é um conjunto de objetos relacionados. 
c) Facilita ainda o trabalho da implementação de software por parte dos desenvolvedores. 
d) Na modelagem com agregados, os dados são definidos em unidades. 
e) Seu uso é exclusivo para o modelo de dados relacional. 
 
2) Assinale a afirmativa que indica um fator importante no projeto de um banco de dados orientado a documentos 
com a definição de agregados: 
a) O número de agregados deve ser o mesmo da quantidade de tabelas existentes em um mesmo projeto no modelo 
relacional. 
b) O máximo de agregações permitido é de três agregações. 
c) Os agregados são criados para facilitar a execução das consultas. 
d) O número de coleções é sempre superior ao número de tabelas de um projeto relacional. 
e) O número de coleções é sempre igual ao número de tabelas de um projeto relacional. 
 
3) Para que se possa trabalhar com o PostgreSQL no modelo orientado a documentos é necessário organizaros dados 
em coleções que são apresentadas como tabelas no relacional e tem em sua estrutura atributos do tipo JSONB. 
Assinale a alternativa errada quanto ao que faz este código: 
 
WITH cliente_locacao AS 
( 
SELECT c.dataAS cliente, json_agg(l.data) as locacao 
FROM cliente c LEFT JOIN locacao l 
ON c.idcliente = l.cliente_idcliente 
WHERE l.cliente_idcliente is not NULL 
GROUP BY 1) 
SELECT jsonb_pretty(cliente || jsonb_build_object('locacao', locacao)) AS locacao 
FROM cliente_locacao ; 
 
a) A primeira parte do código organiza os livros por autor. 
b) A segunda parte do código aplicação da função jsonb_pretty() sobre a tabela temporária para apresentar os 
documentos indentados. 
c) A primeira parte do código faz uso do recurso CTE – common tableexpressions. 
d) São duas consultas totalmente independentes e seu resultado somente poderia ser alcançado com o uso de um 
operador union entre as duas. 
e) Foram usadas três funções para serem aplicadas em campos do tipo JSONB. 
 
Aula 7 
1) Assinale a afirmativa errada quanto às características observadas em um banco de dados orientado a colunas. 
a) O modelo orientado a colunas não tem suporte para a integridade referencial. 
b) Ser próprio para aplicações descentralizadas, sendo ele formado por um conjunto de nós. 
c) É linearmente escalável, o que na prática apresenta como consequência um aumento da taxa de transferência de 
acordo com o aumento do número de nós de um cluster. 
d) As colunas são armazenadas com base em seus nomes e o nome tem como objetivo a identificação das linhas. 
e) O Cassandra foi criado pelo próprio Google para atender suas necessidades, depois a empresa passou a 
comercializar o banco de dados para a comunidade. 
 
2) Assinale a afirmativa incorreta em relação à comparação do modelo de dados orientado a colunas para o modelo 
de dados relacional: 
a) Os bancos de dados relacionais são orientados ou organizados em linhas (registros de uma tabela), pois os dados 
em cada linha de uma tabela são armazenados juntos, por atributos ou campos de uma tabela. 
b) No banco de dados colunar, diferentemente da forma usada na estrutura do banco de dados relacional, os dados 
são organizados e armazenados em colunas. 
c) Um banco de dados no modelo relacional corresponde a um keyspace no orientado a colunas 
d) Uma instância de bancos de dados no relacional corresponde a um schema no modelo colunar. 
e) Uma coluna no relacional tem os mesmos tipos de dados e é igual para todas as linhas; já no colunar, as colunas 
podem ser diferentes pelas linhas. 
 
3) Dado o código CQL para criar uma tabela denominada pedido com a seguinte estrutura, marque a opção incorreta 
sobre o que foi apresentado: 
CREATE TABLE pedido ( 
nrpedidouuid primary key , 
livrovarchar , 
autor set<text>) ; 
INSERT INTO pedido ( nrpedido, livro, autor) 
VALUES ( uuid(), 'NOSQL Essencial', { 'Pramod J. Sadalage', 'MartinFowler' }) ; 
 
a) É criada uma tabelano um identificar universal e o valor gerado pela função uuid(). 
b) Há um atributo do tipo set, mas não pode ser criado no Cassandra. 
c) O insert apresenta o cadastro dos nomes de dois autores. 
d) A tabela foi criada, mas também poderia ser definida como uma COLUMNFAMILY. 
e) O uso do tipo de dado uuid em uma chave primária é indicado por ser único. 
 
Aula 8 
1) Sobre o código apresentado a seguir, podemos afirmar, exceto: 
 
CREATE TABLE log_usuario ( 
login varchar , 
data timestamp , 
datahora timeuuid , 
PRIMARY KEY ( ( login , data ), datahora ) ) ; 
INSERT INTO log_usuario ( login, data, datahora ) VALUES ( 'aluno_1', toTimestamp(toDate(now())), now() ) ; 
INSERT INTO log_usuario ( login, data, datahora ) VALUES ( 'aluno_2', toTimestamp(toDate(now())), now() ) ; 
INSERT INTO log_usuario ( login, data, datahora ) VALUES ( 'aluno_3', toTimestamp(toDate(now())), now() ) ; 
 
a) Existe uma chave primária tripla. 
b) A função toTimestamp(toDate(now())) permite obter o valor timestamp. 
c) A função now() permite o preenchimento do atributo timeuuid. 
d) A tabela tem dois atributos no campo chave de partição. 
e) A tabela tem o campo datahora como chave de armazenamento em clusters. 
 
2) Assinale a afirmativa correta sobre como a consulta abaixo pode ser executada no Cassandra: 
 
SELECT * FROM usuario WHERE nome = 'Lia' ; 
 
a) Não pode usar o *, como na SQL precisa da indicação dos atributos a serem exibidos. 
b) Não pode ser executada, pois o banco trabalha apenas com o IN. 
c) Necessita da criação de um índice secundário no campo nome. 
d) Pode ser executada sem necessidade de qualquer recurso extra. 
e) Só pode ser executada se o atributo nome fizer parte da chave de partição. 
 
3) Considerando a necessidade de uma consulta para a contagem de registros, com o uso da função count(), de acordo 
com uma determinada condição, ela pode ser realizada no Cassandra desde que: 
a) Não pode ser realizada, pois o Cassandra não tem agregações. 
b) Pode ser executada sem nenhum recurso extra. 
c) Pode ser executada com o uso de um índice secundário. 
d) Uma permissão seja incluída no fim da consulta com um allow filtering. 
e) Pode ser executada com o uso de um índice primário. 
 
Aula 9 
1) Sobre as características do modelo de dados baseado em grafos, podemos afirmar em relação à sua estrutura, 
exceto: 
a) No modelo em grafos os nós representam os registros que são usados no banco de dados relacional. 
b) No modelo em grafos os nós podem ter vários relacionamentos para com outros nós. 
c) Os nós têm propriedades que são comparadas aos atributos no modelo relacional. 
d) Os nós e relações suportam propriedades, um par de valores-chave em que os dados são armazenados. 
e) Os relacionamentos apresentam sentido bidirecional, um tipo, um nó inicial e um nó final. 
 
2) Assinale a afirmativa incorreta quanto às vantagens e tipos de aplicações indicadas para uso do banco de dados em 
grafos: 
a) O modelo de dados em grafos facilita a navegação pelos relacionamentos, algo que não é possível em SGBDs 
relacionais devido às estruturas de tabelas rígidas e à impossibilidade de seguir conexões entre os dados.. 
b) É indicado para o uso em aplicações transacionais com o uso da integridade referencial. 
c) O banco de dados baseado em grafos é indicado para aplicações científicas e técnicas ou ainda para o tratamento 
de aplicações complexas. 
d) Como exemplos de aplicações indicadas para serem desenvolvidas com esse modelo de dados podem ser listadas 
as aplicações para o gerenciamento de dados geográficos ou para modelar redes de computadores de um provedor 
de telecomunicações. 
e) O banco de dados em grafo é indicado para aplicações que têm no cruzamento de dados distintos uma possibilidade 
de melhor análise. 
 
3) Considere o código a seguir e indique a afirmativa correta a respeito do que ele faz: 
CREATE ( ana : gerente { matricula : 100, nome : 'Ana'} ) 
CREATE ( luis : gerente { matricula : 101, nome : 'Luís' } ) 
CREATE ( lia : funcionario { matricula : 102, nome : 'Lia' } ) 
CREATE ( rui : funcionario { matricula : 103, nome : 'Rui' } ) 
CREATE ( nei : funcionario { matricula : 104, nome : 'Nei' } ) 
CREATE ( projeto_1 : projeto { nrprojeto : 1, nome : 'Projeto 1' } ) 
CREATE ( projeto_2 : projeto { nrprojeto : 2, nome : 'Projeto 2' } ) 
CREATE ( ana )-[:GERENTE] -> ( projeto_1 ) 
CREATE ( luis )-[:GERENTE] -> ( projeto_2 ) 
CREATE ( lia )-[:TRABALHA] -> ( projeto_1 ) 
CREATE ( rui )-[:TRABALHA] -> ( projeto_1 ) 
CREATE ( nei )-[:TRABALHA] -> ( projeto_2 ) 
 
a) Cria 7 nós representando os relacionamentos de trabalho entre eles, mas com apenas um tipo de relacionamento 
entre todos os nós. 
b) Cria 12 nós representando os relacionamentos de trabalho entre eles, com apenas 2 tipos de relacionamentos entre 
todos os nós. 
c) Cria 7 nós representando os relacionamentos de trabalho entre eles, com 3 tipos de nós e 2 tipos de 
relacionamentos. 
d) Cria 5 nós representando os relacionamentos de trabalho entre eles, com 3 tipos de nós e 2 tipos de 
relacionamentos. 
e) Cria 12 nós representando os relacionamentos de trabalho entre eles, com 2 tipos de nós e 3 tipos de 
relacionamentos. 
 
Aula 10 
1) Assinale a opção correta quanto ao código necessário para criar um relacionamento indicando que Luís pratica 
futebol. Você pode usar o código abaixo para criar os nós e testar sua resposta antes de responder: 
 
CREATE ( ana : Pessoa { nome : 'Ana' , email : 'ana@meumail.com' } ) 
CREATE ( lia :Pessoa { nome : 'Lia' , email : 'lia@meumail.com' } ) 
CREATE ( luis : Pessoa { nome : 'Luís' , email : 'luis@meumail.com' } ) 
CREATE ( rui : Pessoa { nome : 'Rui' , email : 'rui@meumail.com' } ) 
CREATE ( nei : Pessoa { nome : 'Nei' , email : 'nei@meumail.com' } ) 
CREATE ( ana )-[:AMIGO] -> ( lia )-[:AMIGO] -> ( luis ) 
CREATE ( ana )-[:AMIGO] -> ( rui )-[:AMIGO] -> ( nei ) 
CREATE ( futebol : Esporte { nome : 'Futebol' } ) 
MATCH ( n ) RETURN n 
 
a) MATCH ( p1 : Pessoa { nome : 'Luís' } ) , ( p2 : Esporte { nome : 'Futebol' } ) 
CREATE ( p1 )-[ : PRATICA ] -> ( p2 ) 
b) MATCH ( p1 : Pessoa { nome : 'Luís' } ) , ( p2 : Esporte { nome : 'Futebol' } ) 
CREATE ( p1 )-( : PRATICA ) -> ( p2 ) 
c) MATCH ( p1 : { nome :'Luís' } ) , ( p2 : Esporte { nome : 'Futebol' } ) 
CREATE ( p1 )-[ : PRATICA ] -> ( p2 ) 
d) MATCH (: Pessoa { nome : 'Luís' } ) , (: Esporte { nome : 'Futebol' } ) 
CREATE ( p1 )-[ : PRATICA ] -> ( p2 ) 
e) MATCH ( p1 : Pessoa { nome : 'Luís' } ) , ( p2 : Esporte { nome : 'Futebol' } ) 
CREATE ( p1 )->[ : PRATICA ] -> ( p2 ) 
 
2) Assinale a afirmativa que contém o comando correto para listar todos os dados das Pessoas cujo nome está contido 
em Ana ou Lia: 
a) MATCH [ p : Pessoa ] WHERE p.nome IN [ 'Ana', 'Lia' ] RETURN p 
b) MATCH ( p : Pessoa ) WHERE p.nome IN [ 'Ana', 'Lia' ] RETURN p 
c) MATCH ( p : Pessoa ) WHERE p.nome IN ( 'Ana', 'Lia' ) RETURN p 
d) SELECT ( p : Pessoa ) WHERE p.nome IN [ 'Ana', 'Lia' ] RETURN p 
e) MATCH ( p : Pessoa ) WHERE p.nome = 'Ana' and p.nome = 'Lia' RETURN p 
 
3) Considere o código apresentado abaixo para uma rede de usuários, em que há a indicação do estado civil de cada 
um deles. Assinale a afirmativa que contém o comando correto para exibir o total de usuários solteiros: 
 
CREATE ( : Usuario { nome : 'Ana' , pais : 'Canadá' , estado_civil : 'solteiro' } ) 
CREATE ( : Usuario { nome : 'Lia' , pais : 'Brasil' , estado_civil : 'casado' } ) 
CREATE ( : Usuario { nome : 'Rui' , pais : 'Brasil' , estado_civil : 'solteiro' } ) 
CREATE ( : Usuario { nome : 'Nei' , pais : 'Brasil' , estado_civil : 'casado' } ) 
CREATE ( : Usuario { nome : 'Joe' , pais : 'França' , estado_civil : 'solteiro'} ) 
CREATE ( : Usuario { nome : 'Carol' , pais : 'Estados Unidos da América' , estado_civil : 'namorando' } ) 
CREATE ( : Usuario { nome : 'Luís' , pais : 'México' , estado_civil : 'solteiro'} ) 
CREATE ( : Usuario { nome : 'Carol' , pais : 'Brasil', estado_civil : 'casado' } ) 
 
a) MATCH ( p : Usuario ) WHERE p.estado_civil IN 'solteiro' RETURN GROUP BY count(*) 
b) SELECT ( p : Usuario ) RETURN p.estado_civil = 'solteiro' WHERE count(*) as total 
c) MATCH ( p : Usuario ) WHERE p.estado_civil = 'solteiro' RETURN count(*) as total 
d) SELECT count(*) as total ( p : Usuario ) WHERE p.estado_civil = 'solteiro' RETURN 
e) FIND ( p : Usuario ) WHERE p.estado_civil = 'solteiro' RETURN count(*) as total

Continue navegando