Some questions...Is the same event always held at the same theatre, year after year? Although it may be the case now, it may not always be the case in the future.
Just guessing, and I'm sure I'm not entirely right, but I think I would link the seat table (really a Venue Table) to each event thru a join table, in the same way you have an Invoice<LineItems>Products table set up.
This way when you create a new Event, you select the Venue. The venue provides the seating chart. When you pick participants, and their guests, you assign them seats. Then every event, has a venue and the appropriate seating chart. Just not sure without playing with it, how you select contacts/guests with the seats
At the very least I gave you a bump, hopefully someone else can add on/correct me, or have a completely different idea.
I do have a venue table set up, and that works well. The seat list is rather complex to create, and I would prefer to retain it year after year when guests come back to sit in the same seats next time. We make a distinction between Contacts (event sponsors, performers, and organizations) and guests (invitees to the event). So the format of the table structure would more accurately be Events<Participation>Contacts and Participation<Guests> and Guests-Seat List and Venue<Seat List> and Events-Venue
With regards to my problem, I have created a composite field that combines SeatID and EventID in the Guest List through a calculation, but I can't define that field as unique because it can't be stored and indexed since it references a parent table. I could have a script create the composite key whenever the seatingID is updated but that seems like a rather convoluted solution.