Você está na página 1de 7

INSTITUTO DE COMPUTAÇÃO

UNIVERSIDADE ESTADUAL DE CAMPINAS


Especialização em Engenharia de Sofware
INF0325 – Modelagem e Projeto de Banco de Dados
Prof. Ricardo da Silva Torres

Primeira Lista de Exercı́cios


Questão Valor Nota
Nome Aluno 1:
1 1,25
RG Aluno 1: 2 1,25
3 1,25
Nome Aluno 2: 4 1,25
5 1,25
RG Aluno 2:
6 1,25
Instruções: Esta lista de exercı́cio deve ser resolvida em dupla. So- 7 1,25
mente serão consideradas respostas nos espaços marcados. Caso abso-
lutamente necessário, continue no verso e indique claramente que a res- 8 1,25
posta está no verso. A nota será no intervalo [0, 10]. Data de entrega:
Total 10,0
01/06/2019 em sala de aula.

1. Um cliente necessita de um website para seu blog que contém os seguintes requisitos: (1)
cada post tem um único tı́tulo, descrição e url; (2) cada post pode ter uma ou mais tags;
(3) cada post tem o nome do usuário que publicou e o número total de likes; e (4) cada
post tem comentários criados por usuários contendo o nome do usuário, mensagem e a data.
Em um post pode haver de zero a muitos comentários. A Figura 1 apresenta um schema
simplificado do banco relacional da aplicação com 3 tabelas. Escreva um modelo agregado
usando o conceito de documento aninhados para esta aplicação. Apresente um exemplo de
documento com valores fictı́cios que a aplicação armazenaria.
Figura 1: Modelo relacional aplicação blog

2. Para o modelo relacional apresentado na Figura 2 sobre um sistema de RH, projete uma
possı́vel solução usando um modelo com documentos agregados. Nesse contexto, descreva um
exemplo de documento em JSON.

Figura 2: Modelo relacional sistema de RH


3. Apresente uma operação de inserção no MongoDB que permita inserir dados de um objeto
instância da seguinte classe em Java. Faça as suposições necessárias com dados fictı́cios.
1 public class Disciplina {
2 private int id ;
3 private int creditos ;
4 private String nome ;
5 private ArrayList < Aluno > alunos = new ArrayList < Aluno >() ;
6 private ArrayList < AlunoNota > alunosNota = new ArrayList <
AlunoNota >() ; }
4. Explique o resultado da execução das seguintes operações em uma base de dados no MongoDB:

(a)1 db . homeSales . deleteOne (


2 { " _id " : ObjectId ( " 5870 e454se5464 " ) }
3 )

(b)1 db . users . find (


2 { age : { $gt :18 }} ,
3 { name : 1 , address : 1}
4 ) . limit (5)
5. Para esta questão e as seguintes, considere a entrada de dados segundo o comando abaixo
em um banco de dados implementado no gerenciador MongoDB. Apresente uma operação de
consulta que recupere documentos em que a altura do campo tamanho (h) seja entre 9 e 16
cm. A consulta deve retornar apenas o nome do item.
1 db . records . insertMany ( [
2 { item : " cadeira " , status : " A " , size : { h : 14 , w : 21 , uom : " cm
" } , instock : [ { warehouse : " A " , qty : 5 } ] , tags : [ " jantar "
, " marron " ] } ,
3

4 { item : " mesa " , status : " A " , size : { h : 8.5 , w : 11 , uom : " in "
} , instock : [ { warehouse : " C " , qty : 5 } ] , tags : [ " jantar " ,
" marron " ] } ,
5

6 { item : " sofá " , status : " D " , size : { h : 8.5 , w : 11 , uom : " in "
} , instock : [ { warehouse : " A " , qty : 60 } ] , tags : [ " sala " , "
bege " ] } ,
7

8 { item : " cama " , status : " D " , size : { h : 22.85 , w : 30 , uom : " cm
" } , instock : [ { warehouse : " A " , qty : 40 } ] , tags : [ " quarto
" , " branco " ] } ,
9

10 { item : " armário " , status : " B " , size : { h : 10 , w : 15.25 , uom :
" cm " } , instock : [ { warehouse : " B " , qty : 15 } , { warehouse :
" C " , qty : 35 } ] , tags : [ " cozinha " , " branco " ] }
11 ]) ;
6. Apresente uma operação de consulta para resolver cada uma das seguintes situações (considere
os dados inseridos na questão 5):

• Recuperar todos os documentos (de forma identada na apresentação dos resultados) em


que o status seja “B” ou “D” e sua medida esteja em cm.
• Recuperar todos os documentos em que o status seja igual a “A” ou o comprimento (w)
seja maior ou igual a 20.
• Recuperar os 2 itens de maior altura.
7. Apresente uma operação de consulta para resolver cada uma das seguintes situações (considere
os dados inseridos na questão 5):

• Recuperar os documentos em que o nome do item inicia-se com “a” e possua as tags
“branco” e “cozinha” (independente de ordem).
• Recuperar os documentos em que o status seja igual a “D” e possua as tags “sala” e
“bege” (tags exatamente nessa ordem).
• Recuperar os documentos em que as seguintes condições são satisfeitas (h ≥ 20, qty >
20 e warehouse=“A”)

8. Apresente uma operação de atualização de dados para cada uma das seguintes situações:

• Atualizar o status para “B” do primeiro documento onde o item seja cadeira.
• Atualizar a altura (para 11.5) e o tamanho (para 15) do item mesa.