Precisa de ajuda para configurar o relacionamento de chave estrangeira em mysql db
-
27-09-2019 - |
Pergunta
Então, eu tenho que Tabelas Innodb (produtos) e (categorias). Eu queria configurar um relacionamento entre o campo "categoria" na tabela de produtos e a "categoryID" da tabela de categorias.
Mas, ao tentar criar um FK, ele só me permitirá selecionar a chave principal "ProductsId" na tabela de produtos e mapeará para o PK "categoryId" na tabela de categorias.
Talvez eu esteja perdendo o caminho/razão para configurar uma chave estrangeira. Meus pensamentos e me diga se estou errado:
1) Era exigir que um produto fosse adicionado a uma categoria quando adicionado, a categoria deve existir ou você deve criá -lo primeiro. Você não pode remover uma categoria, a menos que execute alguma tarefa (programada ou no back -end do banco de dados) para remover os produtos de uma categoria que você deseja remover.
2) Eu esperava que o valor da categoria fosse armazenado no campo "categoria" da tabela de produtos. Então, ao exibir em minha opinião, precisaria procurar as categorias.
EDITAR:Então eu entendo que dois campos envolvidos nas chaves estrangeiras devem ser iguais, tamanho, tipos ... etc. No entanto, como vincular o produto ProductID e CategoryID em contexto ao que mencionei acima que estou querendo fazer. Quando eu criei um FK entre ProductID e CategoryId, não vou me deixar adicionar um registro de produto.
Além disso, o campo Nome da categoria e o campo da categoria do produto são do mesmo tipo, tamanho ... ETC, mas não tenho a opção de selecionar aqueles na guia Chave estrangeira?
Como devo configurá -lo para que a tabela de categorias saiba quais produtos fazem parte de cada categoria.
Solução
Ok, infelizmente, devo responder às minhas próprias perguntas. A razão para a maioria dos meus problemas técnicos é porque o campo que você está tentando fazer "deve ser indexado".
A questão compreensiva que eu estava tendo era que eu precisava me livrar do campo Varchar "da categoria" real na tabela de produtos e criar um campo categoryID que teria apenas um valor que existe no campo da tabela de categorias de categoria.
Agora vou ter que fazer referência às categorias.
Pelo menos é isso que eu entendi.
Outras dicas
Se você estiver na bancada, verifique se os tipos, comprimentos e atributos de ambas as colunas envolvidos no FK são os mesmos.