Skip to content

vsbakushkin/java-filmorate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Filmorate - кинопоиск для своих

Социальная сеть, которая поможет выбрать кино на основе того, какие фильмы вы и ваши друзья смотрите и какие оценки им ставите.

Технологии, применяемые в проекте

  • Spring boot
  • Maven
  • PostgreSQL

Диаграмма базы данных

ER model

diagram

Описание базы данных в текстовом виде

FILM

Содержит информацию о фильмах.

Таблица состоит из полей:

  • idprimary key — идентификатор фильма;
  • name — название фильма (не может быть пустым);
  • description — описание фильма;
  • mpa_idforeign key (отсылает к таблице mpa) — идентификатор жанра;
  • release_date — год выхода;
  • duration — продолжительность фильма в минутах;

MPA

Содержит информацию о рейтингах ассоциации кинокомпаний (англ._ Motion Picture Association,_ сокращённо МРА).

Таблица состоит из полей:

  • idprimary key — идентификатор рейтинга;
  • name — возрастной рейтинг, например:
    • PG — детям рекомендуется смотреть такой фильм с родителями;
    • PG-13 — детям до 13 лет смотреть такой фильм нежелательно.

FILM_GENRE

Связывает фильмы с жанрами.

Таблица состоит из полей:

  • film_idprimary key (отсылает к таблице film) — идентификатор фильма;
  • genre_idprimary key (отсылает к таблице genre) — идентификатор жанра.

GENRE

Содержит информацию о жанрах кино.

Таблица состоит из полей:

idprimary key — идентификатор жанра;

  • name — название жанра, например:
    • Комедия — комедия;
    • Драма — драма.

FILM_LIKES

Связывает фильмы с пользователями, которые их оценили.

Таблица состоит из полей:

  • film_idprimary key (отсылает к таблице film) — идентификатор фильма;
  • user_idprimary key (отсылает к таблице user) — идентификатор пользователя;

USER_ACCOUNT

Содержит информацию о пользователях.

Таблица состоит из полей:

  • idprimary key — идентификатор пользователя;
  • email — электронная почта пользователя;
  • login — логин пользователя (не может быть пустым);
  • name — имя пользователя;
  • birthday — дата рождения пользователя;

FRIENDSHIP

Связывает пользователей, которые являются друзьями, и указывает, подтверждена ли эта дружба.

Таблица состоит из полей:

  • idprimary key — уникальный идентификатор;
  • user_idforeign key (отсылает к таблице user) — идентификатор пользователя;
  • friend_idforeign key (отсылает к таблице user) — идентификатор друга пользователя;
  • friend_status_confirm — статус подтверждения дружбы, например:
    • truefriend_id подтвердил дружбу с пользователем user_id;
    • falsefriend_id не подтвердил дружбу с пользователем user_id;

Примеры запросов

Получение списка всех фильмов
SELECT *
FROM FILM  
Получение списка всех пользователей
SELECT *
FROM USER_ACCOUNT  
Получение списка `?` наиболее популярных фильмов
SELECT f.name, COUNT(fl.user_id) AS total_likes
FROM FILM AS f
       LEFT JOIN FILM_LIKES AS fl ON f.id = fl.film_id
GROUP BY f.id
ORDER BY total_likes DESC
LIMIT ? -- подставить количество фильмов для вывода  
Получение списка общих друзей с другим пользователем
SELECT u.id as friend_id, u.email, u.login, u.name, u.birthday
FROM USER_ACCOUNT u
       JOIN (SELECT friend_id FROM FRIENDSHIP WHERE user_id = ?) fs1
       JOIN (SELECT friend_id FROM FRIENDSHIP WHERE user_id = ?) fs2
ON fs1.friend_id = fs2.friend_id
WHERE u.id = fs1.friend_id;

About

A social network that helps you choose movies based on what movies you and your friends watch and what ratings you give them

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages