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

Tabla con un numero de campos variable??

Estas en el tema de Tabla con un numero de campos variable?? en el foro de Mysql en Foros del Web. Buenas, estoy haciendo una base de datos con MySQL, el problema es que no sé hacer lo siguiente: Tengo una tabla con un campo ID ...
  #1 (permalink)  
Antiguo 10/07/2010, 14:00
 
Fecha de Ingreso: agosto-2007
Mensajes: 106
Antigüedad: 16 años, 7 meses
Puntos: 0
Busqueda Tabla con un numero de campos variable??

Buenas, estoy haciendo una base de datos con MySQL, el problema es que no sé hacer lo siguiente:

Tengo una tabla con un campo ID y otros que guardaran un numero indeterminado de palabras, es decir, el usuario elijirá un numero determinado de imagenes, y el id de cada imagen se guardara en esa tabla, por ejemplo, supongamos que el usuario elige las palabras perro(3), gato(7), elefante(20), vaca(11),ok?

pues en la tabla se guardarán el id correspondiente a esa consulta y en este caso los 4 id´s de las imagenes q ha elegido, quedaria asi:

tabla:
id imagen1 imagen2 imagen3 imagen4
4----3------ 7----- 20-----11

vale, entonces tendria una tabla con 5 campos, pero el problema viene cuando el usuario a la siguiente vez elige en vez de 4 imagenes, por ejemplo elige 15 imagenes.

No se como reflejar esto en la base de datos, es decir, q dicha tabla tenga campos variables.

Hay quien dice q le ponga de longitud 1000, ok, pero.....y si el usuario elige 1001 imagen????, vale, pues pongo 1.000.000, tal vez el usuario no llegue a elegir 1.000.000 de imagenes, pero me parece muy poco optimo.

¿hay alguna manera de hacer lo que quiero?que cada registro de una tabla tenga un numero variable de campos segun lo que elija el usuario???

muchas gracias de antemano.
  #2 (permalink)  
Antiguo 10/07/2010, 17:41
 
Fecha de Ingreso: mayo-2005
Mensajes: 284
Antigüedad: 18 años, 10 meses
Puntos: 11
Respuesta: Tabla con un numero de campos variable??

Hola jmagago84!
Eso que quieres hacer es un problema clasico que se resuelve con un Modelo Relacional. Te recomiendo que leas sobre Diseño de Base de Datos y Modelos Relacionales, te va a ser MUY util (y cuando aprendas a manejarlos puedes esar el MySQL Workbench para diseñar que te facilitará muchas cosas).

La solución a tu problema es esta:
Tienes que crear OTRA tabla, y relacionarla.
No se entiende bien que es lo que intentas almacenar, pero suponiendo que quieres almacenar las imagenes que selecciono un usuario, entonces tendrias una tabla USUARIOS, y otra tabla IMAGENES_SELECCIONADAS
dentro de Usuarios tienes un ID_USUARIO
dentro de Imagenes_Seleccionadas tienes:
ID
ID_Usuario
ID_Imagen

Asi, si un usuario (supongamos el usuario 7) elije las imagenes 11,23 y 89, tendrias que crear 3 FILAS en la tabla Imagenes_Seleccionadas, que te quedaria asi:

(ID, ID_Usuario, ID_Imagen)
(1, 7, 11)
(2, 7, 23)
(3, 7, 89)

O sea por cada imagen seleccionada se agrega una fila, y en esa fila se pone el usuario que la selecciono y la imagen que selecciono.

Espero te sea de utilidad.
Saludos!
  #3 (permalink)  
Antiguo 10/07/2010, 20:38
 
Fecha de Ingreso: agosto-2007
Mensajes: 106
Antigüedad: 16 años, 7 meses
Puntos: 0
Busqueda Respuesta: Tabla con un numero de campos variable??

Muchas gracias por tu respuesta enridp, lo que pasa que no guardo el usuarioID, pues la base de datos es para una aplicación windows y por lo tanto solo tendrá un usuario, al ser el mismo usuario, no necesito guardar la información del id del usuario, por eso tengo ese problema, tan solo necesito guardar digamos , lo que hace el propio usuario.

¿Alguna idea?

gracias de antemano!
  #4 (permalink)  
Antiguo 10/07/2010, 20:49
 
Fecha de Ingreso: mayo-2005
Mensajes: 284
Antigüedad: 18 años, 10 meses
Puntos: 11
Respuesta: Tabla con un numero de campos variable??

va a estar complicado asi, trata de explicarnos mejor que es lo que necesitas guardar.
El usuario selecciona muchas imagenes y por que necesitas guardar esa informacion? para que vas a usarla?
  #5 (permalink)  
Antiguo 11/07/2010, 04:19
 
Fecha de Ingreso: agosto-2007
Mensajes: 106
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Tabla con un numero de campos variable??

ok, pues el proyecto se basa en un sistema pictografico de comunicacion no vocal, entre sus funcionalidades está la creación de tableros de comunicación, el usuario elige pictogramas (imagenes) y crea tableros para poder comunicarse con personas que tienen algun tipo de problema en la comunicación y lo hace a través de los pictogramas.

Los pictogramas no son mas q imagenes q denotan una acción, cosa, lugar, persona, etc, ...

Además la aplicación tendrá la funcionalidad de poder traducir una frase introducida por el usuario a pictogramas.

Bueno, a partir de esta mini-explicación de lo q hace la aplicación windows (entre otras cosas), me gustaria saber como puedo plantear esa tabla que contaba al principio del hilo.

¿Como puedo guardar esos pictogramas q el usuario elige? o....¿como puedo guardar en la tabla las frases q traduzca el usuario a pictogramas?

de momento estas son las tablas q tengo:

Categorias(categoriaID, categoria, color)
pictogramas(pictogramaID, pictograma, categoriaID)
tableroDeComunicacion(tableroID, nombreTablero, pictogramaID)
traduccion(traduccionID, traduccion, pictogramaID)

las 2 primeras tablas son fijas, y las otras no se muy bien como plantearlas, y pueden cambiar.

Bueno, espero q se entienda.

Gracias!
  #6 (permalink)  
Antiguo 11/07/2010, 09:47
 
Fecha de Ingreso: mayo-2005
Mensajes: 284
Antigüedad: 18 años, 10 meses
Puntos: 11
Respuesta: Tabla con un numero de campos variable??

Bueno pero por qué necesitas guardar esos datos? vas a reutilizarlos? a simple vista me da la sensación que es un programa para "conversar", y que no necesitarian ser guardados, es decir, elegis los pictogramas, los mostras y listo, en la proxima "conversación" borras los pictogramas elegidos antes, elegis nuevos y mostras los nuevos.
Si necesitas guardarlos por algun motivo, es justamente ESA la clave para decidir como armar la base de datos.
La tabla que te mostraba al principio, con el UsuarioID te sirve perfectamente, lo unico que necesitas es reemplazar UsuarioID por algo que identifique la acción de elegir esos pictogramas (de nuevo asi sin saber que es lo que necesitas no puedo decirte que).
Por ej. en vez de usuarioID podria ser un Numero cualquiera, o una fecha, o el ID de la frase relacionada (en el caso de que se trate de pictogramas creados a partir de traducir una frase), etc.
  #7 (permalink)  
Antiguo 11/07/2010, 17:35
 
Fecha de Ingreso: agosto-2007
Mensajes: 106
Antigüedad: 16 años, 7 meses
Puntos: 0
Busqueda Respuesta: Tabla con un numero de campos variable??

Antes q nada agradecerte q me respondas y el tiempo dedicado.

Pues si, podría ser tal y como dices, no lo veo mal, hacer la conversión y fuera, borrar los datos y asi. Pero no sé...habia pensao poder guardar los que el usuario va haciendo para tenerlos a manos en otra ocasión. Esa es la idea.

La aplicación trata de la comunicación a través de pictogramas para gente con dificultad en el habla, niños autistas,... es una forma de comunicación.

Entonces trataria de poder crear tableros de comunicación, traducir frases o palabras.

Digamos q esa es la historia.

Las tablas fijas son las q comenté antes: pictogramas y categorias.

Después supongo q por la estructura podria haber otra tabla q sea frases q se hayan traducido y que el usuario quiera guardarlas, "frases".
Otra podría ser donde se almacenen los tableros de comunicación que el usuario vaya creando y los quiera guardar, "tablerosDeComunicacion".
Entre otras tablas.

Bueno esto es más o menos lo que quiero hacer.

Muchas gracias de antemano denuevo.
  #8 (permalink)  
Antiguo 11/07/2010, 19:52
 
Fecha de Ingreso: mayo-2005
Mensajes: 284
Antigüedad: 18 años, 10 meses
Puntos: 11
Respuesta: Tabla con un numero de campos variable??

Si quieres guardar los pictogramas elegidos (nunca esta de mas y es cierto te podria servir), haz lo que te comento mas arriba, crea una tabla donde almacenes SOLO UN pictograma (pictogramaID) y tienes que asociarle una variable para poder "agrupar" los pictogramas que pertenezcan a una misma frase.
Por ejemplo podrias tener esto:

tabla_frases
-------------------
ID (INT)
frase (VARCHAR)

tabla_frasesConPictogramas
-------------------
ID (INT)
fraseID (INT) //aca guardas el ID de la frase de la tabla de arriba
pictogramaID (INT)


Asi, si tienes una frase "Papa enciende la vela de la torta" como esta
http://2.bp.blogspot.com/_OFnUKI681p...S+N%C2%BA1.jpg

Las tablas te quedarian:

tabla_frases
1 | "Papá enciende la vela de la torta"

tabla_frasesConPictogramas
1 | 1 | 7 (pictograma de papá)
2 | 1 | 15 (pictograma de vela enciendiendose)
3 | 1 | 4 (pictograma de vela)
4 | 1 | 15 (pictograma de torta)

Fijate que SIEMPRE ponemos "1" en fraseID porque ese es el ID de la frase "papá enciende la vela de la torta".

Saludos!
  #9 (permalink)  
Antiguo 12/07/2010, 18:03
 
Fecha de Ingreso: agosto-2007
Mensajes: 106
Antigüedad: 16 años, 7 meses
Puntos: 0
De acuerdo Respuesta: Tabla con un numero de campos variable??

Muchísimas gracias enridp!!!

voy a empezar a diseñar la base de datos con mysql y después usaré el framework de microsoft, entity framework las tablas a objetos.

Si tengo algún problema o duda te escribiré.

Saludos!!!!!

Etiquetas: campos, numero, tablas, variables
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 05:16.