Нет смысла рассуждать о том, как это делает Google;Независимо от того, что использует Google, он опирается на действительно массивный кластер серверов и, вероятно, гораздо более сложен, чем вам нужно.Для небольших приложений, даже приложений корпоративного уровня, для этого есть простые методы.
Для схемы я бы сохранил встречу как обычную дату / время, а напоминание - как другую дату /время (которое вы можете рассчитать по заданным часам и минутам, используя структуру TimeSpan) или как число тиков в TimeSpan.Есть преимущества и недостатки либо;используя напоминание о дате / времени, вы должны пересчитать эту дату / время, если встреча изменится.Но время напоминания читается человеком при хранении в схеме.Обратное верно для хранения значения в виде тиков;15 минут в метках TimeSpan - это 15 минут, и вы можете добавить это к любой дате и времени, которые они указывают для фактической встречи.Но в БД это будет большое число, требующее, чтобы пользователи использовали ваше приложение для понимания данных.
Вы можете сохранить одно напоминание о встрече в самой записи о встрече, или вы можете разрешить многозаранее запланированные напоминания для каждой встречи, ведя отдельную таблицу, которая ссылается на запись встречи и содержит время напоминания.
Для фактической реализации напоминания - приложение (или часть функциональности в нем), которое вы создаете для обработки этих напоминаний.должен запросить базу данных для первого напоминания, представляющего интерес для текущего пользователя, который появится первым, и установить таймер для истечения в назначенное время.Этот поток будет просто спать в течение необходимого количества миллисекунд, а затем запустит событие, которое вы будете использовать для отображения напоминания.