Your plan sounds good to me.

For one thing, you need to make sure that the combination is unique when a new event is added to the database. You can prevent the same event from being entered into the database twice accidentally. Before a user (or admin?) is allowed to enter a new event into the database, the three can be concatinated into a custom state, then the concatenated string can be searched in the database to see if it’s already there in the fourth field. If so, you can show the existing event rather than allowing the user to add a new one. When adding an event, you would add a new thing (entry) with all three fields plus the concatenated field. I’m sure it’s not the only way to do it, but it sounds like a simple way to me. The tricky part might be typos, so use dropdown lists (from option sets or separate data types) instead of letting users type anything in those three fields.

You certainly could use the 4th field to link the two data types by adding the field to both, if you wish. But it might not be necessary. Once you’ve identified the event to connect the registration to, Bubble will probably use the hidden ID field to connect them behind the scenes anyway–if you connected the tables in the way I described.

I’m guessing that :append is the operator you seek in order to concatenate the fields together.

(I apologize if I’m repeating myself. I’m feeling worn out after a day of chores.)