[[Image(ERModel_v01.png, 1000px)]] ---- == Податочни барања== === Ентитети === 1. **User** – ентитет кој чува информации за секаков тип корисници на апликацијата - __user_id__ (bigint) - profile_photo (text, not null) - email (text, not null) - username (text, not null) - full_name(text, not null) - password (text, not null) 2. **Non-Admin User** – ентитет кој чува податоци за слушателите и артистите - __user_id*__ (bigint) 3. **Admin** – ентитет кој чува податоци за администраторот - __user_id*__ (bigint) 4. **Listener** – ентитет кој чува податоци за слушателот на музика (секојдневен корисник) - __user_id*__ (bigint) 5. **Song** – ентитет кој чува податоци за песните - __song_id__ (bigint) - title (text, not null) - genre (text, not null) - link (text, not null) - release_date (date, not null) 6. **Artist** – ентитет кој чува податоци за артистите (креатори на музика) - __user_id*__ (bigint) 7. **Event** – ентитет кој чува податоци за настаните на коишто настапуваат артистите - __event_id__ (bigint) - location (text, not null) - venue (text, not null) 8. **Album** – ентитет кој чува податоци за албумите објавени од артистите - __album_id__ (bigint) - title (text, not null) - release_date (date, not null) - cover (text, not null) 9. **Playlist** – ентитет кој чува податоци за плејлистите креирани од корисниците - __playlist_id__ (bigint) - cover (text, not null) - name (text, not null) ---- === Релации === 1. **follows** (Non-Admin User ↔ Non-Admin User N:M) Корисницте можат да следат други корисници. 2. **performs_at** (Event ↔ Artist, N:M) Артистите можат да настапуваат на настапи. 3. **likes** (Listener ↔ Song, N:M) Корисниците можат да ги додадат песните во листа на омилени песни (favourites). 4. **listens_to** (Listener ↔ Song, N:M) Корисницте можат да слушаат песни и притоа се зачувува бројот на слушања. 5. **reviews** (Listener ↔ Song, N:M) Корисниците можат да оценуваат песни со оценка (1-5) и коментар. 6. **creates** (Listener ↔ Playlist, 1:M) Корисниците можат да креираат листи со песни. 7. **saves** (Listener ↔ Playlist, N:M) Корисниците можат да зачувуваат листи со песни креирани од други корисници. 8. **is_in** (Song ↔ Playlist, N:M) Песните можат да се наоѓаат во листи со песни креирани од корисниците. 9. **has** (Song ↔ Album, 1:N) Еден албум содржи песни. 10. **modifies** (Admin ↔ Song, 1:N) Администраторот може да ги промени метаподатоците за песните. 11. **removes** (Admin ↔ Song, 1:N) Администраторот може да ги отстрани песните од базата. 12. **releases_single** (Artist ↔ Song, N:M) Артистите можат да објавуваат поединечни песни. 13. **releases_album** (Artist ↔ Song, N:M) Артистите можат да објавуваат албуми со песни.