Tô numa discussão apimentada por aqui, e gostaria de saber a opnião de vocês.Vocês salvariam numeros como Strings(leia-se varchar) na base de dados?Vou dar uma breve explicação sobre o assunto:
Estou fazendo um sistema que substitui uma grande planilha Excel2003, onde quase todos os números são assim 112,2901(notou a vírgula né?).Os números são exibidos sempre dessa forma, e inseridos assim também(nem adianta tentar explicar o ponto decimal para quem faz isso há muitos anos).Se eu gravar como Decimal, sempre vou ter que no mínimo fazer uma conversão para gravar, e outra para exibir(nada demais, mas o tempo todo).Se gravar como varchar, não vou ter problemas de exibição, mas vou ter que converter para efetuar cálculos em dada fórmula(na verdade, só substituir o ponto e tacar num BigDecimal, sempre com 4 casas).Não sei se sou purista, mas(sou voto vencido) números são núemros, e eu optaria por decimal sempre. Há, o sistema cresce apenas 500KB(no máximo) ao mês.
Olá
Grava como número, já vi sistema que grava datas no formato DD/MM/YYYY em campo varchar e depois é um saco fazer conversões para gravar e para ler esses dados.
Claro que pro usuário que está acostumado com a planilha excel vai ficar transparente né? sem os NumberFormatException
[quote=Ironlynx]Tô numa discussão apimentada por aqui, e gostaria de saber a opnião de vocês.Vocês salvariam numeros como Strings(leia-se varchar) na base de dados?Vou dar uma breve explicação sobre o assunto:
Estou fazendo um sistema que substitui uma grande planilha Excel2003, onde quase todos os números são assim 112,2901(notou a vírgula né?).Os números são exibidos sempre dessa forma, e inseridos assim também(nem adianta tentar explicar o ponto decimal para quem faz isso há muitos anos).Se eu gravar como Decimal, sempre vou ter que no mínimo fazer uma conversão para gravar, e outra para exibir(nada demais, mas o tempo todo).Se gravar como varchar, não vou ter problemas de exibição, mas vou ter que converter para efetuar cálculos em dada fórmula(na verdade, só substituir o ponto e tacar num BigDecimal, sempre com 4 casas).Não sei se sou purista, mas(sou voto vencido) números são núemros, e eu optaria por decimal sempre. Há, o sistema cresce apenas 500KB(no máximo) ao mês. [/quote]
Cada gambiarra no sistema é um câncer que poderá consumí-lo no futuro.
Ou seja, seja purista. O Banco de dados é periférico ao sistema, não deve estar no centro dele. Se o banco de dados tem regras imbecis e desnecessariamente complexas, ou é desorganizado, ele não pode contaminar e poluir a estrutura do seu sistema.
O seu sistema é que controla o banco de dados e não o banco de dados que controla o seu sistema. O seu sistema pode até precisar respeitar as regras do banco de dados, mas não deve se subverter a ele.
E, já que você tem a chance de modelar o banco de dados, modele-o de forma a eliminar regras imbecis e dar-lhe flexibilidade. Coloque os campos como número, pois se um dia o usuário vier pedir para fazer algum tipo de cálculo com ele (como por exemplo, totalizar um valor), você vai se ferrar se ele for varchar.
Números definitivamente são números…
=],
E, os sistemas sempre crescem…
Se vc guardar como varchar, depois vai ter mais uma coluninha ali que vai ser varchar… e vc vai ter que fazer um calculo e tal e pah… dai vai ter que converter do mesmo jeito…
Alem do que, números são mais facilmente armazenados no DB… menos memória…
Apesar de que 500k/mes num é nada…
é questão de pensar no futuro mesmo…
A um mesmo custo vc pode fazer algo que no futuro vai te dar menos dor de cabeça…
No presente não faz diferença alguma…