Skip to content

🎵 Music Database System Реляционная база данных для музыкального сервиса (аналог Spotify) с аналитикой прослушиваний, плейлистами и автоматическими триггерами.

Notifications You must be signed in to change notification settings

sssoneta/music-database-system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

🎵 Music Database Project

База данных музыкального сервиса
Итоговый проект по курсу "Основы баз данных"


📌 О проекте

Реализация реляционной базы данных для музыкального сервиса с возможностью:

  • Хранения информации о песнях, альбомах, исполнителях и жанрах
  • Учета пользователей и их плейлистов
  • Анализа прослушиваний (для рекомендаций)
  • Автоматического обновления данных через триггеры

🗃️ Структура базы данных

Основные таблицы:

Таблица Описание
song Песни (название, длительность)
artist Исполнители
album Музыкальные альбомы
genre Жанры
client Пользователи сервиса
playlist Плейлисты
song_listen История прослушиваний

Связующие таблицы:

  • playlist_songs, album_song, genre_song, artist_song

⚙️ Техническая реализация

Ключевые особенности:

  1. Автоматизация

    • Триггеры для обновления длительности плейлистов
    • Функция фильтрации новых релизов (<100 дней)
  2. Аналитика

    • Представление song_listen_count для статистики прослушиваний
    • Индексы для оптимизации запросов
  3. Примеры запросов:

    -- Песни из альбома конкретного исполнителя  
    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';  

🛠️ Установка и запуск

  1. Требования:

    • PostgreSQL 14+
    • Python 3.8+ (для тестовых скриптов)
  2. Инициализация БД:

    psql -U postgres -f init_db.sql  
    psql -U postgres -f fill_data.sql  
  3. Тестирование функций:

    -- Проверка триггера обновления плейлиста  
    INSERT INTO playlist_songs (playlist_id, song_id) VALUES (1, 5);  
    SELECT update_playlist_duration(1);  

📊 Возможности для расширения

  1. Добавить API на FastAPI/Django
  2. Реализовать рекомендательную систему на основе song_listen
  3. Интеграция с Spotify API

📜 Лицензия

Проект разработан в учебных целях © 2024,


About

🎵 Music Database System Реляционная база данных для музыкального сервиса (аналог Spotify) с аналитикой прослушиваний, плейлистами и автоматическими триггерами.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published