Allora...
codice:
form_fields table:
id, person_id, field_name, field_label, field_default_value, field_type (text/password/select/etcs), ...
events table:
id, form_event_id, ...
form_events table:
id, person_id, ...
form_event_fields table:
id, form_event_id, form_field_id
subscriptions table:
id, event_id, form_event_id, person_id (?), ...
subscription_fields table:
id, subscription_id, form_field_id, inserted_value
Dove:
la tabella events serve per inserire gli eventi che l'utente crea ( i ... significano "altri campi d'interesse")
ad ogni events viene associato un form_event
ogni form_event è composto da tanti form_field (il campo person_id è per segnare il riferimento all'utente che ha creato il form_event/form_field. Opzionale)
Quando un utente si iscrive, viene creato un record in subscriptions e per ogni field del form viene aggiunto un record in subscription_fields.
nella tabella subscriptions person_id si riferisce all'utente che si iscrive all'evento in caso l'utente sia un utente registrato nel sistema.
questa è giusto un'idea buttata giù in un paio di secondi