Para analisar as vendas dos vários livros correspondentes a vários autores em uma rede de livrarias, construiu-se um DataMart com uma nova tabela "FATO" que armazenará os preços dos livros, chamada #VendaLivro (LivroID, AutorID, PrecoVenda). Assinale a opção que descreve a ação correta para incluir esta nova tabela no banco de dados, considerando que já há dados nas tabelas #Livro e #Autor.
- A)CREATE TABLE #VendaLivro ( LivroID INT, AutorID INT, PrecoVenda DECIMAL(10, 2), FOREIGN KEY (AutorID) REFERENCES #Autor(AutorID) );
Está errada porque só cria a chave estrangeira de AutorID e deixa LivroID sem referência, quebrando o vínculo completo exigido pela tabela fato.
- B)CREATE TABLE #VendaLivro ( LivroID INT, PrecoVenda DECIMAL(10, 2), QuantidadeVendida INT, FOREIGN KEY (LivroID) REFERENCES #Autor(LivroID) );
Está errada porque inclui uma coluna QuantidadeVendida que não foi pedida e ainda referencia LivroID na tabela #Autor, o que não faz sentido.
- C)CREATE TABLE #VendaLivro ( LivroID INT, AutorID INT, PrecoVenda DECIMAL(10, 2), FOREIGN KEY (LivroID) REFERENCES #Livro(LivroID) ), FOREIGN KEY (AutorID) REFERENCES #Autor(AutorID) );
Está correta porque define os campos esperados e cria as duas chaves estrangeiras, uma para #Livro e outra para #Autor.
- D)CREATE TABLE #VendaLivro ( AutorID INT, PrecoVenda DECIMAL(10, 2), FOREIGN KEY (AutorID) REFERENCES #Autor(LivroID) );
Está errada porque usa AutorID referenciando #Autor(LivroID), ou seja, a coluna apontada na tabela de destino não corresponde ao identificador do autor.
- E)CREATE TABLE #VendaLivro ( PrecoVenda DECIMAL(10, 2), FOREIGN KEY (LivroID) REFERENCES #Livro(LivroID) ), FOREIGN KEY (AutorID) REFERENCES #Autor(AutorID) );
Está errada porque nem cria a coluna LivroID e ainda deixa a definição das chaves estrangeiras incompleta/inconsistente para a tabela proposta.
Gabarito: C
Em um DataMart, a tabela fato guarda os eventos ou medidas do negócio, como vendas e preços, enquanto as tabelas dimensão trazem o contexto, como livro e autor. Aqui, a nova tabela #VendaLivro precisa relacionar cada registro tanto ao livro quanto ao autor, porque a análise será feita cruzando essas duas dimensões com o preço da venda. Isso faz sentido no modelo dimensional: fato no centro, dimensões ao redor, tudo amarrado por chaves estrangeiras. A opção C está correta porque cria a tabela com LivroID, AutorID e PrecoVenda, além de declarar as duas FOREIGN KEY apontando para #Livro(LivroID) e #Autor(AutorID). Como já existem dados nas tabelas de origem, o importante é preservar a integridade referencial, isto é, cada venda deve referenciar um livro e um autor válidos.