Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: Aikanáro Anário en 28 Noviembre 2011, 21:25 pm



Título: Como asociar un invitado que asiste a un evento en una base datos?
Publicado por: Aikanáro Anário en 28 Noviembre 2011, 21:25 pm
Tengo que hacer un programa que maneja eventos. Ya la parte gráfica está hecha y solo me falta trabajar la lógica para la base de datos.

Hay dos modos de poner un invitado en un evento. Una es elegir el evento y seleccionar los invitados (desde una lista) que asisten al evento, la otra al revés: elegir el invitado y seleleccionar el evento al que asistirá.

En la base de datos se que tiene que ir una tabla Eventos y una Invitados, pero cómo relacionar los invitados que van a un evento específico? ¿debería crear una tabla invitaciones para eso?  y después cómo le digo que tal invitado es de tal evento.  :huh:


Título: Re: Como asociar un invitado que asiste a un evento en una base datos?
Publicado por: Littlehorse en 28 Noviembre 2011, 23:39 pm
Bueno, casi que te respondiste vos mismo. Teniendo una tabla de relaciones podes saber que invitados tiene determinado evento y a que eventos esta invitado el usuario. Teniendo en esa misma tabla que denominaste "invitaciones" el ID del invitado y el ID del evento.

Cardinality (data modeling) (http://en.wikipedia.org/wiki/Cardinality_%28data_modeling%29)

Saludos!




Título: Re: Como asociar un invitado que asiste a un evento en una base datos?
Publicado por: Aikanáro Anário en 29 Noviembre 2011, 00:04 am
Gracias por tu respuesta :)

Es que tengo la idea, pero no sé cómo hago para que me queden relacionados, o sea qué tendría que hacer el programa para que queden relacionadas...

Debería crear un fila por cada persona invitado a un evento? y guardarla en la tabla invitaciones?


Título: Re: Como asociar un invitado que asiste a un evento en una base datos?
Publicado por: Littlehorse en 29 Noviembre 2011, 00:37 am
Claro! lo tendrías fácil al insertar un nuevo registro en la tabla invitaciones, o podríamos llamarla invitados_eventos. La tabla invitados_eventos tendría dos campos, el ID del invitado y el ID del evento como foreign keys.

Como hacerlo técnicamente, bueno depende de con que estas trabajando. No se que estas usando.

Saludos!


Título: Re: Como asociar un invitado que asiste a un evento en una base datos?
Publicado por: Aikanáro Anário en 29 Noviembre 2011, 00:42 am
Estoy trabajando con java en programación y con MySQL en base de datos. Conozco las sentencias INSERT y DELETE, pero a lo que me refieron es la lógica...

Mira aquí está mi diseño de la base de datos:

Creo que la relación de invitados a evento, está de más...

(http://i333.photobucket.com/albums/m399/Link02/bd.png)

Como ya dije, la interfaz gráfica permite dos formas de "dar" invitaciones. Una es elegir el evento y seleccionar los invitados (desde una lista) que asisten al evento, la otra al revés: elegir el invitado y seleleccionar el evento al que asistirá.


Título: Re: Como asociar un invitado que asiste a un evento en una base datos?
Publicado por: Littlehorse en 29 Noviembre 2011, 01:03 am
En cualquiera de las dos formas el proceso es el mismo, lo único que cambia son los datos que manejas. Seleccionas el o los eventos (tienes su ID) y luego seleccionas los invitados (que los traes de la DB) entonces haces los inserts correspondientes dependiendo de cuantos invitados sean. Por ejemplo si son 8 invitados a un mismo evento, son 8 registros, si son los 8 mismos pero a 2 eventos, son 16 registros.

invitados_eventos
idinvitado : idevento
 4                   2
 5                   2
 4                   3
 5                   3

Seleccionas el invitado (tienes su ID) y luego seleccionas el o los eventos (que los traes de la DB). Si un invitado puede asistir a múltiples eventos entonces tienes tantos registros como eventos seleccionados.

invitados_eventos
idinvitado : idevento
 4                   2
 4                   3
 4                   4
 4                   5

Para obtener la información luego basta con jugar con un poco de selects y joins y poco mas. Estas usando Hibernate?

Saludos!


Título: Re: Como asociar un invitado que asiste a un evento en una base datos?
Publicado por: Aikanáro Anário en 29 Noviembre 2011, 01:24 am
Muchas gracias por la explicación. Vamos a ver si ahora me sale.

Primera vez que escucho de Hibernate.



Tengo que saber cuando un invitado asiste o no a un evento y presentarlo en la aplicación. Basado en el diagrama actual que tengo, lo que se me ocurre es que si no hay una tupla que relacione al invitado X con el evento Z, pues no asistió, pero SQL me permite hacer eso? como?