Uma rede de lojas de departamentos planeja configurar uma tabela de fato (VENDAS) que favoreça a integridade para análise de vendas no mesmo carrinho (na mesma transação de venda, tal qual a associação conhecida entre fralda e cerveja). A tabela de fato possui os seguintes atributos: ChaveCalendário(FK), ChaveLoja(FK), ChaveProduto(FK), ChaveCliente(FK), IDTransação, HoraMinVenda, ReaisVendidos e QuantidadeVendida. Assinale a opção que indica o(s) atributo(s) que deve(m) ser a chave primária da tabela de fato VENDAS. (FK = Foreign Key/chave estrangeira)
- A)Apenas IDTransação.
Errada, porque IDTransação sozinho identifica a venda, mas não diferencia os vários produtos lançados na mesma transação.
- B)Apenas ChaveProduto.
Errada, porque ChaveProduto identifica o item, mas não identifica a venda específica nem a ocorrência do carrinho.
- C)Chave composta por ChaveProduto e IDTransação.
Certa, porque a combinação de transação e produto identifica de forma única cada item vendido dentro do mesmo carrinho.
- D)Chave composta por ChaveCliente e IDTransação.
Errada, porque ChaveCliente + IDTransação não separa os produtos comprados na mesma transação.
- E)IDTransação, ChaveProduto e ChaveCliente.
Errada, porque incluir cliente e produto ainda não garante a identificação da linha de fato sem a chave da transação completa.
Gabarito: C
Em modelagem dimensional, a tabela de fato guarda os eventos do negócio, e sua chave primária precisa identificar cada ocorrência de forma única, sem confundir uma compra com outra. Aqui, a ideia central é a venda no mesmo carrinho, isto é, a mesma transação pode conter vários produtos. Por isso, só o IDTransação não basta, porque ele se repete para todos os itens daquele carrinho. Se você usar IDTransação junto com ChaveProduto, cada linha passa a representar um item específico dentro da transação, o que identifica corretamente o registro de fato. Esse raciocínio é típico de esquemas estrela em data warehouse: a chave da fato costuma ser composta quando um mesmo evento gera várias linhas, uma para cada dimensão detalhada. Na prática, isso evita duplicidade e mantém a integridade da análise. Já ChaveCliente e ChaveLoja são dimensões importantes para análise, mas não distinguem cada item vendido dentro da mesma venda. Assim, o gabarito C está correto porque a combinação ChaveProduto + IDTransação identifica univocamente cada linha da tabela VENDAS. Isso permite analisar o carrinho inteiro e, ao mesmo tempo, investigar associações entre produtos na mesma transação, como no famoso exemplo fralda e cerveja.