Si mis datos consisten en Hosts e Invitados, ¿cómo estructuraría la base de datos para que no termine con una gran cantidad de datos duplicados?

Una propiedad de ser un host o un invitado no es intrínseca a una persona, por lo tanto, no debe modelarse como una entidad separada (tabla de host, tabla de invitados), o incluso como un atributo de una entidad “persona” más genérica. Más bien debería estar asociado con la tabla de “eventos”.

Estructura de muestra de una tabla de eventos con posibles valores:

Nombre: Bola Anual

Lugar: Gran Palacio

Participante: conde Drácula

ParticipantRole: host

Si insiste absolutamente en no cambiar la tabla de eventos (tal vez no lo esté, solo digo) tiene dos opciones:

1. Puede decir que una persona puede tener 1-2 entradas en nuestra tabla de personas con una columna “rol” que indica si estaba actuando como anfitrión o invitado.

2. Cree dos tablas adicionales: “rol” y “personrole”. El rol solo tendría dos entradas, invitado y anfitrión. personrole conectaría persona y rol.

La segunda opción le permite reducir la duplicación de datos a un mínimo absoluto. Por otro lado, su código se vuelve más concurrido. La primera opción lo convierte en un código más bonito pero para datos más duplicados, aunque todavía en un nivel tolerable.

Crear 2 tablas:

tabla 1

Crear tabla [Personas] con 2 columnas: PersonID , PersonName

Tabla 2

Cree una tabla [GuestHost] con 2 columnas: GuestID , HostID (Ambas columnas tendrán el PersonID)