Você está na página 1de 9

Aula 0001

Transcrição

Nesse treinamento, ainda não abordaremos profundamente o Online Analytical


Processing (OLAP), mas é importante pontuar que precisamos desse sistema setorizado
por cada departamento da empresa cuja fonte de dados é nosso foco, o Data
Warehouse.

Existem diversos tipos que acompanham o refinamento da performance dos bancos


relacionais ao longo do tempo denominados Relational Online Analytical Processing
(ROLAP), os quais realizam consultas lógicas dentro destes.

Para fins de esclarecimentos, se estamos usando as ferramentas da Pentaho para


construção dos ETLs e OLAPs, utilizaremos os sitemas ROLAPs já otimizados para
serem trabalhados.

Isso significa que, ao invés de criarmos uma estrutura multidimensional própria,


construímos uma lógica associada a um banco de dados relacional já preparado para
este OLAP.

Por exemplo, relembrando o conteúdo teórico do curso de Introdução ao Business


Intelligence, temos um pequeno banco relacional somente com as informações
peculiares de "Presidência" chamado Data Marts para se associar ao OLAP lógico
desta, compondo o Data Warehouse que engloba todas as tabelas.

Nos próximos passos, construiremos antecipadamente os Data Marts no MySQL para


quando nos debruçarmos sobre os processos de ETL já com estes prontos.

Ao observarmos a tabela do OLAP de "Presidência", notamos quase as mesmas


características das tabelas do Data Warehouse, com ausência de cruzamentos entre
alguns indicadores e dimensões. Então, qual seria a vantagem de construir um Data
Mart ao invés de fazer a associação direta entres os bancos?

Para entender melhor, observemos a necessidade de realizar operações matemáticas


entre os indicadores, como já demonstradas. Como estes se relacionam com diversas
tabelas de Fato e não cruzam com todas as dimensões causando os buracos, podem
acarretar resultados inesperados ao final do cálculo.

O ideal seria um Data Mart com todos os cruzamentos completos. Isso pode ser
executado nos processos de ETL futuros através de um importante critério de rateio,
ou seja, pegaremos o valor globalizado e o dividiremos entre os detalhamentos.

Para demonstrar hipoteticamente, imagine uma empresa de escritórios que possui um


edifício com custo de energia elétrica para o todo, apesar do uso individual
variável de cada departamento que o compõe. Então, em uma tabela geral, a dimensão
eletricidade não se cruzaria diretamente com cada um dos indicadores de
departamentos.

Porém, é necessário calcular os gastos individuais. Nessa situação, pensamos o


prédio como Data Warehouse e os departamentos como Data Marts com valores de uso de
energia elétrica distribuídos baseados em critérios de rateio estabelecidos como
por exemplo, a área ocupada por cada um.

Esse tipo de processo não é realizado no Data Warehouse que está armazenado pela
origem que o indicador ocupa. Mas no Data Mart o critério é usado para dividi-lo
pelas dimensões que não estão sendo cruzadas. E no caso de mais de um, devemos
utilizar critérios que se relacionam entre si para evitar resultados irreais.

Para a OLAP de "Presidência" necessitamos de um Data Mart eficiente. Para isso, há


dois recursos: usar ID numérico para identificar a dimensão e dar preferência ao
modelo estrela, ou Star Schema.

Então mãos à obra!

Aula 0002

Transcrição

Nesta parte, criaremos o Data Mart de "Presidência" baseados na seguinte matriz:


INDICADORES / DIMENSÕES Tempo Cliente Produto Fábrica Vendas
Faturamento R$ (Dados Diários)-(001) X X X X X
Custo de Frete R$ (Dados Diários)-(002) X X X X X
Imposto R$ (Dados Diários)-(001) X X X X X
Custo Fixo R$ (Dados Mensais)-(003) X X X X X
Custo Variável R$ (Dados Diários)-(001) X X X X X
Unidades Vendidas (Dados Diários)-(001) X X X X X
Quantidades Vendidas em Litros (Dados Diários)-(001) X X X X X
Meta de Faturamento R$ (Dados Mensais)-(004) X X X X X
Meta de Custos R$ (Dados Mensais)-(005) X X X X X

Vale ressaltar que todas as dimensões devem ser Star Schema e ter seus membros
identificados por números.

No SQL Power Architect, vá em "Arquivo > New Window" para criar o novo modelo. No
projeto original, temos tabelas deste tipo que podem servir como base para as
novas, que são as "Fábrica," "Cliente" e "Tempo".

Copie e cole a primeira delas na nova janela, concordando com a caixa de diálogo
que aparece ao fazer esse procedimento. Crie uma nova coluna, preenchendo com
"Identificador da Fábrica" e "ID_Fabrica" nos campos de nome lógico e físico,
assinale a opção de chave primária e tipo "INTEGER" para finalizar. Depois, clique
duas vezes sobre o "Código da Fábrica" e desmarque a opção de chave primária.

Repita o mesmo procedimento para as duas outras dimensões de acordo com suas
nomenclaturas.

Para a dimensão "Produto", realize o mesmo processo. Todavia, devemos adicionar


algumas novas colunas: códigos e descritores da "Marca" e da "Categoria", o tipo é
"NVARCHAR" com precisões de "50" e "250" respectivamente da mesma forma que já
conhecemos.

Como seu tipo é pai-filho, a dimensão "Organizacional" não possui níveis bem
definidos. Porém, ao observarmos sua tabela de extração de dados feita
anteriormente, conferimos que "vendedor", "gerente" e "diretor" são claros, mas
irregulares. Por conta disso, criaremos uma tabela do tipo modelo estrela com
códigos e descritores de cada um, e o ID que identifica o primeiro nível.

Voltando ao SQL Power Architect, gere uma nova tabela de nome lógico
"Organizacional", físico "Dim_Organizacional" e chave primária
"Dim_Organizacional_pk". Feito isso, crie uma nova coluna para o ID, inserindo
"Identificador do Vendedor" e "ID_Vendedor" nos dois primeiros campos abertos,
selecionando a opção de chave primária e tipo "INTEGER".

Depois crie colunas de código e descritor de "vendedor" da mesma forma já


realizada. Repita este procedimento para "gerente" e "diretor". Ao final, você
possui as cinco dimensões em formato Star Schema com seus identificadores,
diferenciando-as do Data Warehouse original.

Aula 0003

Transcrição

Na janela do projeto do Data Mart, crie uma nova tabela e preencha com "Fato da
Presidência", "Fato_Presidencia" e "Fato_Presidencia_pk" nos campos abertos. Esta
terá como chaves primárias todos os indicadores das cinco dimensões.

Então crie nova coluna de Nome Lógico "Identificador da Fábrica", Nome Físico
"ID_Fabrica" de tipo "INTEGER", marcando a opção de "chave primária". Repita este
exato procedimento para "Tempo", "Cliente", Produto" e "Vendedor" da
"Organizacional".

Agora, insira as colunas para os indicadores até obter uma tabela desta forma:
Fato da Presidência
Identificador do Tempo: INTEGER NOT NULL [PK]
Identificador da Fábrica: INTEGER NOT NULL [PK]
Identificador do Vendedor: INTEGER NOT NULL [PK]
Identificador do Cliente: INTEGER NOT NULL [PK]
Identificador do Produto: INTEGER NOT NULL [PK]
Faturamento: DOUBLE NOT NULL
Unidade Vendida: DOUBLE NOT NULL
Quantidade Vendida: DOUBLE NOT NULL
Imposto: DOUBLE NOT NULL
Custo Variável: DOUBLE NOT NULL
Custo do Frete: DOUBLE NOT NULL
Custo Fixo: DOUBLE NOT NULL
Meta de Faturamento: DOUBLE NOT NULL
Meta Custo: DOUBLE NOT NULL

Feito isso, iremos amarrar as IDs de cada uma das dimensões com as de mesmo nome da
Fato da Presidência através do botão de ação "Novo relacionamento identificado".

Assim podemos reconhecer uma maior simplicidade do Data Mart em relação ao Data
Warehouse. Nas próximas aulas, quando abordarmos as questões de OLAP, veremos que
este irá se conectar ao banco mais simples, o qual possui duas caracteristicas
principais: todas as dimensões foram definidas como Star Schema, e os IDs das
dimensões são inteiros e sequenciais.

Também iremos executar mais adiante os cálculos de rateio que permitirão a ligação
entre os bancos de dados e a técnica que transforma os códigos em sequenciais
numéricos no processo de ETL.

