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

Meter mucha informacion en un campo

Estas en el tema de Meter mucha informacion en un campo en el foro de Mysql en Foros del Web. Hola foreros!, Llevo un tiempo pensando en como hacerlo pero no se me ocurre. Mirar yo tengo un sistema de php con muchos campos, a ...
  #1 (permalink)  
Antiguo 08/12/2009, 00:44
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años
Puntos: 19
Meter mucha informacion en un campo

Hola foreros!,

Llevo un tiempo pensando en como hacerlo pero no se me ocurre. Mirar yo tengo un sistema de php con muchos campos, a modo de excel. Es decir, un formulario visualizado a modo de tabla con decenas de campos. Una vez pulso enviar esta info se introduce en mi base de datos, pero desconozco como archivar los registros. ¿Un registro por cada campo? por cada columna?... no tengo ni idea, jeje.

El problema es que no se me ocurre ningun modo correcto para meter la info.

Se me habia ocurrido en meterlo cada valor en un registro en mi base de datos, pero se me iban a crear miles de registros con poco informacion. Luego se me ha ocurrido en meter un registro con los valores divididos por puntos y comas: manzana;pera; . Pero en ese caso los usuarios no podrian meter ";".

¿Como demonios se hace?
  #2 (permalink)  
Antiguo 08/12/2009, 04:05
serser
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Meter mucha informacion en un campo

Si lo que estás trantando es una tabla, simplemente implentala como tal. Por ejemplo, si la estructura de esa tabla tiene 100 columnas x 500 filas, crea una tabla con 100 campos y 500 registros. Yo creo que así es la mejor manera de implementarla sin perder la integridad.
Respecto a lo que dices de "crear miles de registros con poca informacion" no tiene ningún inconveniente, ya que "poco" o "nada" también es información, es decir, que si un campo no contiene datos, su información es ésa: "el campo x no contiene información", lo que es esencial para mantener la integridad.
Y no debes preocuparte por el tamaño de la BD. Cito textualmente el manual de referencia de MySQL:
Cita:
Soporte a grandes bases de datos. Usamos MySQL Server con bases de datos que contienen 50 millones de registros. También conocemos a usuarios que usan MySQL Server con 60.000 tablas y cerca de 5.000.000.000.000 de registros.
  #3 (permalink)  
Antiguo 08/12/2009, 06:00
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, 4 meses
Puntos: 2658
Respuesta: Meter mucha informacion en un campo

Cita:
Llevo un tiempo pensando en como hacerlo pero no se me ocurre. Mirar yo tengo un sistema de php con muchos campos, a modo de excel. Es decir, un formulario visualizado a modo de tabla con decenas de campos. Una vez pulso enviar esta info se introduce en mi base de datos, pero desconozco como archivar los registros. ¿Un registro por cada campo? por cada columna?... no tengo ni idea, jeje.
Es un problema de nivel de normalización de la información.
Muchas veces lo que no se percibe cuando no miras con la lógica de un DBA, es que cuando miras una enorme tabla de Excel, con toda la información integrada en la tabla, no sabes que en realidad puedes estar viendo un reporte creado sobre la base de, digamos, 50 tablas diferentes.
Para poder darte un consejo, deberíamos saber cómo es la estructura de datos de la tabla.
Si lo que quieres es almacenarla sin más, y la información tal y como la muestras en un momento dado no sufrirá cambios en el futuro, simplemente la guardas como un archivo binario (campos BLOB), donde queda congelada como está.
Ahora bien, si lo que quieres es guardar algo que luego se debe consultar parcialmente, o modificar en determinados ítems, es mejor analizar la tabla para ver si posee estructuraciones que permitan realizar una normalización que sea funcional.
Poner simplemente la tabla como está, es un desperdicio de performance a futuro, porque es posible que esté ocupando mucho espacio de disco más de lo que realmente necesita (y por mucho puedo estar diciendo 10 a 1, o 1000 a 1).

Yo comenzaría desde el principio, para ver cómo desplegar la estructura en un conjunto de tablas, de modo que ese reporte se pueda recrear por medio de una consulta.

Así, al menos, es como suelen funcionar esas cosas.

Cita:
Se me habia ocurrido en meterlo cada valor en un registro en mi base de datos, pero se me iban a crear miles de registros con poco informacion. Luego se me ha ocurrido en meter un registro con los valores divididos por puntos y comas: manzana;pera; . Pero en ese caso los usuarios no podrian meter ";".
Esto me da la pauta de que la información de esa tabla es normalizable.
En las bases de datos, un campo que pueda contener uno de varios valores se maneja normalmente como dos tablas diferentes, una de las cuales sólo contiene la FK apuntando a la otra (una de Fruta, por ejemplo). De ese modo los usuarios ven en el reporte la información textual, pero el dato se guarda como números (la clave).
Tambien puede pasar que en ese campo deba aparecer una lista de cosas (las frutas separadas por comas). En ese caso son tres tablas: La tabla base, la tabla de items de ese campo, y la tabla de frutas. El listado de valores separados por comas para esa celda de la tabla se obtiene del uso de una función (GROUP_CONCAT()), específicamente usada para eso, sobre la tabla de Fruta.
¿Por qué así y no las palabras? Porque el día de mañana, querrás buscar "peras", y algún bobo puso "pras", o "preas" por teclear mal, y jamás las encontrarás...
Esa es una de las razones por las que en las bases de datos se usan tablas para contener valores que nunca cambian.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 08/12/2009 a las 06:09
  #4 (permalink)  
Antiguo 09/12/2009, 18:19
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años
Puntos: 19
Respuesta: Meter mucha informacion en un campo

Hola a los dos!

Me ha quedado un poco mas claro todo, jeje... la verdad es que empezaba a tener miedo, jeje... del volumen al que se estaba acercando la bd, jeje. Parece una explosion nuclear de datos, jeje.

Hasta pronto!...

Cuando termine la web os la presento, aunque la verdad, deberia presentarla en cada foro de cada tematica de foros del web, jeje... me ayudais tantisimo!... jeje

Hasta pronto! gracias!.
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 15:39.