Como asociar un invitado que asiste a un evento en una base datos?

Iniciado por Aikanáro Anário, 28 Noviembre 2011, 21:25 PM

0 Miembros y 1 Visitante están viendo este tema.

Aikanáro Anário

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:
Lo que faltaba en internet: http://binar10s.blogspot.com/

Littlehorse

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)

Saludos!


An expert is a man who has made all the mistakes which can be made, in a very narrow field.

Aikanáro Anário

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?
Lo que faltaba en internet: http://binar10s.blogspot.com/

Littlehorse

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!
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

Aikanáro Anário

#4
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...



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á.
Lo que faltaba en internet: http://binar10s.blogspot.com/

Littlehorse

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!
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

Aikanáro Anário

#6
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?
Lo que faltaba en internet: http://binar10s.blogspot.com/