Aula 0004
Transcrição

Com nosso Data Mart da "Presidência" pronto, não se esqueça de salvar o projeto
como "Projeto_Criacao_DM" na pasta "modelologico".

Agora precisamos fazer a gravação deste modelo no MySQL que deve estar ativo. No
SQL Power Architect, vá em "Conexões > Adicionar conexão > Nova conexão...", nomeie
como "Datamart", selecione o tipo do banco de dados como "MySQL", insira
"localhost" em "Hostname" e "root" tanto no campo de "usuário" quanto de "senha".
Finalize para obter o banco na lista do projeto de Data Mart.

Abra o HeidiSQL e clique com o botão direito do mouse em "Curso BI" para criar um
novo banco chamado "dmpresidencia".

Volte ao projeto do Power Architect, aperte com o botão direito sobre "Datamart" e
selecione "Refresh", apresentando nosso novo banco de dados.

Da mesma forma como fizemos com o Data Warehouse, vá em "Ferramentas > Engenharia
Reversa...", selecione "Datamart" em "Criar em:", insira "dmpresidencia" em
"Database" e finalize em OK.

Caso algum alerta de erro seja apresentado, você pode escolher a sugestão de
correção em "Fix" se for cabível, ou corrija manualmente as questões e salve para
executar novamente e abrir a caixa de diálogo "Visualização Script SQL".

Selecione todo o bloco de código apresentado, copie e cole em uma nova aba de
consulta no HeidiSQL, lembrando de escrever "USE DMPRESIDENCIA;" acima do texto, e
execute através do atalho "F9".

Desta maneira, temos nosso banco Data Mart criado fisicamente no MySQL, que pode
ser constatado pela lista apresentada.

MAOS NA MASSA

Chegou a hora de você pôr em prática o que foi visto na aula. Para isso, execute os
passos listados abaixo.

1) Crie um novo projeto usando o SQL Power Architect.

2) Clique com o botão direito do mouse sobre a área vazia, à direita, do SQL Power
Architect e selecione Nova Tabela. Crie uma tabela com os seguintes dados:

Nome da Tabela Lógica: Fábrica


Nome da Tabela Física: Dim_Fabrica
Nome da chave primária: Dim_Fabrica_pk

3) Clique com o botão direito do mouse sobre a tabela criada acima e crie novas
colunas, com as seguintes características:
Nome Lógico Nome Físico Chave Primária Tipo Precisão Permite nulos
Identificador da Fábrica ID_Fabrica Sim INTEGER - Não
Código da Fábrica Cod_Fabrica Não NVARCHAR 50 Não
Descrição da Fábrica Desc_Fabrica Não NVARCHAR 250 Não
4) Clique com o botão direito do mouse sobre a área vazia, à direita, do SQL Power
Architect e selecione Nova Tabela. Crie uma tabela com os seguintes dados:

Nome da Tabela Lógica: Cliente


Nome da Tabela Física: Dim_Cliente
Nome da chave primária: Dim_Cliente_pk

5) Clique com o botão direito do mouse sobre a tabela criada acima e crie novas
colunas, com as seguintes características:
Nome Lógico Nome Físico Chave Primária Tipo Precisão Permite nulos
Identificador do Cliente ID_Cliente Sim INTEGER - Não
Código do Cliente Cod_Cliente Não NVARCHAR 50 Não
Descritor de Cliente Desc_Cliente Não NVARCHAR 250 Não
Código da Cidade Cod_Cidade Não NVARCHAR 50 Não
Descritor da Cidade Desc_Cliente Não NVARCHAR 250 Não
Código do Estado Cod_Estado Não NVARCHAR 50 Não
Descritor do Estado Desc_Estado Não NVARCHAR 250 Não
Código da Região Cod_Regiao Não NVARCHAR 50 Não
Descritor da Região Desc_Regiao Não NVARCHAR 250 Não
Código do Segmento Cod_Segmento Não NVARCHAR 50 Não
Descritor do Segmento Desc_Segmento Não NVARCHAR 250 Não

6) Clique com o botão direito do mouse sobre a área vazia, à direita, do SQL Power
Architect e selecione Nova Tabela. Crie uma tabela com os seguintes dados:

Nome da Tabela Lógica: Tempo


Nome da Tabela Física: Dim_Tempo
Nome da chave primária: Dim_Tempo_pk

