Buscar

Quiz BD - JL

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 14 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 14 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 14 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

Prévia do material em texto

 Pergunta 1 
Considere as seguintes tabelas: 
CREATE TABLE bares (nome text, preco float); 
 
CREATE TABLE restaurantes (nome text, preco float); 
 
CREATE TABLE cafes (nome text, preco float); 
 
Assinale a alternativa que forneça um significado plausível para o seguinte comando: 
 
SELECT nome, preco FROM ( 
SELECT nome, preco FROM bares WHERE preco = (SELECT min(preco) FROM bares) 
UNION 
SELECT nome, preco FROM restaurantes WHERE preco = (SELECT min(preco) FROM restaurantes) 
UNION 
SELECT nome, preco FROM cafes WHERE preco = (SELECT min(preco) FROM cafes) 
) as lazer WHERE preco < 100; 
Resposta 
Selecionada: 
b. 
Um rapaz está procurando um lugar para marcar um encontro. Ele está em dúvida entre um restaurante, um bar 
ou um café. Como o rapaz está com pouco dinheiro, ele vai considerar somente as opções mais baratas de cada 
categoria, e desde que o preço da diversão não saia mais que 100 reais. 
Respostas: a. 
Um investidor está procurando um estabelecimento para comprar. Ele está analisando um certo conjunto de 
restaurantes, bares e cafés. Ele pretende comprar o mais barato entre todos esses estabelecimentos, desde que 
o preço não ultrapasse 100 mil reais. 
 
b. 
Um rapaz está procurando um lugar para marcar um encontro. Ele está em dúvida entre um restaurante, um bar 
ou um café. Como o rapaz está com pouco dinheiro, ele vai considerar somente as opções mais baratas de cada 
categoria, e desde que o preço da diversão não saia mais que 100 reais. 
 
c. 
Um investidor pretende comprar um restaurante, um bar e um café. Mas o café ele só vai comprar se custar 
menos de 100 mil reais. 
 
d. 
Uma construtora aluga espaços para estabelecimentos comerciais, como restaurantes, bares e cafés. Um analista 
dessa construtora está montando um relatório com os aluguéis mais rentáveis para a construtora. 
 
e. 
A consulta não significa nada, pois possui um erro de sintaxe. 
Comentário da 
resposta: b. A consulta retornará a princípio três registros: o restaurante mais barato, o bar mais barato e o café mais barato. 
Mas cada uma dessas três linhas só será exibida se seu preço correspondente for menor que 100. 
 
 Pergunta 2 
1 em 1 pontos 
 
Considere a seguinte sequência de comandos: 
 
> SELECT id, saldo FROM conta_corrente WHERE id in (1324, 7634); 
id saldo 
----- -------- 
1324 5000.0 
7634 40000.0 
> BEGIN; 
> UPDATE conta_corrente SET saldo = saldo - 100 WHERE id = 1324; 
> UPDATE conta_corrente SET saldo = saldo + 200 WEHRE id = 7634; 
> COMMIT; 
> SELECT id, saldo FROM conta_corrente WHERE id in (1324, 7634); 
Qual é a saída produzida pelo último comando? 
 
Resposta Selecionada: 
b. 
id saldo 
----- -------- 
1324 5000.0 
7634 40000.0 
Respostas: a. 
id saldo 
----- -------- 
1324 5100.0 
7634 40200.0 
 
b. 
id saldo 
----- -------- 
1324 5000.0 
7634 40000.0 
 
c. 
id saldo 
----- -------- 
1324 5100.0 
7634 40000.0 
 
d. 
… You have an error in your SQL syntax ... 
 
e. 
----- -------- 
1324 7634 
5000.0 40000.0 
Comentário da 
resposta: b. Como há um erro de sintaxe no segundo UPDATE e os comandos de UPDATE estão envoltos em uma 
transação (BEGIN, COMMIT), então nenhum UPDATE será efetivo. Por isso a saída final será igual a saída do 
primeiro SELECT. 
 
 
 Pergunta 3 
1 em 1 pontos 
 
Considere um banco de dados com uma tabela voos, contendo a coluna companhia, com a sigla da companhia aérea que operou o voo. 
Considere também que esse banco possui uma tabela companhias, com um cadastro de todas as companhias aéreas existentes. 
 
O que representa a seguinte consulta? 
 
SELECT (SELECT count(distinct companhia) FROM voos) 
/ (SELECT count(*) FROM companhias); 
 
Considere como dica os seguintes comandos e suas respectivas saídas: 
 
> SELECT 4; 
4 
> SELECT 4/2; 
2 
Resposta 
Selecionada: 
b. 
A proporção de companhias cadastradas que operaram voos registrados na tabela voos. 
Respostas: a. 
A quantidade de companhias que operaram voos registrados na tabela voos. 
 
b. 
A proporção de companhias cadastradas que operaram voos registrados na tabela voos. 
 
c. 
A quantidade total de companhias cadastradas. 
 
d. 
Não representa nada, pois seja qual for o conteúdo das tabelas esse comando sempre retorna o número 
zero. 
 
e. 
Não representada nada, pois resultará em um erro devido a sintaxe incorreta. 
Comentário da 
resposta: b. A consulta está dividindo o “count(distinct companhia) FROM voos” (quantidade de companhias que 
operaram voos) por “SELECT count(*) FROM companhias” (quantidade de empresas cadastradas). Ou seja, 
temos a proporção de empresas que operaram voos pelo total de empresas cadastradas. 
 
 
 Pergunta 4 
1 em 1 pontos 
 
Considere um banco de dados para um sistema de controle de estacionamentos. Os requisitos básicos são: o sistema precisa 
armazenar o horário de início e de fim da estadia de cada veículo. Para cada estadia é preciso registrar qual o veículo que foi 
estacionado, assim como o dono desse veículo. 
Assinale a alternativa que corresponda a uma modelagem para esse problema que esteja na BCFN. 
 
Respost
a 
Selecio
nada: 
e. 
 
 
Descrição acessível: tabela estadia com campos inicio, fim e placa_veiculo; tabela veiculo com campos placa, marca, 
modelo, cor e cpf_dono; tabela dono com campos cpf e nome; estadia.placa_veiculo é chave estrangeira para 
veiculo.placa; veiculo.cpf_dono é chave estrangeira para dono.cpf. 
Respost
as: 
a. 
 
 
Descrição acessível: tabela estadia com campos inicio, fim e placa_veiculo; tabela veiculo com campos placa, marca-
modelo-cor e cpf_dono; estadia.placa_veiculo é chave estrangeira para veiculo.placa. 
 
b. 
 
Descrição acessível: tabela veiculo com campos placa, marca, modelo, cor, cpf_dono, inicios_estadias e fins_estadias; 
tabela dono com campos cpf e nome_completo; estadia.cpf_dono é chave estrangeira para dono.cpf. 
 
c. 
 
Descrição acessível: tabela estadia com campos inicio, fim, duracao e placa_veiculo; tabela veiculo com campos placa, 
marca, modelo, cor e cpf_dono; tabela dono com campos cpf e nome; estadia.placa_veiculo é chave estrangeira para 
veiculo.placa; veiculo.cpf_dono é chave estrangeira para dono.cpf. 
 
d. 
 
Descrição acessível: tabela estadia com campos inicio, fim e placa_veiculo; tabela veiculo com campos placa, marca, 
modelo, cor e cpf_dono; tabela dono com campos cpf, nome_completo, primeiro_nome e sobre_nome; 
estadia.placa_veiculo é chave estrangeira para veiculo.placa; veiculo.cpf_dono é chave estrangeira para dono.cpf. 
 
e. 
 
Descrição acessível: tabela estadia com campos inicio, fim e placa_veiculo; tabela veiculo com campos placa, marca, 
modelo, cor e cpf_dono; tabela dono com campos cpf e nome; estadia.placa_veiculo é chave estrangeira para 
veiculo.placa; veiculo.cpf_dono é chave estrangeira para dono.cpf. 
Comentário 
da resposta: e. Opção A viola a 1FN – campo multivalor (marca-modelo-cor). Opção B viola a 1FN – campos com listas de valores 
(inicios_estadias e fins_estadias). Opção C viola a 2FN – atributo (duracao) é função de parte da chave (inicio, fim, 
placa). Opção D viola a 3FN – atributos não chave (primeiro_nome e sobre_nome) dependem de outro atributo não 
chave (nome_completo). Opção E está na BCFN (não apresenta nenhuma violação à BCFN). 
 
 Pergunta 5 
1 em 1 pontos 
 
Analise a seguinte sequência de comandos realizada com o usuário administrador (aquele que possui todos os privilégios sobre a 
instância do SGBD): 
 
CREATE USER 'u1'@'%' IDENTIFIED BY 'senha'; 
CREATE USER 'u2'@'%' IDENTIFIED BY 'senha'; 
CREATE USER 'u3'@'%' IDENTIFIED BY 'senha'; 
 
