EventCategory
EventCategoryId PK
Name
Event
EventId PK
EventCategoryId FK
Name
This is what I've got now. However, events of some event category type need extra data fields. So where do these fields go? This is what I'm thinking...
EventCategory
EventCategoryId PK
Name
Event
EventId PK
EventCategoryId FK
Name
SpecialEvent
EventId PK
Extrafield
So there's a 1-1 relationship between Event and Special Event (this structure will map to a single SpecialEvent class in C#) and all events and only those events that reference the pertinent category will have a row in this new table.
Is this a fair design? My qualm is that an event will have a a corresponding row in the SpecialEvent table and yet won't reference the required event category or vica versa.