База данных музыкального сервиса
Итоговый проект по курсу "Основы баз данных"
Реализация реляционной базы данных для музыкального сервиса с возможностью:
- Хранения информации о песнях, альбомах, исполнителях и жанрах
- Учета пользователей и их плейлистов
- Анализа прослушиваний (для рекомендаций)
- Автоматического обновления данных через триггеры
| Таблица | Описание |
|---|---|
song |
Песни (название, длительность) |
artist |
Исполнители |
album |
Музыкальные альбомы |
genre |
Жанры |
client |
Пользователи сервиса |
playlist |
Плейлисты |
song_listen |
История прослушиваний |
playlist_songs,album_song,genre_song,artist_song
-
Автоматизация
- Триггеры для обновления длительности плейлистов
- Функция фильтрации новых релизов (<100 дней)
-
Аналитика
- Представление
song_listen_countдля статистики прослушиваний - Индексы для оптимизации запросов
- Представление
-
Примеры запросов:
-- Песни из альбома конкретного исполнителя SELECT s.title FROM song s JOIN artist_song ars ON s.id = ars.song_id JOIN album_song als ON s.id = als.song_id WHERE ars.artist_id = 1 AND als.album_id = 1; -- Пользователи, родившиеся в 20 веке SELECT username FROM client WHERE birth_date BETWEEN '1901-01-01' AND '2000-12-31';
-
Требования:
- PostgreSQL 14+
- Python 3.8+ (для тестовых скриптов)
-
Инициализация БД:
psql -U postgres -f init_db.sql psql -U postgres -f fill_data.sql
-
Тестирование функций:
-- Проверка триггера обновления плейлиста INSERT INTO playlist_songs (playlist_id, song_id) VALUES (1, 5); SELECT update_playlist_duration(1);
- Добавить API на FastAPI/Django
- Реализовать рекомендательную систему на основе
song_listen - Интеграция с Spotify API
Проект разработан в учебных целях © 2024,