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

¿TEXT o VARCHAR?

Estas en el tema de ¿TEXT o VARCHAR? en el foro de Mysql en Foros del Web. Hola que tal. Bueno, tengo una pequeña duda y me gustaría que me orientaran. ¿Que tipo de campo es mejor usar cuando voy a almacenar ...
  #1 (permalink)  
Antiguo 08/06/2010, 12:18
Avatar de berper  
Fecha de Ingreso: abril-2009
Ubicación: Mexico
Mensajes: 74
Antigüedad: 15 años, 7 meses
Puntos: 2
Sonrisa ¿TEXT o VARCHAR?

Hola que tal.

Bueno, tengo una pequeña duda y me gustaría que me orientaran.

¿Que tipo de campo es mejor usar cuando voy a almacenar datos de este formato?:

156
325
23
55-56
125
435-436

Como verán solo uso números y guiones. Antes usaba INT(3) pero ahora necesito que ese campo pueda almacenar 1 o 2 numeros de hasta 3 cifras separados por un guion.

¿VARCHAR(7) seria lo mejor?

Gracias.
  #2 (permalink)  
Antiguo 08/06/2010, 12:50
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: ¿TEXT o VARCHAR?

Cita:
Como verán solo uso números y guiones. Antes usaba INT(3) pero ahora necesito que ese campo pueda almacenar 1 o 2 numeros de hasta 3 cifras separados por un guion.
Si cada numero coresponde al ID de algún objeto, lo que necesitas no es un campo sino una tabla, porque no se deben poner campos multivaluados en el modelo relacional. Es una violación al modelo y en el futuro lo único que te provocará es inconvenientes cuando necesites realizar las consultas usando todos los identificadores de ese campo.
Eso representa en realidad una relación 1:N entre dos entidades, lo que implica que hay una tabla relacionada adicional que no estás poniendo.
Sólo sería válido si por ejemplo "435-436" representasen un sólo identificador.
__________________
¿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 08/06/2010, 13:18
Avatar de berper  
Fecha de Ingreso: abril-2009
Ubicación: Mexico
Mensajes: 74
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: ¿TEXT o VARCHAR?

Lo usaría, por ejemplo, de esta manera:



Código MySQL:
Ver original
  1. INT  |     INT   |  VARCHAR
  2. -----------------------------
  3.  id  | categoria |   objeto
  4. -----------------------------
  5.   1  |     1     |    100
  6.   2  |     1     |    101-102
  7.   3  |     1     |    103
  8.   4  |     2     |    100
  9.   5  |     2     |    101-102
  10.   6  |     2     |    103
  11.   7  |     3     |    100
  12.   8  |     3     |    101-102
  13.   9  |     3     |    103

Y la consulta de esta forma:

SELECT * FROM tabla WHERE categoria = '1' AND objeto = '101-102'

Última edición por berper; 08/06/2010 a las 13:31
  #4 (permalink)  
Antiguo 08/06/2010, 13:22
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: ¿TEXT o VARCHAR?

Es una opción. Pero ¿qué es o representa ese "objeto"?
¿Por qué aparecen números consecutivos en él? ¿Son identificadores de otra cosa?

¿Puedes aclarar un poco el tema?
__________________
¿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 08/06/2010, 13:40
Avatar de berper  
Fecha de Ingreso: abril-2009
Ubicación: Mexico
Mensajes: 74
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: ¿TEXT o VARCHAR?

Sip, es otro identificador, el primero (id) es uno general. Y el campo contenido es lo que quiero obtener de resultado.

Código MySQL:
Ver original
  1. INT |    INT    |    VARCHAR   |                LONGTEXT
  2. ----------------------------------------------------------------------------
  3.  id  | categoria |    objeto    |                contenido
  4. ----------------------------------------------------------------------------
  5.   1  |     1     |    100       |  Contenido de categoria 1 y objeto 100
  6.   2  |     1     |    101-102   |  Contenido de categoria 1 y objeto 101-102
  7.   3  |     1     |    103       |  Contenido de categoria 1 y objeto 103
  8.   4  |     2     |    100       |  Contenido de categoria 2 y objeto 100
  9.   5  |     2     |    101-102   |  Contenido de categoria 2 y objeto 101-102
  10.   6  |     2     |    103       |  Contenido de categoria 2 y objeto 103
  11.   7  |     3     |    100       |  Contenido de categoria 3 y objeto 100
  12.   8  |     3     |    101-102   |  Contenido de categoria 3 y objeto 101-102
  13.   9  |     3     |    103       |  Contenido de categoria 3 y objeto 103

Otro ejemplo:

Código MySQL:
Ver original
  1. INT |    INT     |    VARCHAR   |                LONGTEXT
  2. ----------------------------------------------------------------------------
  3.  id  | categoria  |    objeto    |                contenido
  4. ----------------------------------------------------------------------------
  5.   1  |     46     |    90        |  Contenido de categoria 46 y objeto 90
  6.   2  |     46     |    9-10      |  Contenido de categoria 46 y objeto 9-10
  7.   3  |     32     |    103       |  Contenido de categoria 32 y objeto 103
  8.   4  |     57     |    109       |  Contenido de categoria 57 y objeto 109
  9.   5  |     12     |    120-121   |  Contenido de categoria 12 y objeto 120-121
  10.   6  |     5      |     3        |  Contenido de categoria 5 y objeto 3
  11.   7  |     11     |    160       |  Contenido de categoria 11 y objeto 160
  12.   8  |     25     |    88-89     |  Contenido de categoria 25 y objeto 88-89
  13.   9  |     76     |    103       |  Contenido de categoria 76 y objeto 103

Última edición por berper; 08/06/2010 a las 13:54

Etiquetas: varchar, txt
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 06:46.