Calendar and scheduling database schema

How a calendar app models its data: calendars and sharing, events with their own time zones, RRULE recurrence with exception dates and per-occurrence overrides, attendees and RSVP, reminders, working hours and a free-busy index.

Calendar Scheduling ER diagram

Calendar and scheduling database schema n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 users idBIGINT emailVARCHAR full_nameVARCHAR default_timezoneVARCHAR created_atTIMESTAMPTZ calendars idBIGINT owner_idBIGINT nameVARCHAR descriptionTEXT timezoneVARCHAR colorVARCHAR kindVARCHAR is_default_busyBOOLEAN created_atTIMESTAMPTZ calendar_shares calendar_idBIGINT grantee_idBIGINT roleVARCHAR granted_atTIMESTAMPTZ events idBIGINT calendar_idBIGINT uidVARCHAR organizer_idBIGINT titleVARCHAR descriptionTEXT locationVARCHAR starts_atTIMESTAMPTZ ends_atTIMESTAMPTZ timezoneVARCHAR is_all_dayBOOLEAN statusVARCHAR visibilityVARCHAR transparencyVARCHAR sequenceINTEGER created_atTIMESTAMPTZ updated_atTIMESTAMPTZ event_recurrences event_idBIGINT rruleVARCHAR freqVARCHAR interval_countSMALLINT until_atTIMESTAMPTZ occurrence_countINTEGER horizon_atTIMESTAMPTZ recurrence_exceptio… event_idBIGINT original_start_atTIMESTAMPTZ excluded_atTIMESTAMPTZ event_overrides idBIGINT event_idBIGINT original_start_atTIMESTAMPTZ starts_atTIMESTAMPTZ ends_atTIMESTAMPTZ titleVARCHAR locationVARCHAR descriptionTEXT statusVARCHAR updated_atTIMESTAMPTZ event_attendees idBIGINT event_idBIGINT override_idBIGINT user_idBIGINT emailVARCHAR display_nameVARCHAR roleVARCHAR rsvp_statusVARCHAR commentVARCHAR responded_atTIMESTAMPTZ event_reminders idBIGINT event_idBIGINT user_idBIGINT methodVARCHAR minutes_beforeINTEGER created_atTIMESTAMPTZ working_hours user_idBIGINT weekdaySMALLINT starts_at_localTIME ends_at_localTIME timezoneVARCHAR is_availableBOOLEAN busy_intervals idBIGINT user_idBIGINT event_idBIGINT occurrence_start_…TIMESTAMPTZ starts_atTIMESTAMPTZ ends_atTIMESTAMPTZ is_tentativeBOOLEAN

Related database schemas