Реляционная структура базы данных приведена на рисунке 11.
Рисунок 11 — Реляционная структура базы данных Таблица users содержит информацию о пользователях. Поле nickname является логином пользователя на сайт. Поля password_hash и salt отвечают за хранение пароля пользователя в БД.
Таблица categories содержит список категорий (тем) рассылки и определить какой пользователь подписан, на какие категории рассылки помогает таблица subscriptions, если она содержит ключ ID пользователя — ID категории, то пользователь подписан на эту категорию.
Таблица mails хранит в себе все отправленные сообщения. Понять какие сообщения были отправлены для каких категорий помогает таблица mailing_map. Если она содержит ключ ID категории — ID сообщения, то данное сообщение передавалось для всех пользователей данной категории.
Таблица hashes требуется для автоматической авторизации пользователя со всех устройств, с которых он уже входил в систему. при загрузке сайта с устройства, если пользователь не залогинен, то в cookies проверяется хэш сайта, и если совпадают пары хэш и ID пользователя, происходит автоматическая авторизация пользователя.
Описание таблиц базы данных приведено в Приложении Б.
Запросы, формирующие базу данных, приведены в Приложении В.
Для работы с базой данных и формирования контента сайта используется язык php.
Описание взаимодействия с базой данных средствами PHP приведено в Приложении Г.