03/06/2009, 10:05
|
| Moderador criollo | | Fecha de Ingreso: noviembre-2007 Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 1 mes 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) |