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

Decidir entre un tipo Caracter o Entero para un Campo de Índice

Estas en el tema de Decidir entre un tipo Caracter o Entero para un Campo de Índice en el foro de Bases de Datos General en Foros del Web. Hola saludo a todos, Mi inquietud es la siguiente, en mi pequeña fundamentación en Base de datos entiendo que solo se utiliza Tipos Enteros (o ...
  #1 (permalink)  
Antiguo 03/06/2009, 08:28
 
Fecha de Ingreso: agosto-2003
Ubicación: Medellín
Mensajes: 20
Antigüedad: 20 años, 9 meses
Puntos: 0
Decidir entre un tipo Caracter o Entero para un Campo de Índice

Hola saludo a todos,

Mi inquietud es la siguiente, en mi pequeña fundamentación en Base de datos entiendo que solo se utiliza Tipos Enteros (o numérico) cuando se va a hacer operaciones matematicas con dicho valor. Pero suele suceder que los campos consecutivos o id de tablas padres (tipo id, tipo escolaridad etc) se le pone campo númerico para que sea mas fácil lo del consecutivo.

¿Que es mas óptimo que sea caracter o numérico? , asi sea mas grandecita la función del consecutivo.

Gracias.
  #2 (permalink)  
Antiguo 03/06/2009, 09:18
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 2 meses
Puntos: 300
Respuesta: Decidir entre un tipo Caracter o Entero para un Campo de Índice

Debería ser igual, pero no lo es. El número permite hacer el auto_increment mejor, y dado que el binario que lo representa es más pequeño que el del carácter, las comparaciones serán algo más rápidas.
mira este post de seyko.
http://www.forosdelweb.com/f21/encue...umeros-593951/

Son las razones que se me ocurren
  #3 (permalink)  
Antiguo 03/06/2009, 10:05
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, 6 meses
Puntos: 2658
Respuesta: Decidir entre un tipo Caracter o Entero para un Campo de Índice

Hay varias razones para preferir los ID numéricos, pese a que el modelo relacional normalizado indica que sólo se los debe usar cuando no existen claves candidatas o determinantes de una relación:

- Por un lado es tradicional el uso de numeración para identificar registros, resabio de los archivos en papel.
- Por otro lado, a nivel de almacenamiento, es mucho menor el espacio usado por un valor numérico que por un conjunto de caracteres. Piensa que con 4 bytes (2^64-1 bits) se pueden almacenar 18.446.744.073.709.551.615 valores distintos, mientras que para hacer eso con los caracteres, necesitarías la capacidad de un campo BLOB o un campo TEXT.
- Esto permite construir tablas relacionales de menor tamaño, en especial en aquellos casos en que son las que controlan las relaciones N:N entre múltiples tablas (una tabla que agrupe 20 claves diferentes solamente tiene 80 bytes por registro como mucho).
- Además, los índices basados en valores numéricos son más eficientes y rápidos que los basados en caracteres.
- Los valores numéricos usados como auto_increment son más sencillos de programar y no requieren validación desde las aplicaciones, ya que se implementan a nivel de DDL.

Obviamente esto trae aparejado cierto tipo de problemas de orden teórico, entre los que se cuenta que las claves generadas así no resultan representativas de las relaciones que vinculan o de los registros que identifican, y no sirven para crear consultas fáciles de comprender (mnemotécnica) sin saber a qué tablas referencia, pero eso es otro asunto.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 26/06/2009, 10:02
 
Fecha de Ingreso: agosto-2003
Ubicación: Medellín
Mensajes: 20
Antigüedad: 20 años, 9 meses
Puntos: 0
Respuesta: Decidir entre un tipo Caracter o Entero para un Campo de Índice

Hombre muchas gracias .. creo que queda claro el tema...
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 12:14.