Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Filmorate

Описание проекта

Filmorate — это приложение для оценки фильмов и управления списками друзей.

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

Схема базы данных Filmorate

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

На данной диаграмме представлены основные сущности проекта:

  • users — таблица пользователей, которая хранит основную информацию: имя, логин, email, дату рождения.
  • films — таблица фильмов, которая содержит название фильма, описание, дату релиза и продолжительность.
  • genres — таблица жанров, связанных с фильмами через таблицу film_genres.
  • mpa_ratings — таблица рейтингов MPA, хранящая возрастные ограничения фильмов.
  • friendships — таблица дружбы между пользователями с указанием статуса.
  • friendship_status — таблица для статусов дружбы (например, подтверждённая или неподтверждённая дружба).
  • film_likes — таблица лайков пользователей к фильмам.
  • film_genres — таблица связей между фильмами и жанрами.

Пояснение по полям таблиц базы данных Filmorate

Таблица users

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

Таблица films

  • id — уникальный идентификатор фильма (primary key).
  • name — название фильма.
  • description — описание фильма, ограниченное 200 символами.
  • release_date — дата выхода фильма.
  • duration — продолжительность фильма в минутах.
  • mpa_rating_id — идентификатор рейтинга MPA (внешний ключ на таблицу mpa_ratings).

Таблица genres

  • id — уникальный идентификатор жанра (primary key).
  • genre — название жанра (например, Комедия, Драма).

Таблица mpa_ratings

  • id — уникальный идентификатор рейтинга MPA (primary key).
  • rating — значение рейтинга MPA (например, G, PG, R).

Таблица friendships

  • user_id — идентификатор пользователя (внешний ключ на таблицу users).
  • friend_id — идентификатор друга (внешний ключ на таблицу users).
  • status_id — статус дружбы (внешний ключ на таблицу friendship_status).
  • Первичный ключ — комбинация user_id и friend_id.

Таблица film_genres

  • film_id — идентификатор фильма (внешний ключ на таблицу films).
  • genre_id — идентификатор жанра (внешний ключ на таблицу genres).
  • Первичный ключ — комбинация film_id и genre_id.

Таблица film_likes

  • film_id — идентификатор фильма (внешний ключ на таблицу films).
  • user_id — идентификатор пользователя, который поставил лайк (внешний ключ на таблицу users).
  • Первичный ключ — комбинация film_id и user_id.

Таблица friendship_status

  • id — уникальный идентификатор статуса дружбы (primary key).
  • status — описание статуса (например, Подтверждено, Неподтверждено).

SQL-запросы для основных операций

Пример добавления фильма:

INSERT INTO films (name, description, release_date, duration, mpa_rating_id)
VALUES ('Кин-дза-дза!', 'комедия', '1986-01-01', 135, 2);

Пример добавления жанра к фильму

-- Пример: фильм с id = 1 получает жанр с id = 1 и 4
INSERT INTO film_genres (film_id, genre_id) VALUES (1, 1);
INSERT INTO film_genres (film_id, genre_id) VALUES (1, 4);

Пример добавления пользователя:

INSERT INTO users (name, login, email, birthday)
VALUES ('Иван Данко', 'red.heat', 'ivan.danko@yahoo.com', '1976-06-15');

Пример добавления лайка к фильму

INSERT INTO film_likes (film_id, user_id)
VALUES (1, 1);  -- Пример: пользователь с id = 1 ставит лайк фильму с id = 1

Пример добавления друга

INSERT INTO friendships (user_id, friend_id, status_id)
VALUES (1, 2, 1);  -- Пример: пользователь с id = 1 добавляет друга с id = 2, статус = 1 (подтверждено)

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

SELECT f.name, COUNT(fl.user_id) AS likes
FROM films f
LEFT JOIN film_likes fl ON f.id = fl.film_id
GROUP BY f.id
ORDER BY likes DESC
LIMIT 10;

Пример получения друзей пользователя

SELECT u.id, u.name
FROM users u
JOIN friendships f ON u.id = f.friend_id
WHERE f.user_id = 1;  -- Пример: получить друзей пользователя с id = 1

About

Filmorate is an application for evaluating movies and managing friends lists.

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages