Dados Pré-determinados, salvar nome ou código?

Firebird

08/03/2006

Oi pessoal, blz? To com mais uma dúvida que surgiu de outras já tiradas. Agradeço a quem puder me ajudar.

Tenho alguns campos que salvo no bd com dados pré-determinados.

Ex. Avaliação: Excelente, Muito Boa, Boa, Regular, Ruim, Péssimo.

Esse tipo de dados não vai mudar, vai ser sempre as oções pré-estabelecidas, por isso não criei tabela pra elas.

O que fiz foi criar campos Varchar pra entrar esse tipo de dado. Então ele entra como o nome (ex. ´Excelente´).

A dúvida é, o que é melhor, entrar com nomes como faço ou determinar códigos pra salvar no banco? Tipo, Excelente = 1, Muito Bom = 2.. e assim por diante. Aí o campo do banco seria Integer ou SmallInt.

Isso facilita pesquisa ou é indiferente? Pergunto pq eu pretendo sempre mostrar o nome, e não o valor, e trabalhando com os nomes diretos nao tenho esse problema. Eu teria esse problema trabalhando com valores?

Grato pela ajuda..



Allan Elias Ramos :wink:


Aersoftware

Aersoftware

Curtidas 0

Respostas

Sremulador

Sremulador

08/03/2006

utilize o CASE que vai ficar blz...


GOSTEI 0
Aersoftware

Aersoftware

08/03/2006

Mas é melhor usar códigos ao invés de nomes?



Allan Elias Ramos :wink:


GOSTEI 0
Vinicius2k

Vinicius2k

08/03/2006

Colega,

Para estes casos, normalmente, eu utilizo CHAR(1) com os pseudo-códigos (´1´, ´2´, ´3´... ou ´A´, ´B´,´C´).

Só não utilizo CHAR(1) quando o campo é indexado e/ou estará presente em WHEREs ou JOINs. Neste caso, utilizo SMALLINT, porque um índice por SMALLINT é mais eficiente (rápido) do que com CHAR ou VARCHAR. Apesar de que, para esta situação, não fará muita diferença porque o índice será ´pobre´.

Usando CHAR ou SMALLINT, faço o tratamento para exibição dentro da aplicação.


GOSTEI 0
Aersoftware

Aersoftware

08/03/2006

Hmm.. entendi.. mas no caso de não ser um índice. Já que são campos supérfluos, que raramente serão usados pra pesquisas (acho até que não colocarei pesquisa pra esse tipo de dado).

Não tem diferença colocar no campo ´1´ ou ´Excelente´, certo? A não ser o tamanho do banco, mas acho que isso não influencia muito, né?

Pergunto pq acho mais fácil cadastrar com o nome inteiro, até pra visualizar. Gostaria de saber se é recomendado ou não.



Allan Elias Ramos :wink:


GOSTEI 0
Vinicius2k

Vinicius2k

08/03/2006

Eu diria que não há problema, mas existe influência no tamanho do banco de dados. É possível que seja insignificante em tabelas com poucos registros, mas com muitos milhares de registros, você estaria ´desperdiçando´ espaço.

O ´problema´ pode vir mais tarde... ´amanhã´ você decide que terá mais uma opção como ´Excelentíssimo´ :).
Antes o maior tamanho para seu dado era ´Excelente´ 9 e você criou um VARCHAR(9) para armazenar esse dado. Resultado: terá que alterar a estrutura da tabela pois seu campo não comporta o valor que você quer armazenar.
Em contrapartida, se criar este campo já com um tamanho maior do que o necessário estará desperdiçando espaço em disco.

Existem prós e contras mas, na prática, não há um problema em utilizar da forma que você deseja.


GOSTEI 0
Aersoftware

Aersoftware

08/03/2006

hmmm.. me convenceu.. hehehe.. vou usar códigos.. hehehe.. valeu.. abraços.



Allan Elias Ramos :wink:


GOSTEI 0
POSTAR