Вы хотите многопрофильные отношения, но я не думаю, что они вам нужны. Вы не можете сделать это полиморфным. Вот моя рекомендуемая установка:
Для ваших столбцов таблицы событий:
- ID
- creator_id (FK для users.id)
- (специфичные для события поля)
Сохраните существующие таблицы пользователей как есть ...
Теперь самое интересное - таблица users_events:
- ID
- user_id (FK users.id)
- event_id (FK events.id)
- is_admin? (Булево)
- is_paid? (Булево)
- is_attended? (Булево)
Что касается решения вашей несуществующей проблемы с посещаемым пользователем - если вас не интересуют данные пользователя, просто оставьте user_id NULL, где это применимо. Если вам нужны данные, я предлагаю использовать то, что вы уже предложили - логический флаг.