Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

java-filmorate

Template repository for Filmorate project.



Описание схемы:

  1. users:

Содержит данные о пользователях. Таблица включает в себя следующие поля:

  • Первичный ключ id - идентификатор пользователя;
  • email - электронная почта пользователя;
  • name - имя пользователя;
  • login - логин пользователя;
  • birthday - дата рождения пользователя
  1. films:

Содержит данные о фильмах. Таблица включает в себя следующие поля:

  • Первичный ключ id - идентификатор фильма;
  • Внешний ключ mpa_id (ссылает к таблице mpa) - идентификатор рейтинга;
  • name - название фильма
  • description - описание фильма
  • release_data - дата релиза
  • duration - продолжительность фильма
  1. friendship:
  • Первичный ключ user_id (ссылается к таблице user) - идентификатор пользователя;
  • Внешний ключ friend_id (ссылается к таблице user) - идентификатор друга(пользователя);
  • Внешний ключ status_id (ссылается к таблице status_friendship)- идентификатор статуса
  1. status_friendship:
  • Первичный ключ status_id - идентификатор статуса
  • name - имя идентификатора
  1. genres:
  • Первичный ключ id - идентификатор жанра
  • name - название жанра
  1. mpa:
  • Первичный ключ mpa_id - идентификатор рейтинга
  • name - название рейтинга
  1. likes_films:
  • Внешний ключ film_id (ссылается на таблицу films) - идентификатор фильма
  • Внешний ключ user_id (ссылается на таблицу users) - идентификатор пользователя
  1. genres_films:
  • Внешний ключ film_id (ссылается на таблицу films) - идентификатор фильма
  • Внешний ключ genres_id (ссылается на таблицу genres) - идентификатор пользователя

Примеры запросов к БД:

  1. Получение фильма по идентификатору

SELECT* FROM FILMS
WHERE ID=?

  1. Получение популярных фильмов

SELECT f.*
FROM LIKES_FILMS lf
INNER JOIN FILMS f ON f.ID = lf.FILM_ID
GROUP BY f.ID
ORDER BY COUNT(lf.USER_ID) DESC
LIMIT ?;

  1. Получение пользователя по идентификатору

SELECT* FROM USERS
WHERE id = ?

  1. Получение списка друзей конкретного пользователя

SELECT u.*
FROM FRIENDSHIP f
INNER JOIN USERS u ON f.FRIENDS_ID = u.ID
WHERE f.USER_ID = ? AND f.STATUS_ID = 1;

  1. Получение списка общих друзей

SELECT u.*
FROM FRIENDSHIP f
INNER JOIN USERS u ON u.ID = f.FRIENDS_ID
WHERE F.USER_ID = ? OR F.USER_ID = ?
GROUP BY F.FRIENDS_ID
HAVING COUNT(F.FRIENDS_ID)>1;

About

Template repository for Filmorate project.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages