¿Cómo tratar estos datos?

  • Autor Autor xcodex
  • Fecha de inicio Fecha de inicio
X

xcodex

Que tal gente!
Tengo un siti en el que se almacenan usuarios en una tabla y marcas de productos en otra.

En la tabla usuarios tengo las columnas: id, nombreusuario, marcasquelegustan
Tengo dudas acerca de como almacenar múltiples marcas que le gustan, por ejemplo, que un campo queden tres marcas, así evitar un registro por cada marca.

¿Qué me sugieren?
 
Yo pondría una relación N:M, es decir, una tabla "likes" entre "usuarios" y "marcas", con la clave primaria del usuario y la clave primaria de la marca
 
mmm con tres tablas
1- usuarios (idusr, usuario, etc)
2- marcas (idmarca, marca, etc)
3- relación de usuarios y marcas (idusuario, idmarca)

o solo 2 tablas
1- usuarios (idusr, usuario, etc)
2- marcas del usuario (idmarca, marca, idusr, etc)

la 1° opcion es para no tener muchas marcas repetidas de gusto en una misma tabla, solo se agregan todas las marcas con un id... la 2° es la opcion mas facil, pero tendras muchas marcas repetidas...
 
Yo pondría una relación N:M, es decir, una tabla "likes" entre "usuarios" y "marcas", con la clave primaria del usuario y la clave primaria de la marca

Si, pensé en hacer con claves foráneas por por algún motivo que desconozco, no puedo crearla en el phpmyadmin de banahost.. :-(


mmm con tres tablas
1- usuarios (idusr, usuario, etc)
2- marcas (idmarca, marca, etc)
3- relación de usuarios y marcas (idusuario, idmarca)

o solo 2 tablas
1- usuarios (idusr, usuario, etc)
2- marcas del usuario (idmarca, marca, idusr, etc)

la 1° opcion es para no tener muchas marcas repetidas de gusto en una misma tabla, solo se agregan todas las marcas con un id... la 2° es la opcion mas facil, pero tendras muchas marcas repetidas...

Estuve intentando con la primera opción y me funciona perfectamente en el sitio porque aún es pequeño, pero se que a futuro me dará problemas. :-(
 
Si, pensé en hacer con claves foráneas por por algún motivo que desconozco, no puedo crearla en el phpmyadmin de banahost.. :-(

¿Has probado a crearla con una PK, autogenerada por ejemplo, sin que las claves foráneas que no formen parte de la PK?

Cuéntanos qué error te da a ver si te podemos ayudar.
 
¿Has probado a crearla con una PK, autogenerada por ejemplo, sin que las claves foráneas que no formen parte de la PK?

Cuéntanos qué error te da a ver si te podemos ayudar.

El error es: "Las funciones relacionales estan desactivadas" :-(
No entiendo el motivo por el cual desactivan estas opciones.
 
El error es: "Las funciones relacionales estan desactivadas" :-(
No entiendo el motivo por el cual desactivan estas opciones.

y como hace wp?... serializando las marcas en la tabla del usuario?
 
El error es: "Las funciones relacionales estan desactivadas" :-(
No entiendo el motivo por el cual desactivan estas opciones.

Ni idea, de hecho no sabía que eso se podría desactivar, no tiene mucho sentido en una base de datos RELACIONAL...
 
digo que WP hace eso... serializa los datos...a eso me referia.

Ahhh, es que no uso Wordpress jajaja.
Y si tengo que listar las marcas que les gustan a los usuarios, ¿puedo hacerlo de manera fácil?. Así como listar followers en una red social, por ejemplo.
 
Ahhh, es que no uso Wordpress jajaja.
Y si tengo que listar las marcas que les gustan a los usuarios, ¿puedo hacerlo de manera fácil?. Así como listar followers en una red social, por ejemplo.

ejemplo:
PHP:
$A[] = "Hola";
$A[] = "como";
$A[] = "va";
echo serialize($A);
Queda:
PHP:
a:3:{i:0;s:4:"Hola";i:1;s:4:"como";i:2;s:2:"va";}
luego lo inverso seria:
PHP:
$B = 'a:3:{i:0;s:4:"Hola";i:1;s:4:"como";i:2;s:2:"va";}';
print_r(unserialize($B));
PHP:
Array ( [0] => Hola [1] => como [2] => va )

lo que haces es guardar el array directamente dentro de la base de datos... y manejas como un array normal ... (en la base de datos se guarda un string...asique tienes que serializar los datos antes de guardarlos)
 
ejemplo:
PHP:
$A[] = "Hola";
$A[] = "como";
$A[] = "va";
echo serialize($A);
Queda:
PHP:
a:3:{i:0;s:4:"Hola";i:1;s:4:"como";i:2;s:2:"va";}
luego lo inverso seria:
PHP:
$B = 'a:3:{i:0;s:4:"Hola";i:1;s:4:"como";i:2;s:2:"va";}';
print_r(unserialize($B));
PHP:
Array ( [0] => Hola [1] => como [2] => va )

lo que haces es guardar el array directamente dentro de la base de datos... y manejas como un array normal ... (en la base de datos se guarda un string...asique tienes que serializar los datos antes de guardarlos)

Muchas gracias :-D
Logré hacer las claves foráneas en phpmyadmin, de todas maneras tendré en cuenta ambos métodos.
 
Atrás
Arriba