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:
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!
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?
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!
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á.
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!
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?