Насколько я могу судить, приведенный вами пример уже находится в Пятая нормальная форма .
У вас так мало столбцов в таблицах, что я не вижу другого способа их расположить!
Насколько я могу судить, "тип участия" не нарушает никаких правил NF, потому что нет других столбцов, семантически связанных с ним.
изменить в ответ на комментарий:
Возможно, как вы предполагаете, это другая проблема с Datamapper / Codeigniter, которая не связана с 5NF.
Если вы не можете добавить поля в таблицу user_events, которую она генерирует, то, возможно, вам нужно опередить ее и создать другую сущность, давайте назовем ее «Посещаемость» (или что-то еще, что имеет смысл в вашей модели). Посещаемость будет иметь следующие поля:
Attendance
----------
id
participation_type (ENUM)
Затем сообщите Datamapper, что посещаемость относится как к пользователям, так и к событиям, и она сгенерирует (или попросит вас сгенерировать, или что-то еще) две таблицы связывания:
user_attendance
---------------
id
user_id
attendance_id
event_attendance
----------------
id
event_id
attendance_id
Если вы сделаете что-то в том же духе, у вас будет объект Attendance, к которому вы сможете добавлять поля.
Отказ от ответственности: я ничего не знаю о Datamapper, я просто читаю между строк здесь