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

Array en MySQL

Estas en el tema de Array en MySQL en el foro de Mysql en Foros del Web. Que tipo de dato es el más apropiado para registros de tipo array? blob? varchar? binary? ¿Alguien puede arrojarme algo de luz sobre el trabajo ...
  #1 (permalink)  
Antiguo 26/04/2015, 13:14
Avatar de Suarsan  
Fecha de Ingreso: marzo-2015
Mensajes: 45
Antigüedad: 9 años, 8 meses
Puntos: 0
Array en MySQL

Que tipo de dato es el más apropiado para registros de tipo array? blob? varchar? binary? ¿Alguien puede arrojarme algo de luz sobre el trabajo con arrays en MySQL? Por si ayuda, pretendo usar json_encode para recibirlos. Saludos!
  #2 (permalink)  
Antiguo 26/04/2015, 13:36
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Array en MySQL

En principio, no existen los array en MySQL, por lo que no hay un tipo de dato útil realmente.
Por otro lado, un json es un dato desnormalizado, que usualmente contiene datos de diferentes dominios, e incluso multivaluados, lo que contradice los fundamentos de las bases de datos relacionales, y es inservible para las consultas. No puedes hacer consultas en SQL sobre datos contenidos en un json almacenado en un campo de una tabla.
¿Esto te queda claro?
Dicho esto, si quiere almacenar un json en un campo, te conviene usar VARCHAR, menos que la longitud del texto supere los 65.000 caracteres, donde deberás hacerlo en un TEXT.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 26/04/2015, 18:17
Avatar de Suarsan  
Fecha de Ingreso: marzo-2015
Mensajes: 45
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Array en MySQL

Cita:
Iniciado por gnzsoloyo Ver Mensaje
En principio, no existen los array en MySQL, por lo que no hay un tipo de dato útil realmente.
Por otro lado, un json es un dato desnormalizado, que usualmente contiene datos de diferentes dominios, e incluso multivaluados, lo que contradice los fundamentos de las bases de datos relacionales, y es inservible para las consultas. No puedes hacer consultas en SQL sobre datos contenidos en un json almacenado en un campo de una tabla.
¿Esto te queda claro?
Dicho esto, si quiere almacenar un json en un campo, te conviene usar VARCHAR, menos que la longitud del texto supere los 65.000 caracteres, donde deberás hacerlo en un TEXT.
Gracias! Explicación muy completa

Los datos que almaceno en los arrays digamos que son datos "secundarios" que me ayudan en la creacion de estructuras en la web. Me parecía una burrada crear una tabla insertando cada valor en un registro porque tendría que hacer constantemente muchas consultas repetitivas y pensaba que asi podría "reducir el trafico". ¿Sigue siendo una burrada lo que quiero hacer?

Por ejemplo, uso esos arrays para replicar una estructura de una pagina html y "crearla en otra pagina de manera idéntica", es decir guardo valores como el numero de divs, de inputs, de select, etc para poder crear una pagina igual a otra a través de la base de datos.

En cuanto a json, ¿crees que podria guardar el array desde php directamente en mysql? Habría alguna manera más correcta (dentro de lo que cabe) de hacerlo?

En cuanto a VARCHAR, ¿qué longitud debería indicar?

Saludos y gracias!!
  #4 (permalink)  
Antiguo 27/04/2015, 09:48
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Array en MySQL

Array en bases de datos?? A ver una pregunta, cual es la definicion de un Array? que no es un conjunto de datos ordenados o desordenados? y una tabla en una base de datos que es?? si te fijas bien las tablas son arrays, y eso de reducir el trafico de que tamaño seria tu array???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 27/04/2015, 09:58
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Array en MySQL

Para evitar confusiones, en BBDD se suele hablar de "array" en cuanto a tipos de dato de colecciones, entre los que puedes encontrar algunos como tipo TABLE, ROW, VARRAY, RECORD, etc., en diferentes DBMS.
Pero en MySQL no existen tales tipos de dato, y de alli que se diga que "no existen los array".

Cita:
En cuanto a VARCHAR, ¿qué longitud debería indicar?
Depnderá de cuán grande sea el tamaño máximo que tenga ese json que quieres guardar. Por eso te dije que el limite serían cerca de 65.000 caracteres. Si es mayor, deberás usar TEXT, o tipos superiores.
Yo no te puedo decir cuál es la longitud que te conviene, porque no conozco ni tu sistema, ni he visto jamás los json que genera, por lo que no puedo hacer una estimación.
Eso lo tendrás que evaluar TU.
Cita:
Los datos que almaceno en los arrays digamos que son datos "secundarios" que me ayudan en la creacion de estructuras en la web. Me parecía una burrada crear una tabla insertando cada valor en un registro porque tendría que hacer constantemente muchas consultas repetitivas y pensaba que asi podría "reducir el trafico". ¿Sigue siendo una burrada lo que quiero hacer?

Por ejemplo, uso esos arrays para replicar una estructura de una pagina html y "crearla en otra pagina de manera idéntica", es decir guardo valores como el numero de divs, de inputs, de select, etc para poder crear una pagina igual a otra a través de la base de datos.
Nada de lo que describes requiere exactamente "consultas repetitivas", ni necesariamente estructuras complejas de inserciones.
Tampoco entiendo por qué quieres almacenar las estructuras que componen una web en tablas de BBDD, pero eso es tu decisión. En todo caso habría que analizar cómo sería la base necesaria para administrar lo que dices, pero me suena a una base taxonómica. Algo emparentado con lo que hace Wordpress.
__________________
¿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; 27/04/2015 a las 10:06
  #6 (permalink)  
Antiguo 27/04/2015, 11:33
Avatar de Suarsan  
Fecha de Ingreso: marzo-2015
Mensajes: 45
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Array en MySQL

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Para evitar confusiones, en BBDD se suele hablar de "array" en cuanto a tipos de dato de colecciones, entre los que puedes encontrar algunos como tipo TABLE, ROW, VARRAY, RECORD, etc., en diferentes DBMS.
Pero en MySQL no existen tales tipos de dato, y de alli que se diga que "no existen los array".


Depnderá de cuán grande sea el tamaño máximo que tenga ese json que quieres guardar. Por eso te dije que el limite serían cerca de 65.000 caracteres. Si es mayor, deberás usar TEXT, o tipos superiores.
Yo no te puedo decir cuál es la longitud que te conviene, porque no conozco ni tu sistema, ni he visto jamás los json que genera, por lo que no puedo hacer una estimación.
Eso lo tendrás que evaluar TU.
Entendido, gracias!!

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Nada de lo que describes requiere exactamente "consultas repetitivas", ni necesariamente estructuras complejas de inserciones.
Tampoco enti
endo por qué quieres almacenar las estructuras que componen una web en tablas de BBDD, pero eso es tu decisión. En todo caso habría que analizar cómo sería la base necesaria para administrar lo que dices, pero me suena a una base taxonómica. Algo emparentado con lo que hace Wordpress.
Ya lo tengo todo funcionando!!
De todas formas sigo vuestro consejo, estoy replanteando la bbdd para introducir los datos por separado y no en conjunto dentro de arrays.

Etiquetas: bases-de-datos-general, registros
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 22:10.