1
resposta

Falta de Chave Estrangeira

Tive probelmas ao tentar importar as bases, das formas propostas pelo professor então fui abrindo 1 a 1 e criando, porem no Diagrama não aparece os relacionamentos e nem as chaves estrangeiras.

1 resposta

Oi, Claudionor! Tudo certo?

Peço desculpas pela demora a responder.

A fim de resolver este problema, podemos adicionar manualmente as chaves estrangeiras às suas respectivas tabelas. Para isso, teremos que acessar o MySQL Workbench e realizar os seguintes passos:

  1. Selecionar o seu banco de dados:
    USE SUCOS_VENDAS;
  2. Adicionar as chaves estrangeiras MATRICULA (de TABELA_DE_VENDEDORES) e CPF (de TABELA_DE_DADOS) à tabela NOTAS_FISCAIS:
    ALTER TABLE NOTAS_FISCAIS
    ADD CONSTRAINT notas_fiscais_ibfk_1
    FOREIGN KEY (MATRICULA) REFERENCES TABELA_DE_VENDEDORES(MATRICULA);
    ALTER TABLE NOTAS_FISCAIS
    ADD CONSTRAINT notas_fiscais_ibfk_2
    FOREIGN KEY (CPF) REFERENCES TABELA_DE_CLIENTES(CPF);
  3. Adicionar as chaves estrangeiras CODIGO_DO_PRODUTO (de TABELA_DE_PRODUTOS) e NUMERO (de NOTAS_FISCAIS) à tabela ITENS_NOTAS_FISCAIS:
    ALTER TABLE ITENS_NOTAS_FISCAIS
    ADD CONSTRAINT itens_notas_fiscais_ibfk_1
    FOREIGN KEY (CODIGO_DO_PRODUTO) REFERENCES TABELA_DE_PRODUTOS (CODIGO_DO_PRODUTO);
    ALTER TABLE ITENS_NOTAS_FISCAIS
    ADD CONSTRAINT itens_notas_fiscais_ibfk_2
    FOREIGN KEY (NUMERO) REFERENCES NOTAS_FISCAIS (NUMERO);

De maneira geral, em todos os códigos acima estamos realizando as seguintes atividades:

  • Alterar uma tabela específica através da cláusula ALTER TABLE e do seu respectivo nome;
  • Usar ADD CONSTRAINT para indicar que haverá uma restrição de chave estrangeira;
  • Adicionar um nome genérico para tal restrição, a fim de identificá-la;
  • Usar FOREIGN KEY e o nome da chave estrangeira para defini-la;
  • Utilizar REFERENCES para indicar a qual tabela e a qual campo a nossa chave estrangeira faz referência.

Claudionor, espero ter ajudado. Caso o problema persista ou surjam novas dúvidas, fico à disposição.

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!