Sacrilégio na Base[Números X Strings]  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
Ironlynx
Moderador
[Avatar]

Membro desde: 02/05/2003 01:06:41
Mensagens: 3515
Localização: The other side of the screen
Offline

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.

Não basta persistir...tem que prevalecer!
Ironlynx
Anarquista de Sistemas
http://osereojava.blogspot.com/
[WWW]
furutani
JWizard
[Avatar]

Membro desde: 11/10/2003 23:58:51
Mensagens: 2995
Localização: Iacri-SP e São Paulo-SP
Offline

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

Até mais,
Roberto Jundi Furutani


Sun Certified Business Component Developer 1.3
Sun Certified Web Component Developer
Sun Certified Java Programmer
SAP Certified Development Associate - ABAP with SAP NetWeaver 7.0

[WWW]
victorwss
JWizard
[Avatar]

Membro desde: 18/12/2007 14:46:00
Mensagens: 2409
Localização: São Paulo - SP
Offline

Ironlynx wrote: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.


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.

This message was edited 1 time. Last update was at 21/11/2008 09:11:14


Victor Williams Stafusa da Silva

Bacharel em Ciência da Computação - UFMT // Especialista em Desenvolvimento Java - CEFET/MT // Doutorando em Ciência da Computação - IME-USP
SCJP 6.0 - 19/12/2007 - PASS - 88% // SCWCD 5 - 17/05/2008 - PASS - 79% // SCJA - 09/09/2008 - PASS - 96% // SCSNI - 30/06/2009 - PASS - 68% // SCBCD 5 - 31/05/2010 - PASS - 95%
Próximos: SCJD (encalhado com o projeto), SCEA parte I (estudando). Algum dia desses: SCMAD, OCA, SCEA e SCDJWS.

Computação: uma ciência holística e esotérica!
E então veio Deus a terra e disse aos homens: Não dividireis por zero.
XML is a giant step in no direction at all. (Erik Naggum)
Arquitetura de sistemas: Eu prefiro ser essa metamorfose ambulante do que ter aquela velha opinião formada sobre tudo.
Diga não as drogas: Não use java.util.Vector.
Cuidado: Este usuário pode ter temperamento agressivo.

Always code as if the person who will maintain your code is a maniac serial killer that knows where you live.
I am the maniac serial killer that knows where you live who will maintain your code.


É impossível falar de CMMI (Capability Maturity Model Integration) sem saber o que é CIMM (Capability Im-Maturity Model).


Se você escreve "concerteza", "concerteza" você andou matando aulas de português.
[MSN]
proteus_adi
JavaGuru
[Avatar]

Membro desde: 24/11/2004 10:05:10
Mensagens: 237
Localização: Belo Horizonte -
Offline

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...


"Remember Yesterday and think about tomorrow... but you have to live today"

Existe vitória e existe derrota.
O segundo lugar é o primeiro dos que perderam.
[Email] [MSN]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team