CREATE DATABASE db1; 
USE db1; 
CREATE TABLE tb1 (id int, x int); 
CREATE TABLE tb2 (id int, x int); 
GRANT SELECT ON db1.* TO u1; 
GRANT SELECT, DELETE ON db1.* TO u2;GRANT UPDATE, INSERT ON db1.tb1 TO u3; 
 
CREATE DATABASE db2; 
USE db2; 
CREATE TABLE tb1 (id int, x int); 
CREATE ROLE r1; 
GRANT ALL ON db2.* TO r1; 
GRANT r1 TO u3; 
SET DEFAULT ROLE ALL TO u3; 
FLUSH PRIVILEGES; 
 
Considerando que os comandos apresentados já foram executados (todos com sucesso), associe a lista de comandos à lista de 
trechos das saídas produzidas por esses comandos. 
 
Lista de comandos (o sinal $ indica um comando realizado no sistema operacional e o sinal > indica um comando realizado no 
MySQL): 
 
(I) $ mysql -u u1 db2 -psenha 
 
(II) $mysql -u u2 db1 -psenha 
> DROP tb2; 
 
 
(III) $ mysql -u u3 db1 -psenha 
> UPDATE tb1 SET x = 2*x WHERE x > 10; 
 
(IV) $ mysql -u u3 db2 -psenha 
> UPDATE tb1 SET x = 2*x WHERE x > 10; 
 
Lista de trechos das saídas: 
 
( ) SELECT command denied to user 
 
( ) Access denied for user 
 
( ) Query OK 
 
( ) You have an error in your SQL syntax 
 
A sequência correta dessa associação é: 
Resposta Selecionada: 
b. 
(III) (I) (IV) (II) 
Respostas: a. 
(IV) (I) (III) (II) 
 
b. 
(III) (I) (IV) (II) 
 
c. 
(IV) (I) (II) (III) 
 
d. 
(I) (II) (III) (IV) 
 
e. 
(IV) (III) (II) (I) 
Comentário 
da resposta: b. O comando I resultará em acesso negado, pois u1 não tem nenhum privilégio sobre db2. O comando II resultará 
em erro de sintaxe, pois o comando correto seria “DROP TABLE tb2”. O comando III resultará em erro de 
permissão, pois, apesar de ter direito ao UPDATE, u3 não possui direito de SELECT em db1.tb1, e a condição do 
WHERE impõe a necessidade de leitura da tabela. Já o comando IV resultará em sucesso, pois u3 recebeu os 
privilégios de r1, que tem acesso total a db2. 
 
 
 Pergunta 6 
0 em 1 pontos 
 
Considere a seguinte tabela de pratos disponíveis em um restaurante: 
CREATE TABLE pratos (nome text, pais_origem text, vegetariano boolean, preco float); 
Considerando essa tabela, assinale a alternativa com o comando que torna possível a execução da seguinte consulta: 
 
 
SELECT pais_origem as pais, count(*) as qtd_pratos_vegetarianos FROM pratos_vegetarianos GROUP BY pais_origem; 
+--------+-------------------------+ 
| pais | qtd_pratos_vegetarianos | 
+--------+-------------------------+ 
| Índia | 10 | 
| Itália | 7 | 
| Brasil | 4 | 
+--------+-------------------------+ 
Resposta 
Selecionada: 
a. 
CREATE SUBSELECT pratos_vegetarianos AS SELECT nome, pais_origem AS pais FROM pratos WHERE 
vegetariano; 
Respostas: a. 
CREATE SUBSELECT pratos_vegetarianos AS SELECT nome, pais_origem AS pais FROM pratos WHERE 
vegetariano; 
 
b. 
CREATE VIEW pratos_vegetarianos AS SELECT nome, pais_origem FROM pratos WHERE vegetariano; 
 
c. 
CREATE SUBSELECT pratos_vegetarianos AS SELECT nome, pais_origem FROM pratos WHERE 
vegetariano; 
 
d. 
CREATE VIEW pratos_vegetarianos FROM SELECT nome, pais_origem FROM pratos WHERE vegetariano; 
 
e. 
CREATE VIEW FOR pratos AS SELECT * FROM pratos_vegetarianos WHERE vegetariano; 
Comentário da 
resposta: b. Para que a consulta funcione, é preciso criar uma view para a tabela pratos. E a sintaxe para criar 
uma view é CREATE VIEW <nome-da-view> AS <SELECT ...>. 
 
 
 Pergunta 7 
1 em 1 pontos 
 
Com a SQL podemos utilizar sub-selects, que são “selects dentro de selects”. Considere o exemplo: 
 
> select * from municipio; 
+----+------------+------+ 
| id | nome | uf | 
+----+------------+------+ 
| 1 | São Paulo | SP | 
| 2 | Osasco | SP | 
| 3 | Mateiros | TO | 
| 4 | Salvador | BA | 
+----+------------+------+ 
 
> select * from municipio where uf = 'SP'; 
+----+------------+------+ 
| id | nome | uf | 
+----+------------+------+ 
 
| 1 | São Paulo | SP | 
| 2 | Osasco | SP | 
+----+------------+------+ 
 
> select count(*) from (select * from municipio where uf = 'SP') as subtab; 
+----------+ 
| count(*) | 
+----------+ 
| 2 | 
+----------+ 
 
Considere agora a existência da tabela voos, com um voo por registro e com a coluna data, representando a data do voo. 
 
Qual dos seguintes comandos exibe corretamente todos os dados dos voos ocorridos na data do voo mais antigo registrado? 
Resposta 
Selecionada: 
a. 
SELECT * FROM voos WHERE data = (SELECT min(data) FROM voos) as 
data_mais_antiga; 
Respostas: 
a. 
SELECT * FROM voos WHERE data = (SELECT min(data) FROM voos) as 
data_mais_antiga; 
 
b. 
SELECT * FROM voos WHERE data = (SELECT min(data)) as data_mais_antiga; 
 
c. 
SELECT * FROM voos WHERE data = min(data); 
 
d. 
SELECT min(data) FROM voos; 
 
e. 
SELECT * FROM voos WHERE min(data); 
Comentário da 
resposta: a. Como queremos ver todas as colunas, é necessário o “SELECT *”. Como queremos ver apenas alguns 
registros (voos mais antigos) é preciso um WHERE limitando isso, impondo uma condição sobre a data. Se já 
soubéssemos a data poderíamos fazer algo como “WHERE data = ‘2010-01-01’”, mas no caso podemos trocar 
o literal ‘2010-01-01’ pela expressão que nele resulta: “SELECT min(data) FROM voos”. 
 
 
 Pergunta 8 
1 em 1 pontos 
 
Considere a seguinte tabela: 
Tabela de municípios: 
nome uf populacao area 
São Paulo SP 12 252 023 1 521 
Belo Horizonte MG 2 512 070 331 
 
Sorocaba SP 679 378 450 
Guaratinguetá SP 121 798 752 
Rancharia SP 29 707 1 587 
Altamira PA 114 594 159 533 
 
Fonte: https://cidades.ibge.gov.br/ 
É correto afirmar que essa tabela: 
Resposta Selecionada: 
c. 
Possui os campos “nome”, “uf”, “populacao” e “area”. 
Respostas: a. 
Possui 4 campos e 7 registros. 
 
b. 
Possui 4 registros. 
 
c. 
Possui os campos “nome”, “uf”, “populacao” e “area”. 
 
d. 
Utiliza todos os tipos de colunas presentes no MySQL: text e integer. 
 
e. 
Não é uma tabela; na verdade é uma tupla. 
Comentário da 
resposta: c. Cada coluna que vemos corresponde a um campo da tabela do banco de dados. A primeira linha que 
vemos representa os nomes dos campos; já as linhas subsequentes representam os registros da tabela do 
banco de dados. 
 
 
 Pergunta 9 
1 em 1 pontos 
 
Considere a seguinte consulta: 
SELECT nome FROM funcionario WHERE not(idade > 65 AND sexo = 'M' OR idade > 60 AND sexo = 'F'); 
Assinale a alternativa que indica um par válido de entrada e saída para essa consulta. 
Obs: Todas as entradas se referem à tabela “funcionario”. 
 
Resposta Selecionada: 
d. 
Entrada: 
 
+----------+-------+------+ 
| nome | idade | sexo | 
+----------+-------+------+ 
| Moacir | 70 | M | 
| Geraldo | 67 | M | 
 
| Enzo | 23 | M | 
| Karolyne | 23 | F | 
| Josefina | 63 | F | 
| Ivone | 70 | F | 
+----------+-------+------+ 
 
Saída: 
 
+----------+ 
| nome | 
+----------+ 
| Enzo | 
| Karolyne | 
+----------+ 
Respostas: a. 
Entrada: 
 
+----------+-------+------+ 
| nome | idade | sexo | 
+----------+-------+------+ 
| Moacir | 70 | M | 
| Geraldo | 67 | M | 
| Enzo | 23 | M | 
| Josefina | 63 | F | 
| Ivone | 70 | F | 
+----------+-------+------+ 
 
Saída: 
+----------+ 
| nome | 
+----------+ 
| Enzo | 
| Josefina | 
| Ivone | 
+----------+ 
 
