Ver Mensaje Individual
  #5 (permalink)  
Antiguo 14/11/2011, 16:42
Avatar de gnzsoloyo
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: ¿Qué es más óptimo, muchos campos o campos más grandes?

Bueno, Leo se me ha adelantado con una buena explicación. Yo no te respondí antes porque era mi horario de trabajo, y la empresa no se pone muy contenta cuando uno usa la red para cosas personales.

A las cosas que te plantea Leonardo le agregaría algun detalle, por ejemplo, cuando creas un objeto que conceptualmente llamamos Entidad, es decir un una relación de dominios definida bajo un nombre, como Cliente, Usuario, Jugador, Vehiculo, etc., además de estar analizando en detalle los objetos y sus relaciones, estás definiendo los datos que le son propios (los atributos, todos los cuales tienen un dominio o campo de existencia, donde los valores no son arbitrarios. Así, por ejemplo, el número que corresponde a una casa en una calle siempre será positivo, y jamás tendrá más de cinco cifras (o al menos no conozco ciudad donde pueda darse).
Esto es importante para definir el tipo de columna que usarás para almacenar tal información.

La importancia de elegir el tipo correcto es, entre otras cosas, para no desperdiciar espacio en disco, memoria en una consulta, o capacidad en una red, ya que usar datos de mayor capacidad de la necesaria resulta en bytes "basura".

¿De qué sirve usar un INT para una dirección, si con un SMALLINT tengo el rango que necesito? ¿Para qué usar un valor con signo, si sé que jamás tendré números negativos? ¿Para qué definir un TEXT, cuando la suma de bytes usando diversso tipos de columna, tal vez no llegue a los 200 Bytes?

La elección de las columnas es una parte importante del proceso de definición de las tablas, y surge de un buen análisis de cada entidad que interviene en el sistema. Reglas como la de no usar campos multivaluados, que Leonardo te mencionó, son parte de los fundamentos de las Bases de Datos.

Como sea, la correcta elección de los campos también impacta en las consultas, en la optimización de los índices, de las búsquedas.

Otra cosa que te aconsejo es que no confundas representación de un dato con el almacenamiento del dato. Esto es especialmente importante cuando trabajas con fechas o números. Las fechas no se almacenan como en castellano. Ni tan siquiera se almacenan como se escriben en inglés, sino en el formato que Leonardo te mostró. Pero eso no quiere decir que luego no puedas obtenerla en esa forma. Eso se hace con funciones propias de MySQL en las consultas.
No trates de inventar la rueda: Ya estáinventada, solo tienes que saber cuál es la rueda correcta.

Para que puedas ver los formatos de las columnas y sus rangos: MySQL:: 11. Tipos de columna
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)