Dave,
You can store the recurring events as separate records, no problem. In fact, this is the only solution that scales.
The built-in recurrence support lets you start with recurring event relatively quickly and it does some work for you. It will let you define the recurring events using a single record which is then expanded into individual occurrences. However, at some point it starts to become a burden - you need to load the definitions from the past to make sure the current period includes the recurring events. Sometimes you need to do SELECTs from the individual occurrences which is not possible when they don't exist in the database.
So: Storing recurring events as individual records is a viable option. You can (and probably will have to) store additional recurrence-related fields with the records in the database so you can identify them.