Duda con los atributos en una tabla de asociación
Bueno, esto va a ser un poco complicado...
Por empezar: Cuando miras la BBDD no estás mirando el modelo de clases, estas viendo el modelo físico, y el modelo físico d e datos NO ES un reflejo idéntico del de clases. Eso es lo primero que debes comprender.
El modelo de clases acepta asociaciones y agregaciones. Pero el modelo físico de una BBDD no tiene agregaciones, Sólo posee relaciones, y estas relaciones deben cumplir con restricciones del modelo relacional, tales como la no replicación de datos, la unicidad de registros y la normalización de las tablas.
En un esquema como el que tienes en esas tres clases, y de acuerdo a lo que describes, debemos entender que:
1) Existen usuarios, los cuales pueden estar en más de una categoría.
2) Hay al menos dos categorías diferentes, pero sus atributos son iguales.
3) Existen Eventos, los cuales deben ser creados por algún usuario.
4) Cada evento debe tener una fecha de creación, inicio y finalizacion, también debe tener nombre, descripción y precio.
5) Un mismo evento puede tener diferentes fechas de ocurrencia, es decir el mismo evento puede repetirse N veces, pero en fechas difernentes.
6) Cada evento tiene asistentes que deben registrarse. El registro es único para una única celebración de tal evento.
7) Cada evento tiene asistencia, la cual debe ser registrada para cada asistente.
8) Cada usuario que asiste debe inscribirse en el evento para ser admitido. La inscripción y asistencia será abonada por algún medio de pago habilitado, del que se registrará, según el caso, entidad de pago habilitada.
9) Un usuario puede inscribirse en el mismo evento N veces, pero cada inscripción debe ser única para la misma ocurrencia del mismo evento.
AL menos estás reglas de negocio tiene que cumplir ese esquema de BBDD.
Ahora bien, sin entrar en demasiados detalles, puedo decirte que aunque tu puedas crear tres clases para administrar el sistema a nivel aplicación, yo aquí estoy viendo alrededor de cinco o seis tablas como mínimo. Y eso ya marca una diferencia en el funcionamiento del mapeo objeto-relacional.
Desde el punto de vista del esquema de BBDD, tienes al menos: Usuario, CategoriaUsuario, Evento, usuario_evento, evento_usuario_pago y medio_pago.
Es lo mínimo necesario para construir un esquema relacional consistente que pueda alimentar tus clases. De lo contrario se generarán redundancias nocivas e inconsistencias de datos.
Tal vez no hayas jamás escuchado esto, pero cuando piensas en estructura de datos de una BBDD, no puedes pensar como programador. La logica de datos no es la misma que la de procesos.
Son visiones diferentes del mismo sistema.
Nota: Si quieres puedes crear las tablas como tienes las clases, pero eso implicará programación adicional para controlar cosas que la BBDD ya te debería proporcionar consistentes, cuando la creas del modo correcto como BBDD relacional.