7) Clique com o botão direito do mouse sobre a tabela criada acima e crie novas
colunas, com as seguintes características:
Nome Lógico Nome Físico Chave Primária Tipo Precisão Permite nulos
Identificador do Tempo ID_Tempo Sim INTEGER - Não
Código do Tempo Cod_Tempo Não NVARCHAR 50 Não
Dia Data Não DATE - Não
Número do Dia da Semana Numero_Dia_Semana Não NVARCHAR 50 Não
Número do Mês Numero_Mes Não NVARCHAR 50 Não
Número do Ano Numero_Ano Não NVARCHAR 50 Não
Descritor do Mês Nome_Mes Não NVARCHAR 250 Não
Número do Trimestre Numero_Trimestre Não NVARCHAR 50 Não
Descritor do Trimestre Desc_Trimestre Não NVARCHAR 250 Não
Número do Semestre Numero_Semestre Não NVARCHAR 50 Não
Descritor do Semestre Desc_Semestre Não NVARCHAR 250 Não

8) Clique com o botão direito do mouse sobre a área vazia, à direita, do SQL Power
Architect e selecione Nova Tabela. Crie uma tabela com os seguintes dados:

Nome da Tabela Lógica: Produto


Nome da Tabela Física: Dim_Produto
Nome da chave primária: Dim_Produto_pk

9) Clique com o botão direito do mouse sobre a tabela criada acima e crie novas
colunas, com as seguintes características:
Nome Lógico Nome Físico Chave Primária Tipo Precisão Permite nulos
Identificador do Produto ID_Produto Sim INTEGER - Não
Código do Produto Cod_Produto Não NVARCHAR 50 Não
Descritor do Produto Desc_Produto Não NVARCHAR 250 Não
Código da Marca Cod_Marca Não NVARCHAR 50 Não
Atributo de Tamanho Atr_Tamanho Não NVARCHAR 250 Não
Atributo de Sabor Atr_Sabor Não NVARCHAR 250 Não
Código da Marca Cod_Marca Não NVARCHAR 50 Não
Descritor da Marca Desc_Marca Não NVARCHAR 250 Não
Código da Categoria Cod_Categoria Não NVARCHAR 50 Não
Descritor da Categoria Desc_Categoria Não NVARCHAR 250 Não

10) Clique com o botão direito do mouse sobre a área vazia, à direita, do SQL Power
Architect e selecione Nova Tabela. Crie uma tabela com os seguintes dados:

Nome da Tabela Lógica: Organizacional


Nome da Tabela Física: Dim_Organizacional
Nome da chave primária: Dim_Organizacional_pk

11) Clique com o botão direito do mouse sobre a tabela criada acima e crie novas
colunas, com as seguintes características:
Nome Lógico Nome Físico Chave Primária Tipo Precisão Permite nulos
Identificador do Vendedor ID_Vendedor Sim INTEGER - Não
Código do Vendedor Cod_Vendedor Não NVARCHAR 50 Não
Descritor do Vendedor Desc_Vendedor Não NVARCHAR 250 Não
Código do Gerente Cod_Gerente Não NVARCHAR 50 Não
Descritor de Gerente Desc_Gerente Não NVARCHAR 250 Não
Código do Diretor Cod_Diretor Não NVARCHAR 50 Não
Descritor do Diretor Desc_Diretor Não NVARCHAR 250 Não

12) Clique com o botão direito do mouse sobre a área vazia, à direita, do SQL Power
Architect e selecione Nova Tabela. Crie uma tabela com os seguintes dados:

Nome da Tabela Lógica: Fato da Presidência


Nome da Tabela Física: Fato_Presidencia
Nome da chave primária: Fato_Presidencia_pk

13) Clique com o botão direito do mouse sobre a tabela criada acima e crie novas
colunas, com as seguintes características:
Nome Lógico Nome Físico Chave Primária Tipo Permite nulos
Identificador do Vendedor ID_Vendedor Sim INTEGER Não
Identificador do Cliente ID_Cliente Sim INTEGER Não
Identificador do Produto ID_Produto Sim INTEGER Não
Identificador do Fábrica ID_Fabrica Sim INTEGER Não
Identificador do Tempo ID_Tempo Sim INTEGER Não
Faturamento Faturamento Não DOUBLE Não
Quantidade Vendida Quantidade_Vendida Não DOUBLE Não
Imposto Imposto Não DOUBLE Não
Custo Variável Custo_Variavel Não DOUBLE Não
Custo do Frete Custo_Frete Não DOUBLE Não
Custo Fixo Custo_Fixo Não DOUBLE Não
Meta do Faturamento Meta_Faturamento Não DOUBLE Não
Meta do Custo Meta_Custo Não DOUBLE Não

14) Com o mouse, clique na opção Novo Relacionamento identificado, no menu vertical
à direita, e ligue o campo ID_Vendedor, da tabela Organizacional, com
Cod_Categoria, da tabela Fato_Presidencia.

15) Com o mouse, clique na opção Novo Relacionamento identificado, no menu vertical
à direita, e ligue o campo ID_Cliente, da tabela Cliente, com Cod_Categoria, da
tabela Fato_Presidencia.

16) Com o mouse, clique na opção Novo Relacionamento identificado, no menu vertical
à direita, e ligue o campo ID_Produto, da tabela Produto, com Cod_Categoria, da
tabela Fato_Presidencia.
17) Com o mouse, clique na opção Novo Relacionamento identificado, no menu vertical
à direita, e ligue o campo ID_Fabrica, da tabela Fabrica, com Cod_Categoria, da
tabela Fato_Presidencia.

18) Com o mouse, clique na opção Novo Relacionamento identificado, no menu vertical
à direita, e ligue o campo ID_Tempo, da tabela Tempo, com Cod_Categoria, da tabela
Fato_Presidencia.

19) Salve o Projeto.

20) Ainda no SQL Power Architect, no menu superior, escolha Conexões --> Adicionar
conexão --> Nova conexão.

21) Preencha a nova conexão com as seguintes propriedades:

Nome da conexão: Datamart


Tipo do banco de dados: MySQL
Hostname: localhost
Port: 3306
Usuário: root
Senha: root.

Antes de salvar, verifique se o MySQL está no ar.

22) Sem fechar o SQL Power Architect, execute agora o HeidiSQL.

23) Utilize a conexão criada durante a sua instalação.

24) Clique com o botão direito do mouse sobre o nome da conexão e escolha a opção
Criar novo --> Banco de dados. Em seguida, crie o banco de dados dmpresidencia.

25) Volte ao SQL Power Architect, clique com botão direito do mouse sobre o nome da
conexão e clique em Refresh. O novo banco de dados criado passa ser refletido no
SQL Power Architect.

26) Agora, no menu superior do SQL Power Architect, escolha a opção Ferramentas -->
Engenharia Reversa.

27) Crie na conexão Datamart, criada no passo 21, para o banco de dados MySQL e a
base de dados dmpresidencia. Se houver erros durante a geração dos comandos, pode
ser que você tenha algum campo com nome inválido, por exemplo, um acento.

27) Copie os comandos MySQL que o SQL Power Architect gerou. Em seguida, vá no
HeidiSQL, crie uma nova consulta, e cole os comandos.

30) Coloque, na primeira linha, o comando USE DMPRESIDENCIA;.

31) Execute os comandos para a criação do Data Mart.

32) Os comandos a serem executados para criação do Data Mart são os seguintes:

USE DMPRESIDENCIA;

CREATE TABLE Dim_Organizacional (


ID_Vendedor INT NOT NULL,
Cod_Vendedor NVARCHAR(50) NOT NULL,
Desc_Vendedor NVARCHAR(250) NOT NULL,
Cod_Gerente NVARCHAR(50) NOT NULL,
Desc_Gerente NVARCHAR(250) NOT NULL,
Cod_Diretor NVARCHAR(50) NOT NULL,
Desc_Diretor NVARCHAR(250) NOT NULL,
PRIMARY KEY (ID_Vendedor)
);

CREATE TABLE Dim_Produto (


ID_Produto INT NOT NULL,
Cod_Produto NVARCHAR(50) NOT NULL,
Desc_Produto NVARCHAR(250) NOT NULL,
Cod_Marca NVARCHAR(50) NOT NULL,
Atr_Tamanho NVARCHAR(250) NOT NULL,
Atr_Sabor NVARCHAR(250) NOT NULL,
Cod_Categoria NVARCHAR(50) NOT NULL,
Desc_Marca NVARCHAR(250) NOT NULL,
Desc_Categoria NVARCHAR(250) NOT NULL,
PRIMARY KEY (ID_Produto)
);

