Skip to Content
⚙️ Сайт находится в стадии разработки.

База данных

Для создания базы данных использована 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) используются для предотвращения дублирования
  • Все строковые поля должны проходить валидацию на соответствие формату
Обновлено