[firebase-br] Opinião ID ou código

Renan Cruz de Almeida renan.aju em terra.com.br
Qui Jan 28 09:40:23 -03 2010


Você deve criar o PK como sendo ID-Integer. Isto vai facilitar seu 
trabalho futuramente. Sob o ponto de vista de processamento é mais 
simples relacionar  apenas um campo ID do que todos os campos como no 
caso de uma nota fiscal e seus itens.

Seria mais simples fazer ITEMNOTA.IDNOTA=NOTAFISCAL.IDNOTA
do que fazer ITEMNOTA.NUMERO=NOTAFISCAL.NUMERO AND  
ITEMNOTA.SERIE=NOTAFISCAL.SERIE AND ( ... )

Entretanto, vai perder um pouco da consistência que um banco de dados 
relacional cria automaticamente para você. Além de ter que criar índices 
secundários para a verdadeira PK. Alternativamente poderá criar algum 
tipo de regra no banco de dados ao inserir novo registro para evitar 
gravar registro duplicado. Por exemplo, pode criar uma trigger para 
testar se o registro a ser  incluído já existe e disparar uma exception, 
ou utilizar algum outro mecanismo. O firebird tem muitas opções para 
isto. O certo é que há vantagens e desvantagens.

[]'s
Renan


Carlos Roberto da Silva escreveu:
> Nos meus primeiros projetos em Delphi/FireBird, optei por utilizar os
> campos digitados pelo usuário, como PK, e isso me gerou vários
> transtornos.
> Até hoje, 7 anos depois, tenho problemas por isso, com algumas tabelas
> chegando a ter 5 campos fazendo parte da PK.
> Agora, nos meus novos projetos, utilizo um ID - Integer, como PK. Claro,
> esta é a regra, tendo execeções.
>
>
> Em Qua, 2010-01-27 às 17:13 -0200, Marco Antonio Abreu escreveu:
>   
>> Olá pessoal.
>>
>> Estou modelando um novo BD e estou com uma dúvida. Eu tenho vários cadastros
>> com códigos que serão informados pelos usuários, tais como matrícula, cod.
>> de turma, cod. de disciplina etc. Nessa base terei também os lançamentos de
>> presenças/faltas, aulas, notas etc dos alunos, professores, turmas... A
>> minha dúvida é se devo utilizar esses códigos informados pelos usuários como
>> PK ou se devo criar um campo ID, integer, por exemplo, como PK e deixar o
>> campo informado apenas como atributo dos cadastros.
>>
>> O primeiro caso é mais fácil de manipular os dados já que não precisarei
>> acessar o cadastro para buscar o ID que deverei utilizar para cada
>> transação. Por outro lado a utilização dos campos de código (varchar) como
>> como chave espalhados por várias tabelas e muitas linhas deixará o BD maior
>> e mais lento (isto ainda é verdade?). Ressalto que a performance é algo
>> muito importante neste projeto, mas tb não posso sacrificar facilidades a de
>> acesso a ponto de ficar difícil a utilização do BD pela aplicação, tendo de
>> acessar o cadastro para obter o ID da entidade a cada transação. Alguém já
>> passou por isso?
>>
>> abs.
>>
>>     
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
>   



Mais detalhes sobre a lista de discussão lista