none
Criar uma Entidade-Relacionamento que tem um relacionamento com outra Entidade-Relacionamento RRS feed

  • Pergunta

  • Agradeço desde já a Ajuda !!!

    Estou tentando criar esse Script de Bando de Dados SQL Server, mas quando executo acontece a seguinte mensagem de erro:

    Msg 1776, Level 16, State 0, Line 161 Não existem chaves primárias ou candidatas na tabela de referência 'tblFornecedorInsumo' que correspondam à lista de colunas de referência na chave estrangeira 'FK_tblInsumosDaComposicao_tblFornecedorInsumo'.

     

    Msg 1750, Level 16, State 1, Line 161 Não foi possível criar a restrição ou o índice. Consulte os erros anteriores.

    OBS: "FK_tblInsumosDaComposicao_tblFornecedorInsumo" é o nome do relacionamento da tblInsumosDaComposicao.

    Esse erros acontecem por causa do tipo de relacionamento na tabela tblInsumosDaComposicao que estou tentando Criar. Ela é uma tabela N:N que tenta criar relacionamento com uma tabela normal(tblComposicao) e uma tabela relacionamento N:N(tblFornecedorInsume -> que é o relacionamento da tblInsumo e a tblFornecedor onde seus atributos PK são também FK (IDInsumo e IDFornecedor)).

    Abaixo o código que estou tentando executar para criação dessas tabelas:

    CREATE TABLE tblInsumo
    (
        IDInsumo INT IDENTITY(1,1) NOT NULL,
        Descricao VARCHAR(100) NOT NULL,
        Deletado BIT NOT NULL,
    
        CONSTRAINT PK_tblInsumo PRIMARY KEY (IDInsumo),
    );
    GO
    
    
    CREATE TABLE tblFornecedor
    (
        IDFornecedor INT IDENTITY(1,1) NOT NULL,
        NomeFantasia VARCHAR(150) NOT NULL,
        RazaoSocial VARCHAR(150) NOT NULL,
        FisicaJuridica BIT NOT NULL,
        CpfCnpj VARCHAR(14) NOT NULL,
        Deletado BIT NOT NULL,
    
        CONSTRAINT PK_tblFornecedor PRIMARY KEY (IDFornecedor)
    );
    GO
    
    
    CREATE TABLE tblComposicao
    (
        IDComposicao INT IDENTITY(1,1) NOT NULL,
        Descricao VARCHAR(150) NOT NULL,
        Total DECIMAL(18,2) NOT NULL,
        Deletado BIT NOT NULL,
    
        CONSTRAINT PK_tblComposicao PRIMARY KEY (IDComposicao),
    );
    GO
    
    
    CREATE TABLE tblFornecedorInsumo
    (
        IDInsumo INT NOT NULL,
        IDFornecedor INT NOT NULL,
        PrecoCusto DECIMAL(18,2) NOT NULL,
        MargemLucro DECIMAL(18,2) NOT NULL,
        PrecoVenda DECIMAL(18,2) NOT NULL,
        DataAtualizacao DATE NOT NULL,
    
        CONSTRAINT PK_tblForneceInsumo PRIMARY KEY (IDFornecedor, IDInsumo),
        CONSTRAINT FK_tblForneceInsumo_tblInsumo FOREIGN KEY(IDInsumo) REFERENCES tblInsumo(IDInsumo),
        CONSTRAINT FK_tblForneceInsumo_tblFornecedor FOREIGN KEY(IDFornecedor) REFERENCES tblFornecedor(IDFornecedor)
    );
    GO
    
         ------Tabela que não é criada e gera as mensagens de erro------
    CREATE TABLE tblInsumosDaComposicao
    (
        IDComposicao INT NOT NULL,
        IDInsumo INT NOT NULL,
        IDFornecedor INT NOT NULL,
        Quantidade DECIMAL(18,2) NOT NULL,
        Total DECIMAL(18,2) NOT NULL,
        Deletado BIT NOT NULL,
    
        CONSTRAINT PK_tblInsumosDaComposicao PRIMARY KEY (IDComposicao, IDInsumo, IDFornecedor),
        CONSTRAINT FK_tblInsumosDaComposicao_tblComposicao FOREIGN KEY(IDComposicao) REFERENCES tblComposicao(IDComposicao),
        CONSTRAINT FK_tblInsumosDaComposicao_tblFornecedorInsumo FOREIGN KEY(IDInsumo, IDFornecedor) REFERENCES tblFornecedorInsumo(IDInsumo, IDFornecedor)
    );
    GO
    



    domingo, 21 de janeiro de 2018 01:46

Respostas

Todas as Respostas