Chave estrangeira

Pessoal,

Uma dúvida, se tenho duas colunas, onde uma será a Fk de outra:

Projeto: ID, Nome, Status
Status: Cod, Descrição

Na tabela projeto, é melhor eu inserir o Cod do Status, ou direto a descrição?

Projeto: ID, Nome, Status(Status) ou Cod(Status)?

tem um formulário web e são valores pré definidos (combo box) então não tem como escolher outro nome ou digitar errado, mas não sei se é melhor inserir o Cod ou direto a descrição.

Cara a nível de Tabela para Banco de dados eu utilizaria: codStatus;
Agora se fosse a nível de classe eu utilizaria: status(Status);

Sempre código. Descrição pode mudar por algum motivo, código não.

A minha dúvida é exatamente essa Jonathan… pq como vai vir da tela, eu não sei se referencio por código ou por nome, pois já está predefinido e não tem como o usuário inputar errado…

Utilize por código, pois suponhamos que futuramente venha a mudar a estrutura atual do seu projeto, nesse caso a estrutura do seu banco já estará adaptada para funcionar normalmente sem precisar de alterações.

Então ficaria assim:

Tela:
Campo Status: Ativo, Inativo
Enviaria: 1, 2 (cód)

E na tabela ao inserir na tabela projeto, colocaria CodStatus ao invés de Descrição, é isso?

Correto!
Ao realizar consultas onde você precisar da descrição do status você pode utilizar uma junção comparando as chaves entre as duas tabelas.

Observação: Se a sua tabela Status for somente para armazenar (ATIVO / INATIVO), esqueça tudo o que foi dito acima e crie somente a tabela PROJETO com a coluna Status char(1) onde você armazenaria no caso A para ativos e I para inativos.

Agora se sua tabela de Status for armazenas muito mais informação do que isso, aí siga as indicações anteriores, utilizando o código.

Blz… valeu pelas dicas.

1 curtida