CREATE TABLE Dim_Cliente (


ID_Cliente INT NOT NULL,
Cod_Cliente NVARCHAR(50) NOT NULL,
Desc_Cliente NVARCHAR(250) NOT NULL,
Cod_Cidade NVARCHAR(50) NOT NULL,
Desc_Cidade NVARCHAR(250) NOT NULL,
Cod_Estado NVARCHAR(50) NOT NULL,
Desc_Estado NVARCHAR(250) NOT NULL,
Cod_Regiao NVARCHAR(50) NOT NULL,
Desc_Regiao NVARCHAR(250) NOT NULL,
Cod_Segmento NVARCHAR(50) NOT NULL,
Desc_Segmento NVARCHAR(250) NOT NULL,
PRIMARY KEY (ID_Cliente)
);

ALTER TABLE Dim_Cliente COMMENT 'Tabela da dimensĂ£o cliente';

CREATE TABLE Dim_Tempo (


ID_Tempo INT NOT NULL,
Cod_Tempo NVARCHAR(50) NOT NULL,
Data DATE NOT NULL,
Numero_Dia_Semana NVARCHAR(50) NOT NULL,
Numero_Mes NVARCHAR(50) NOT NULL,
Numero_Ano NVARCHAR(50) NOT NULL,
Nome_Mes NVARCHAR(250) NOT NULL,
Numero_Trimestre NVARCHAR(50) NOT NULL,
Nome_Trimestre NVARCHAR(250) NOT NULL,
Numero_Semestre NVARCHAR(50) NOT NULL,
Nome_Semestre NVARCHAR(250) NOT NULL,
PRIMARY KEY (ID_Tempo)
);

CREATE TABLE Dim_Fabrica (


ID_Fabrica INT NOT NULL,
Cod_Fabrica NVARCHAR(50) NOT NULL,
Desc_Fabrica NVARCHAR(250) NOT NULL,
PRIMARY KEY (ID_Fabrica)
);

CREATE TABLE Fato_Presidencia (


ID_Tempo INT NOT NULL,
ID_Fabrica INT NOT NULL,
ID_Vendedor INT NOT NULL,
ID_Cliente INT NOT NULL,
ID_Produto INT NOT NULL,
Faturamento DOUBLE PRECISION NOT NULL,
Unidade_Vendida DOUBLE PRECISION NOT NULL,
Quantidade_Vendida DOUBLE PRECISION NOT NULL,
Imposto DOUBLE PRECISION NOT NULL,
Custo_Variavel DOUBLE PRECISION NOT NULL,
Custo_Frete DOUBLE PRECISION NOT NULL,
Custo_Fixo DOUBLE PRECISION NOT NULL,
Meta_Faturamento DOUBLE PRECISION NOT NULL,
Meta_Custo DOUBLE PRECISION NOT NULL,
PRIMARY KEY (ID_Tempo, ID_Fabrica, ID_Vendedor, ID_Cliente, ID_Produto)
);

ALTER TABLE Fato_Presidencia ADD CONSTRAINT dim_organizacional_fato_presidencia_fk


FOREIGN KEY (ID_Vendedor)
REFERENCES Dim_Organizacional (ID_Vendedor)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

ALTER TABLE Fato_Presidencia ADD CONSTRAINT produto_fato_presidencia_fk


FOREIGN KEY (ID_Produto)
REFERENCES Dim_Produto (ID_Produto)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

ALTER TABLE Fato_Presidencia ADD CONSTRAINT cliente_fato_presidencia_fk


FOREIGN KEY (ID_Cliente)
REFERENCES Dim_Cliente (ID_Cliente)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

ALTER TABLE Fato_Presidencia ADD CONSTRAINT tempo_fato_presidencia_fk


FOREIGN KEY (ID_Tempo)
REFERENCES Dim_Tempo (ID_Tempo)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

ALTER TABLE Fato_Presidencia ADD CONSTRAINT dim_fabrica_fato_presidencia_fk


FOREIGN KEY (ID_Fabrica)
REFERENCES Dim_Fabrica (ID_Fabrica)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

Você também pode gostar