Oi, Maria. Tudo em Paz e espero o mesmo para você.
Desculpa mesmo, vou melhorar...
No curso, o exemplo utilizado força a chave primária da tabela fato ficar assim:
ID_Cliente, ID_Fabrica, ID_Produto, ID_Tempo, ID_Vendedor.
Desta forma, a cliente Ana não poderia comprar o mesmo produto da mesma fábrica no mesmo dia com o mesmo vendedor.
Então, eu não poderia montar a chave primária da tabela Fato apenas com esses campos. Precisaria de uma das alternativas colocadas acima, que irei repetir aqui para me ajudar no texto, certo.
1. Incluir mais um campo para ser "juntado" aos demais campos e, assim formar nossa PK;
(ID_Cliente, ID_Fabrica, ID_Produto, ID_Tempo, ID_Vendedor, ID_Contador).
. Como não tenho um campo que identifique a venda de forma única, preciso colocar um contador qualquer.
. Acho que essa ideia não é muito boa, pois a chave fica muito grande, causando baixa performance e teria que ficar calculando esse contador para cada tupla igual (performance ruim na montagem).
2. Incluir um campo inteiro para ser sua PK.
(ID_Fato)
. Colocaria todos os campos para serem apenas chaves estrangeiras e criaria uma PK com apenas um campo que poderia ser auto incremento.
. Acho que essa é a melhor ideia, pois acho que fica tudo no canto certo e acho que teria a melhor performance.
3. Criar uma tabela sem PK.
. Sem PK.
. Sou totalmente contra a ideia de criar tabelas sem PK. Para mim, tem muitos problemas em fazer isso. Performance baixa, não consigo identificar uma tupla de forma única.
. Mas pesquisando, vi que existem muitos que indicam essa forma de criação. Eles dizem que a tabela fato deve ficar sem PK.
Bom... mas isso é o que penso. Como esse mundo BI é muito novo para mim, queria abrir uma discursão para, realmente, encontrar a melhor saída. Como funciona a performance em um cubo??? É melhor ter a fato sem PK ou com PK?!? É melhor ter as chaves estrangeiras da fato como PK ou não?!?
Espero que tenha explicado melhor.
Muito obrigada!