b. 
Entrada: 
 
+----------+-------+------+ 
| nome | idade | sexo | 
+----------+-------+------+ 
| Moacir | 70 | M | 
| Geraldo | 67 | M | 
| Enzo | 23 | M | 
| Josefina | 63 | F | 
| Ivone | 70 | F | 
+----------+-------+------+ 
 
Saída: 
 
+----------+ 
| nome | 
+----------+ 
| Moacir | 
| Geraldo | 
| Josefina | 
| Ivone | 
+----------+ 
 
c. 
Entrada: 
 
+----------+-------+------+ 
| nome | idade | sexo | 
+----------+-------+------+ 
| Moacir | 70 | M | 
| Geraldo | 67 | M | 
| Enzo| 23 | M | 
| Karolyne | 23 | F | 
| Josefina | 63 | F | 
| Ivone | 70 | F | 
+----------+-------+------+ 
 
Saída: 
 
+----------+ 
| nome | 
+----------+ 
| Moacir | 
| Geraldo | 
| Enzo | 
| Karolyne | 
| Josefina | 
+----------+ 
 
d. 
Entrada: 
 
+----------+-------+------+ 
| nome | idade | sexo | 
+----------+-------+------+ 
| Moacir | 70 | M | 
| Geraldo | 67 | M | 
| Enzo | 23 | M | 
| Karolyne | 23 | F | 
| Josefina | 63 | F | 
| Ivone | 70 | F | 
+----------+-------+------+ 
 
Saída: 
 
+----------+ 
| nome | 
+----------+ 
| Enzo | 
| Karolyne | 
+----------+ 
 
e. 
Entrada: 
 
+----------+-------+------+ 
| nome | idade | sexo | 
+----------+-------+------+ 
| Moacir | 70 | M | 
| Geraldo | 67 | M | 
| Josefina | 63 | F | 
| Ivone | 70 | F | 
+----------+-------+------+ 
 
Saída: 
 
…Syntax error… 
Comentário da 
resposta: D. A consulta irá selecionar todos os homens com idade até 65 anos e todas as mulheres com idade até 60 anos. 
Nas opções A e B, temos “Ivone”, de 70 anos, sendo selecionada, por isso essas opções estão erradas. Na opção 
C, temos “Josefina”, de 63 anos, sendo selecionada, por isso essa opção também está errada. Como a consulta 
não possui erro de sintaxe (opção E), a alternativa correta é a D. 
 
 Pergunta 10 
1 em 1 pontos 
 
Considere o seguinte texto, que faz parte de uma descrição comercial na home page de uma suíte de produtos, servindo de link 
para mais detalhes sobre um produto específico. 
 
Pentaho Business Analytics 
 
Empodere consumidores de dados com análises interativas, visualizações em tempo real e modelagens 
preditivas, com mínimo suporte de TI. 
 
Pentaho Platform. [s. d.]. Disponível em: https://www.hitachivantara.com/en-us/products/data-management-
analytics/pentaho-platform.html. Acesso em: 15 jul. 2020. 
 
Assinale a alternativa que melhor esclarece o texto acima. 
Resposta 
Selecionada: 
c. 
Os “consumidores de dados” são pessoas (analistas, gerentes, etc.) que querem explorar diretamente os 
dados sem a necessidade de depender de pessoas especialistas em TI (“com mínimo suporte de TI”). 
Respostas: a. 
Os “consumidores de dados” são painéis de monitoração que servem aos especialistas de TI. Assim, o 
suporte da TI age somente quando necessário. 
 
b. 
Os “consumidores de dados” são aplicações resilientes que possuem indisponibilidade mínima, mesmo sem 
a intervenção constante de operadores de TI. 
 
c. 
Os “consumidores de dados” são pessoas (analistas, gerentes, etc.) que querem explorar diretamente os 
dados sem a necessidade de depender de pessoas especialistas em TI (“com mínimo suporte de TI”). 
 
d. 
Os “consumidores de dados” são pessoas (analistas, gerentes, etc.) que querem explorar diretamente os 
dados, mas desde que minimamente tenham todo o suporte do pessoal de TI ao seu dispor. 
 
e. 
A chamada leva o leitor a acreditar que é possível explorar os dados diretamente. Mas isso é impossível, já 
que sempre deve existir uma aplicação projetada pela TI corporativa entre o usuário final e os dados. 
Comentário da 
resposta: c. O Pentaho é uma ferramenta de análise de dados que dispensa a necessidade de uma aplicação geradora de 
relatórios e o usuário final. Esse estilo arquitetural de análise de dados é o estilo dos data warehouses.

Continue navegando