Я работаю над продуктом, который отправляет периодические электронные письма зарегистрированным клиентам, и я хотел бы реализовать какой-то механизм отмены подписки из этих писем.Сохранение адресов электронной почты в DB
Существует около 5 типов электронных писем и таблица User
MySql, которая содержит всех пользователей. Новые пользователи подписываются на все типы электронной почты по умолчанию и могут отписаться от каждого типа электронной почты отдельно.
Мой вопрос заключается в том, как хранить эти отписки в БД, сохраняя при этом высокую производительность и масштабируемость и без излишних усложнений. Вот несколько вариантов, которые пришли, каждый из них имеют свои преимущества и недостатки:
- Добавление булеву колонки на
User
таблицы для каждого типа отчета со значением по умолчанию верно. - Создание новой таблицы
Unsubscription
с один-на-один отношение к таблицеUser
. Каждый тип электронной почты получит столбец, и каждый пользователь получит строку. - Создание новой таблицы
Unsubscription
с много-к-одному отношение к таблицеUser
. Каждый запрос на отмену подписки создаст новую строку в таблице.
Есть ли наилучшая практика для хранения информации о выписке? Какие проблемы с базой данных?
почему вы должны хранить отменяют подписку? не можете ли вы просто удалить соответствующие подписки от пользователя? – Anentropic
@ Антентроп По умолчанию каждый пользователь подписывается на все типы электронной почты, поэтому я считаю, что имеет смысл только сохранить отписки. Также при добавлении типа электронной почты нет необходимости изменять какие-либо данные. – Tzach