Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Antonelli

Chave Estrangeira, como usar? Ou melhor Join?

Recommended Posts

Galera, tudo bem?

 

Estou fazendo um projeto de um sistema de gerenciamento interno, do escritório onde trabalho.

Inicialmente o sistema irá tratar a parte financeira, gestão de clientes.

 

Terei uma tabela para cadastrar as Empresas, uma para os sócios dessa empresa, uma para os serviços que prestaremos para todas as empresas, etc.... Resumindo, tudo se baseará "na empresa", ou melhor, no ID da empresa cadastrada.

 

Agora vem a dúvida:

 

4chM0WK.png

 

Tenho as tabelas acima, ressaltando os campos principais seriam:

p_empresa.ID
p_socio.ID_empresa
s_usuario.ID
s_usuario_permissao.ID_usuario

O primeiro seria a "base" da maior parte do sistema, o segundo seria um dependente primeiro. No terceiro e quarto acontecem a mesma coisa, base e dependente, respectivamente.

Hoje, estou usando desta forma e na interface eu utilizo "SELECT * WHERE ID_empresa = XX" pra selecionar os dados de cada empresa, mas vi que isso pode causar erro na integridade do DB. Sendo a melhor solução usar FK.

 

Como eu usaria FK nessa relação dessas 4 tabelas (p_empresa <> p_socio, s_usuario <> s_usuario_permissao)?

 

No caso de eu utilizar FK, eu deveria criar uma FK na tabela "dependente", certo?

Na minha estrutura eu criaria uma FK com o nome de ID_empresa e quando precisasse buscar qualquer dado, continuaria baseando o SELECT nesse "campo" (FK) certo?

 

Sei que o tópico ficou extenso, mas não sei se conseguiria explicar sendo menor.

Desde já agradeço à todos.

 

:yes:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando você define uma chave estrangeira, ela vira uma "regra" de limitação no campo da tabela. Esse campo só poderá ser preenchido com valores que estão em outro campo de outra tabela. Se por bug ou erro na programação os dados de uma tabela não combinarem com os da outra tabela, o BD não permitirá a consulta, e retornará erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.