2
respostas

PROBLEMAS NA CRIAÇÃO DA TABELA D OSQL SERVER

Ola, por favoralguem pode verifgicar qual o erro no codigo da tabela

CREATE TABLE DBO.dim_empresa (
                id_loja INT NOT NULL,
                cod_loja VARCHAR(25) NOT NULL,
                desc_loja VARCHAR(200) NOT NULL,
                atr_tipo_loja VARCHAR(50) NOT NULL,
                cod_empresa VARCHAR(25) NOT NULL,
                desc_empresa VARCHAR(200) NOT NULL,
                CONSTRAINT dim_empresa_pk PRIMARY KEY (id_loja)
)

CREATE TABLE DBO.dim_tempo (
                id_dia INT NOT NULL,
                cod_dia VARCHAR(25) NOT NULL,
                data DATETIME NOT NULL,
                atr_dia_semana VARCHAR(50) NOT NULL,
                atr_fim_de_semana BIT NOT NULL,
                cod_mes VARCHAR(25) NOT NULL,
                desc_mes VARCHAR(200) NOT NULL,
                cod_trimestre VARCHAR(25) NOT NULL,
                desc_trimestre VARCHAR(200) NOT NULL,
                cod_semestre VARCHAR(25) NOT NULL,
                desc_semestre VARCHAR(200) NOT NULL,
                cod_ano VARCHAR(25) NOT NULL,
                CONSTRAINT dim_tempo_PK PRIMARY KEY (id_dia)
)

CREATE TABLE DBO.DIM_FORNECEDOR (
                cod_fornecedor INT NOT NULL,
                desc_fornecedor VARCHAR(200) NOT NULL,
                CONSTRAINT DIM_FORNECEDOR_PK PRIMARY KEY (cod_fornecedor)
)

CREATE TABLE DBO.DIM_PRODUTO (
                ID_PRODUTO INT NOT NULL,
                COD_PRODUTO VARCHAR(25) NOT NULL,
                DESC_PRODUTO VARCHAR(200) NOT NULL,
                ATR_UNIDADE_MEDIDA VARCHAR(50) NOT NULL,
                COD_SETOR VARCHAR(25) NOT NULL,
                cod_fornecedor INT NOT NULL,
                CONSTRAINT DIM_PRODUTO_PK PRIMARY KEY (ID_PRODUTO)
)

CREATE TABLE DBO.dim_departamento (
                cod_setor VARCHAR(25) NOT NULL,
                desc_setor VARCHAR(200) NOT NULL,
                ID_PRODUTO INT NOT NULL,
                CONSTRAINT dim_departamento_pk PRIMARY KEY (cod_setor)
)

CREATE TABLE DBO.DIM_CLIENTE (
                ID_CLIENTE INT NOT NULL,
                COD_CLIENTE VARCHAR(25) NOT NULL,
                DESC_CLIENTE_ VARCHAR(200) NOT NULL,
                ATR_TAMANHO_CLIENTE VARCHAR(50) NOT NULL,
                COD_CIDADE VARCHAR(25) NOT NULL,
                DESC_CIDADE VARCHAR(200) NOT NULL,
                COD_ESTADO VARCHAR(50) NOT NULL,
                COD_ESTADO_1 VARCHAR(200) NOT NULL,
                COD_REGIO VARCHAR(25) NOT NULL,
                DESC_REGIO VARCHAR(200) NOT NULL,
                COD_SEGMENTO VARCHAR(25) NOT NULL,
                DESC_SEGMENTO VARCHAR(200) NOT NULL,
                CONSTRAINT DIM_CLIENTE_PK PRIMARY KEY (ID_CLIENTE)
)

CREATE TABLE DBO.fact_venda (
                id_loja INT NOT NULL,
                id_dia INT NOT NULL,
                ID_PRODUTO INT NOT NULL,
                ID_CLIENTE INT NOT NULL,
                quantidade_vendida REAL NOT NULL,
                valor_venda REAL NOT NULL,
                custo_venda REAL NOT NULL,
                CONSTRAINT fact_venda_pk PRIMARY KEY (id_loja, id_dia, ID_PRODUTO, ID_CLIENTE)
)

ALTER TABLE DBO.fact_venda ADD CONSTRAINT dim_empresa_fact_venda_fk
FOREIGN KEY (id_loja)
REFERENCES DBO.dim_empresa (id_loja)


ALTER TABLE DBO.fact_venda ADD CONSTRAINT dim_tempo_fact_venda_fk
FOREIGN KEY (id_dia)
REFERENCES DBO.dim_tempo (id_dia)
ON DELETE NO ACTION
ON UPDATE NO ACTION

ALTER TABLE DBO.DIM_PRODUTO ADD CONSTRAINT DIM_FORNECEDOR_DIM_PRODUTO_fk
FOREIGN KEY (cod_fornecedor)
REFERENCES DBO.DIM_FORNECEDOR (cod_fornecedor)
ON DELETE NO ACTION
ON UPDATE NO ACTION

ALTER TABLE DBO.fact_venda ADD CONSTRAINT DIM_PRODUTO_fact_venda_fk
FOREIGN KEY (ID_PRODUTO)
REFERENCES DBO.DIM_PRODUTO (ID_PRODUTO)
ON DELETE NO ACTION
ON UPDATE NO ACTION

ALTER TABLE DBO.dim_departamento ADD CONSTRAINT DIM_PRODUTO_dim_departamento_fk
FOREIGN KEY (ID_PRODUTO)
REFERENCES DBO.DIM_PRODUTO (ID_PRODUTO)
ON DELETE NO ACTION
ON UPDATE NO ACTION

ALTER TABLE DBO.fact_venda ADD CONSTRAINT DIM_CLIENTE_fact_venda_fk
FOREIGN KEY (ID_CLIENTE)
REFERENCES DBO.DIM_CLIENTE (ID_CLIENTE)
ON DELETE NO ACTION
ON UPDATE NO ACTION

O sgbd, informa sempre o mesmmo erro.

Mensagem 1776, Nível 16, Estado 0, Linha 79
Não existem chaves primárias ou candidatas na tabela de referência 'DBO.dim_empresa' que correspondam à lista de colunas de referência na chave estrangeira 'dim_empresa_fact_venda_fk'.
Mensagem 1750, Nível 16, Estado 1, Linha 79
Não foi possível criar a restrição ou o índice. Consulte os erros anteriores.

podem me ajudar

2 respostas

Oii, Rafael! Tudo bem?

Esse erro pode ser causado por alguns motivos como erros de sintaxe nos nomes das tabelas, inconsistência na definição da chave e dentre outros. Sendo assim, indico que verifique alguns pontos:

Você definiu a chave primária dim_empresa_pk na coluna id_loja da tabela dim_empresa no código, porém pode acontecer de algo ter inferido na definição da chave primária. Para verificar se a chave primária está definida corretamente no banco de dados, pode usar o comando abaixo para reparar possíveis erros na definição.

SP_PRIMARYKEYS 'dim_empresa'

Também revise se o nome da coluna (id_loja) e o nome da tabela (dim_empresa) estão certos.

Outra alternativa de solução é reiniciar o SQL, essa ação pode reparar problemas temporários de cache ou bloqueios que podem estar causando o erro. Ou tente criar as tabelas e as chaves estrangeiras em um novo script SQL para descartar possíveis problemas com o script original.

Espero que as sugestões sejam válidas. Qualquer dúvida, compartilhe no fórum.

Bons estudos, Rafael!

Então todo aquele problema, começa nessa parte do power architect. Foi dito em aula que para não dar mais esse erro, bastava retirar a sequencia de nome do auto increment, porém fiz isso e nada adiantou. Insira aqui a descrição dessa imagem para ajudar na acessibilidade