-
filmorate_user:
- id (первичный ключ)
- email (электронная почта пользователя)
- login (логин пользователя)
- user_name (имя пользователя)
- birthday (дата рождения пользователя)
-
friendship_status:
- id (первичный ключ)
- status_name (статус, например, 'Ожидает подтверждения', 'В друзьях')
-
friendship:
- user_id (составной первичный ключ, внешний ключ, содержит id пользователя из таблицы user)
- friend_id (составной первичный ключ, внешний ключ, содержит id пользователя из таблицы user, который является другом пользователя c идентификатором user_id)
- friendship_id (внешний ключ, содержит id статуса дружбы из таблицы friendship)
-
mpa_rating:
- id (первичный ключ)
- rating_name (навзвание возрастного рейтинга)
-
film:
- id (первичный ключ)
- title (название фильма)
- description (опсисание фильма)
- release_date (дата релиза фильма)
- duration (длительность фильма в минутах)
- mpa_rating_id (внешний кллюч, содержит id возрастного рейтинга из таблицы mpa_rating)
-
genre:
- id (первичный ключ)
- genre_name (название жанра фильма)
-
film_genre (соединительная таблица между film и genre):
- film_id (составной первичный ключ, внешний ключ, содержит id фильма из таблицы film)
- genre_id (составной первичный ключ, внешний ключ, содержит id жанра из таблицы genre)
-
film_like (содержит список лайков фильмов от пользователей):
- film_id (составной первичный ключ, внешний ключ, содержит id фильма из таблицы film)
- *user_id (составной первичный ключ, внешний ключ, содержит id пользователя из таблицы user)
- добавление пользователя INSERT INTO user (email, login, user_name, birthday)
VALUES ('test@email.ru', 'test_login', 'test_user_name', DATE '2000-01-01');
- обновление пользователя
UPDATE user SET user_name = 'new_user_name' WHERE email = 'test@email.ru';
- получение списка всех пользователей
SELECT * FROM user;
- получение пользователя по id
SELECT * FROM usere WHERE id = 1;
- добавление пользователя с id '1' в друзья пользователю с id '2' с id статуса дружбы '1'
INSERT INTO friends (user_id, friend_1, friendship_id)
VALUES (2, 1, 1);
- получение списка друзей пользователя с id '1'
SELECT * FROM user WHERE id IN (SELECT friend_id FROM friends WHERE user_id = 1);
- получение списка общих друзей между пользователей с id '1' и '2'
SELECT * FROM user WHERE id IN (
SELECT u1.friend_id
FROM friends AS u1, friends AS u2
WHERE u1.user_id = 1 AND u2.user_id = 2 AND u1.friend_id = u2.friend_id);
- удаление пользователя из списка друзей
DELETE friends WHERE user_id = 1 AND friend_id = 2;
- добавление фильма
INSERT INTO film (title, description, release_date, duration, genre_id)
VALUES ('film_title', 'film_description', DATE '2010-10-10', 123, 1);
- обновление фильма
UPDATE film SET description = 'new_description' WHERE title = 'film_title';
- получение списка всех фильмов
SELECT * FROM film;
- получение списка по id
SELECT * FROM film WHERE id = 1;
- добавить лайк фильму
INSERT INTO film_likes (filmd_id, user_id)
VALUES (1, 1);
- удалить лайк
DELETE film_likes WHERE filmd_id = 1 AND user_id = 1;
- получить 10 самых популярных фильмов
SELECT title FROM film WHERE id IN (
SELECT film_id FROM film_likes GROUP BY film_id ORDER BY COUNT(*) DESC
) LIMIT 10;