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

[SOLUCIONADO] MySQL tipo de campo

Estas en el tema de MySQL tipo de campo en el foro de Mysql en Foros del Web. Hola si una tabla de código postal (por ejemplo) algo así: codigo -detalle 01 ---- Sitio1 11 ---- sitio2 15 ---- sitio3 29 ---- sitio4 ...
  #1 (permalink)  
Antiguo 16/04/2013, 10:49
Avatar de bandolera  
Fecha de Ingreso: abril-2009
Mensajes: 613
Antigüedad: 15 años
Puntos: 7
Pregunta MySQL tipo de campo

Hola si una tabla de código postal (por ejemplo) algo así:
codigo -detalle
01 ---- Sitio1
11 ---- sitio2
15 ---- sitio3
29 ---- sitio4

Cuál sería la mejor manera de configurar sus atributos? sobre todo del campo codigo que sería la llave primaria y con valores numéricos....??
Integer, numeric?? con longitud??
__________________
Todos somos iguales. NO! a la violencia de género.
  #2 (permalink)  
Antiguo 16/04/2013, 11:58
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: MySQL tipo de campo

Hola bandolera:

En primer lugar dale un vistazo a la documentación oficial:

http://dev.mysql.com/doc/refman/5.0/...ric-types.html

Ahora si, entrando en materia, para decidir qué tipo de datos debe tener tu columna debes responder las siguientes preguntas:

1. ¿Un código postal puede ser negativo? No... por lo tanto debes poner el atributo UNSIGNED al tipo de dato.

2. ¿Cuál es el valor máximo que puede tener un código postal? a partir de este dato debes elegir un tipo de datos que soporte este rango:

Código:
Tipo		Bytes	Valor Mínimo	Valor Máximo 	 	
TINYINT		1 	0		255
SMALLINT	1	0		65535
MEDIUMINT	3	0		16777215
INT		4	0		4294967295
BIGINT		8	0		18446744073709551615
3. ¿Pueden existir Códigos iguales para detalles distintos? Si la respuesta es no, entonces si, el campo Código es candidato para ser campo llave primaria, si la respuesta es no, deberás hacer uso de llaves compuestas.

4. ¿Qué longitud debe tener el campo? en los campos numéricos la longitud NO HACE REFERENCIA A LOS VALORES QUE PUEDE ALMACENAR.

Del manual de referencia:

Cita:
El ancho de muestra no restringe el rango de valores que pueden almacenarse en la columna, no el número de dígitos que se muestran para valores con ancho que exceda el especificado para la columna.

Cuando se usa en conjunción con el atributo de extensión opcional ZEROFILL, el relleno por defecto de espacios se replaza por ceros. Por ejmplo, para una columna declarada como INT(5) ZEROFILL, un valor de 4 se muestra como 00004. Tenga en cuenta que si almacena valores mayores que el ancho de muestra en una columna entera, puede tener problemas cuando MySQL genera tablas temporales para algunos joins complicados, ya que en estos casos MySQL cree que los datos encajan en el ancho original de la columna.
Saludos
Leo.
  #3 (permalink)  
Antiguo 16/04/2013, 15:36
Avatar de bandolera  
Fecha de Ingreso: abril-2009
Mensajes: 613
Antigüedad: 15 años
Puntos: 7
Pregunta Respuesta: MySQL tipo de campo

Cita:
Iniciado por leonardo_josue Ver Mensaje
Hola bandolera:

En primer lugar dale un vistazo a la documentación oficial:

http://dev.mysql.com/doc/refman/5.0/...ric-types.html

Ahora si, entrando en materia, para decidir qué tipo de datos debe tener tu columna debes responder las siguientes preguntas:

1. ¿Un código postal puede ser negativo? No... por lo tanto debes poner el atributo UNSIGNED al tipo de dato.

2. ¿Cuál es el valor máximo que puede tener un código postal? a partir de este dato debes elegir un tipo de datos que soporte este rango:

Código:
Tipo		Bytes	Valor Mínimo	Valor Máximo 	 	
TINYINT		1 	0		255
SMALLINT	1	0		65535
MEDIUMINT	3	0		16777215
INT		4	0		4294967295
BIGINT		8	0		18446744073709551615
3. ¿Pueden existir Códigos iguales para detalles distintos? Si la respuesta es no, entonces si, el campo Código es candidato para ser campo llave primaria, si la respuesta es no, deberás hacer uso de llaves compuestas.

4. ¿Qué longitud debe tener el campo? en los campos numéricos la longitud NO HACE REFERENCIA A LOS VALORES QUE PUEDE ALMACENAR.

Del manual de referencia:



Saludos
Leo.
Según lo que estaba leyendo si yo quiero un campo que contenga números y que sea mi llave primaria y que estén desde el 1 al 9999 puedo utilizar numeric(4) o integer ??? Aunque dice que no es necesario delimitar el ancho con el int.. Un poco complicado no?
__________________
Todos somos iguales. NO! a la violencia de género.
  #4 (permalink)  
Antiguo 16/04/2013, 16:10
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: MySQL tipo de campo

Como ya te explicó Leo, no puedes limitar la cantidad dd dígitos de la cifra con ese valor entre paréntesis, porque no sirven para eso.
En MySQL no hay modo de restringir un dato numérico a un rango, porque no eexisten restricciones CHECK. Sólo lo puedes administrar por stored procedure o por programación.
En este DBMS, los datos numéricos tienen los rangos que el te indicó, y no se pueden modificar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: campo, tabla, tipo
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 14:48.