База данных
Для создания базы данных использована MongoDB.
Схема базы данных Movies Explorer
Модель User (Пользователь)
{
"_id": ObjectId, // Уникальный идентификатор пользователя
"name": String, // Имя пользователя
"email": String, // Email пользователя
"passwordHash": String, // Хешированный пароль
"movies": [ObjectId], // Массив ссылок на фильмы (ссылки на _id в коллекции Movies)
"createdAt": Date, // Дата создания аккаунта
"updatedAt": Date // Дата последнего обновления
}
Модель Movie (Фильм)
{
"_id": ObjectId, // Уникальный идентификатор фильма
"country": String, // Страна производства
"director": String, // Режиссер
"duration": Number, // Продолжительность в минутах
"year": Number, // Год выпуска
"description": String, // Описание фильма
"image": String, // URL превью-изображения
"trailerLink": String, // URL трейлера
"thumbnail": String, // URL миниатюры
"movieId": String, // Внешний ID фильма
"nameRU": String, // Название на русском
"nameEN": String, // Название на английском
"owner": ObjectId, // Ссылка на пользователя (ObjectId из коллекции Users)
"createdAt": Date, // Дата добавления в избранное
"updatedAt": Date // Дата последнего обновления
}
Связи между коллекциями
- One-to-Many (Один ко многим):
- Один пользователь может иметь много фильмов в избранном
- В модели User хранится массив ссылок на фильмы (
movies
) - В модели Movie хранится ссылка на владельца (
owner
)
Индексы
Рекомендуется создать индексы для следующих полей:
email
в коллекции Users (уникальный индекс)movieId
в коллекции Movies (уникальный индекс)owner
в коллекции Movies (индекс для быстрого поиска фильмов пользователя)
Дополнительные примечания
- Все даты хранятся в формате ISO Date
- Пароли хранятся в виде хешей
- Внешние ID фильмов (
movieId
) используются для предотвращения дублирования - Все строковые поля должны проходить валидацию на соответствие формату
Обновлено