ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Dúvida básica sobre Chave Estrangeira

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
RadeonX
Novato
Novato


Registrado: Sexta-Feira, 31 de Julho de 2015
Mensagens: 8

MensagemEnviada: Qua Jun 10, 2020 10:32 am    Assunto: Dúvida básica sobre Chave Estrangeira Responder com Citação

Bom dia a todos! Estou com uma dúvida bem básica sobre chave estrangeira. Tenho 2 tabelas: Usuário e Filial. Na tabela usuário eu criei um campo chamado FilialID. Na tabela Filial eu tenho um campo chamado FilialID também. Nesse campo eu coloco um código para identificar a Filial.
Quando eu faço login com o usuário eu uso o campo FilialID para fazer todos os filtros do programa, pois ele só enxerga locações e equipamentos da filial que ele se encontra. Como eu tenho feito isso sempre? Eu basicamente criei o mesmo campo nas 2 tabelas e não fiz chave estrangeira. Quando eu estou cadastrando o Usuário, ele seleciona uma filial entre as disponíveis e já pega esse código. Eu deveria usar chave estrangeira em casos assim? Esses campos que as vezes duplico pioram o desempenho ou melhoram por eu ter que acessar apenas uma tabela?
A dúvida é bem básica mesmo. Valeu a todos!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qua Jun 10, 2020 11:16 am    Assunto: Responder com Citação

Bom dia,

A criação de um campo para armazenar o ID de outra tabela muitas vezes é necessária, e ela é feita para termos um banco de dados normalizado.
Com esse campo é possível obter todos os dados da tabela relacionada (no seu caso a tabela de filiais) com o uso de junções (Joins). Sem esse campo seria necessário duplicar os outros campos também e isso com o tempo levaria a uma série de outros problemas.
Mas é indicada a criação de uma chave estrangeira nesses casos para garantir a integridade dos dados, evitando por exemplo códigos de filiais não existentes na tabela de usuários ou que usuários fiquem "orfãos" (exclusão de uma filial que tem usuários com o seu código cadastrado). E a existência da chave estrangeira também favorece o desempenho na execução das junções.

Espero que ajude


Editado pela última vez por imex em Dom Out 01, 2023 5:44 pm, num total de 2 vezes
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
RadeonX
Novato
Novato


Registrado: Sexta-Feira, 31 de Julho de 2015
Mensagens: 8

MensagemEnviada: Qua Jun 10, 2020 11:25 am    Assunto: Responder com Citação

Bom dia!

Muito obrigado! Ajudou sim! Vou fazer os relacionamentos para evitar registros 'órfãos'.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB