numérico o varchar???

27/11/2003 - 11:59 por Miguel Tubía | Informe spam
Hola,
una preguntita... cuando diseño una BD intento optimizar los tipos de datos,
y no poner un int cuando con un tinyint basta y sobra. Por eso, valores
numéricos grandes uso poquitos, e incluso soy reticente a ponerlos. Ahora
bien, me he dado cuenta que en algunos sitios se ponen, para valores grandes
(un número de 10 dígitos, como la cuenta bancaria) tipos varchar. Claro,
para uno de 10 cifras, q aguante hasta 9999999999 hace falta un bigint, q
son 8 bytes (lo q puede parecer mucho si la tabla va a tener muchos
registros). Mi pregunta es, ¿el tipo de datos varchar como lo almacena? ¿No
es un byte por cada carácter? (creo q sí pero no estoy seguro del todo). Es
q, en este caso, si se pone varchar pq bigint suena a mucha, no se ocuparán
8 bytes, sino 10 bytes!! y hay casos en los q puede ser peor... ¿Hay alguna
razón para usar alfanuméricos en vez de numéricos puros y duros?
Espero me saquen de la duda pq creo que es un mal ejemplo de diseño de BD q,
por lo q he visto, es más común de lo q pensamos. Espero q posteando esta
pregunta muchos nos demos cuenta de si en realidad hacemos mal poniendo como
varchar lo q se puede poner mucho mejor como numérico (yo lo he hecho muchas
veces por inercia, e incluso en la uni los profesores lo hacían!!)
Muchas gracias
un saludo
 

Leer las respuestas

#1 Accotto Maximiliano D.
27/11/2003 - 13:22 | Informe spam
Hola Miguel!! yo tengo otro criterio para hacer las cosas que es el
siguiente:

Si los datos q quiero en un campo seran numericos, entonces usare campos
numerircos
Si seran Alfanumericos usare Char o Varchar (no hacer mucho uso de este q no
es una panacea tampoco)

Esto lo hago porque lo primero q pongo como regla es una cosa basica q es mi
integridad y si pongo un varchar ahi voy a poder poner no solo numeros y
para q eso no suceda seguro q tendre entonces q hacer un chek o un trigger,
por lo cual lo veo en condiciones peores.

El char y Varchar guardan de a un Byte y tienen un maximo de 8.000, la
diferencia entre estos es que por ej:

Si un Char(20) solo se llenan 10 caracteres, este igual ocupara para el
motor 20Bytes
Ahora si un varchar(20) solo se llenan 10 caracteres, para el motor ocupara
10Bytes.

En el unico caso q cambio es en el siguiente:

Tipo de datos Booleano (yes,no,1-0) Esto es un quilombo siempre y mas cuando
pasas de motor en motor.

Entonces aca lo q si hago es un char(1) donde podes poner Y o N, listo el
pollo.

Un saludo como siempre


Maximiliano Damian Accotto
"Miguel Tubía" escribió en el mensaje
news:
Hola,
una preguntita... cuando diseño una BD intento optimizar los tipos de


datos,
y no poner un int cuando con un tinyint basta y sobra. Por eso, valores
numéricos grandes uso poquitos, e incluso soy reticente a ponerlos. Ahora
bien, me he dado cuenta que en algunos sitios se ponen, para valores


grandes
(un número de 10 dígitos, como la cuenta bancaria) tipos varchar. Claro,
para uno de 10 cifras, q aguante hasta 9999999999 hace falta un bigint, q
son 8 bytes (lo q puede parecer mucho si la tabla va a tener muchos
registros). Mi pregunta es, ¿el tipo de datos varchar como lo almacena?


¿No
es un byte por cada carácter? (creo q sí pero no estoy seguro del todo).


Es
q, en este caso, si se pone varchar pq bigint suena a mucha, no se


ocuparán
8 bytes, sino 10 bytes!! y hay casos en los q puede ser peor... ¿Hay


alguna
razón para usar alfanuméricos en vez de numéricos puros y duros?
Espero me saquen de la duda pq creo que es un mal ejemplo de diseño de BD


q,
por lo q he visto, es más común de lo q pensamos. Espero q posteando esta
pregunta muchos nos demos cuenta de si en realidad hacemos mal poniendo


como
varchar lo q se puede poner mucho mejor como numérico (yo lo he hecho


muchas
veces por inercia, e incluso en la uni los profesores lo hacían!!)
Muchas gracias
un saludo


Preguntas similares