Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Duda tonta con el formato de datos

Estas en el tema de Duda tonta con el formato de datos en el foro de Mysql en Foros del Web. Buenas, Tengo una duda tonta que me gustaría resolver, cómo que tipo de datos definiriais los siguientes datos 1 = Un valor de porcentaje que ...
  #1 (permalink)  
Antiguo 21/02/2011, 09:54
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Duda tonta con el formato de datos

Buenas,

Tengo una duda tonta que me gustaría resolver, cómo que tipo de datos definiriais los siguientes datos

1 = Un valor de porcentaje que va de 0 a 100
2 = Un valor decimal que va de 1.01 pasando por 1.50 hasta 1000
3 = Un resultado tal que 1-0, 6-5 o 10-68

Mi idea...
1 = SMALLINT
2 = FLOAT
3 = VARCHAR(5)

¿Podéis confirmarme si es correcto o sería mejor usar otro tipo de formato?

Muchas gracias de antemano
  #2 (permalink)  
Antiguo 21/02/2011, 10:29
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Duda tonta con el formato de datos

1) TINYINT UNSIGNED. Usa un sólo Byte y no dos como el SMALLINT, además el rango es más cercano a lo que usarás: de 0 a 255, contra el otro que va de -32768 a 32767.

2) DECIMAL(7,2). Para moneda o valore decimales donde es importante la precisión, lo que corresponde es DECIMAL. FLOAT es un tipo de dato por aproximación, que sólo es funcional si la cantidad de decimales excede los 4.

3) Si contiene una cadena, entonces es VARCHAR(5)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 21/02/2011, 13:37
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Respuesta: Duda tonta con el formato de datos

Cita:
Iniciado por gnzsoloyo Ver Mensaje
1) TINYINT UNSIGNED. Usa un sólo Byte y no dos como el SMALLINT, además el rango es más cercano a lo que usarás: de 0 a 255, contra el otro que va de -32768 a 32767.

2) DECIMAL(7,2). Para moneda o valore decimales donde es importante la precisión, lo que corresponde es DECIMAL. FLOAT es un tipo de dato por aproximación, que sólo es funcional si la cantidad de decimales excede los 4.

3) Si contiene una cadena, entonces es VARCHAR(5)
Gracias gnzsoloyo,

La única que dudo ahora es la DECIMAL(7,2)

Mirando la documentación oficial
http://dev.mysql.com/doc/refman/5.1/...l-changes.html

Veo un ejemplo
DECIMAL(3,0) column supports a range of -999 to 999

También se puede aplicar el unsigne? y sería de 0 to 999 no?

y entiendo que el segundo número le dice el número de decimales de 0.00 to 999.00 sería DECIMAL(3,2)

Pero (7,2) es 0.00 to 9999999.99

Si solo llega hasta 1000 no sería (5,2) ?

Muchas gracias de antemano
  #4 (permalink)  
Antiguo 22/02/2011, 05:46
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Duda tonta con el formato de datos

Si lees con cuidado, verás que el DECIMAL(M,D) es un formato numérico que representa los decimales en base a dos parámetos: M, que representa el ancho total del numero incluyendo punto y decimales (y no la longitud de la parte entera), y D que representa la cantidad de decimales que el mismo tendrá.
Cita:
The declaration syntax for a DECIMAL column is DECIMAL(M,D). The ranges of values for the arguments in MySQL 5.1 are as follows:

* M is the maximum number of digits (the precision). It has a range of 1 to 65. (Older versions of MySQL permitted a range of 1 to 254.)
* D is the number of digits to the right of the decimal point (the scale). It has a range of 0 to 30 and must be no larger than M.
Esto significa que un número DECIMAL(3,0) es un entero, ya que tiene cero decimales... En ese contexto, un número como 999.99 es un DECIMAL(6,2), ya que 6 es el ancho total de la cifra y 2 la cantidad de decimales.

En este tipo de dato el punto decimal (siempre hablamos de punto, la coma es en español) ocupa un espacio, a diferencia del FLOAT, cuya posición en la coma está dado por el ancho del tipo de dato (SINGLE, DOUBLE).
Respecto al signo, la definición de la representación binaria de números establece que un valor de punto flotante o decimal es un valor con signo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 22/02/2011, 12:19
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Respuesta: Duda tonta con el formato de datos

Gracias por tu aporto gnzsoloyo, ahora ya lo tengo claro. Me lo voy apuntar para no olvidarme :D

Etiquetas: formato
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:32.