| Version 35 (modified by , 13 hours ago) ( diff ) |
|---|
Концептуален дизајн - ЕР Дијаграм и податочни побарувања
ЕР Дијаграм
Податочни барања
Ентитети
- Users – ентитет кој чува информации за секаков тип корисници на апликацијата
- user_id (bigint)
- profile_photo (text)
- email (text, not null, unique)
- username (text, not null, unique)
- full_name (text, not null)
- password (text, not null)
- Non_Admin_Users – ентитет кој чува податоци за слушателите и артистите
- user_id* (bigint)
- Admins – ентитет кој чува податоци за администраторот
- user_id* (bigint)
- Listeners – ентитет кој чува податоци за слушателите на музика (секојдневен корисник)
- user_id* (bigint)
- Musical_Entities - ентитет кој чува податоци за сите форми на објавена музика (Песна и Албум)
- id (bigint)
- title (text, not null)
- genre (text, not null)
- release_date (date, not null)
- Songs – ентитет кој чува податоци за песните
- link (text, not null)
- id* (bigint)
- Artists – ентитет кој чува податоци за артистите (креатори на музика)
- user_id* (bigint)
- Events – ентитет кој чува податоци за настаните на коишто настапуваат артистите
- event_id (bigint)
- name (text, not null)
- location (text, not null)
- venue (text, not null)
- date (date, not null)
- time (time, not null)
- Albums – ентитет кој чува податоци за албумите објавени од артистите
- id* (bigint)
- Playlists – ентитет кој чува податоци за плејлистите креирани од корисниците
- playlist_id (bigint)
- cover (text)
- name (text, not null)
- Listens - ентитет кој чува податоци за секое слушање од страна на корисник
- listener_id* (bigint)
- song_id* (bigint)
- timestamp (timestamp)
- Contributions - ентитет кој чува податоци за секој придонес на артист во дадена песна или албум
- artist_id* (bigint)
- musical_entity_id* (bigint)
- contribution_order (int)
- Roles - ентитет кој податоци за улоги кој може еден артист да ги има во некој придонес
- role_id (bigint)
- contribution_id* (bigint)
Релации
- follows (Non-Admin Users ↔ Non-Admin Users N:M)
Корисниците можат да следат други корисници.
- performs_at (Events ↔ Artists, N:M)
Артистите можат да настапуваат на настани.
- creates_event (Users ↔ Events, 1:N)
Корисник може да создава нови настани.
- likes (Listeners ↔ Musical_Entities, N:M)
Корисниците можат да ги додадат песните/албумите во листа на омилени („favourites“).
- reviews (Listeners ↔ Musical_Entities, N:M)
Корисниците можат да ги оценуваат песните/албумите со оценка (1-5) и коментар.
- creates_playlist (Listeners ↔ Playlists, 1:N)
Корисниците можат да креираат листи со песни.
- saves (Listeners ↔ Playlists, N:M)
Корисниците можат да зачувуваат листи со песни креирани од други корисници.
- is_in (Songs ↔ Playlists, N:M)
Песните можат да се наоѓаат во листи со песни креирани од корисниците.
- has (Albums ↔ Songs, 1:N)
Еден албум содржи песни.
- releases (Artists ↔ Musical_Entities, 1:N)
Артист може да објави песни/албуми.
- makes (Listeners ↔ Listens, 1:N)
Корисниците можат да слушаат песни и со тоа создаваат запис за едно ново слушање
- refers_to (Songs ↔ Listens, 1:N)
Кога една песна е слушана се создава запис кој се однесува на таа конкретна песна
- credited_in (Artists ↔ Contributions, 1:N)
Се чува кој артист има некаков придонес
- has_credit (Musical_Entities ↔ Contributions, 1:N)
Се чува која песна/албум има некаков придонес од артист
- performs (Roles ↔ Contributions, M:N)
Се чува кои улоги ги има артист во некој придонес
Историјат
Верзија 1 - Почетна верзија
- Администраторот и артистите можат да додаваат настани.
- Песните и албумите наследуваат од заедничка суперкласа - MusicalEntity
- Артистите можат да бидат дел од песни/албуми, и притоа да имаат различни улоги.
- Албумите можат да бидат објавени само од еден артист.
- За секој настан дополнително се чуваат име, датум и време
- За релацијата listens_to наместо број на слушања, се чува
timestampод секое слушање со цел едно слушање на песната да се чува како посебен настан
- Веќе немаме две одделни релации за создавач на настан, една кон администратор и една кон артист, туку имаме единствена релација со генералниот корисник
- Релацијата is_part_of е преименувана во contributes_to, што понатаму во ddl ќе биде мапирано во табелата artist_contribution, што е по конвенција што ја користиме и низ остатокот од моделирањето.
- Listens релацијата е моделирана како слаб ентитет со парцијален клуч timestamp.
- Релацијата contributes_to ја претворивме во слаб ентитет Contributions кој има релација со Artists, Musical_Entities, но и новосоздадената Roles табела. Ова овозможува еден артист да има повеќе улоги во дадена песна.
- Додадовме нов атрибут contribution_order кој овозмозможува пратење на точниот официјален редослед што го бараат издавачите/авторите со нивните улоги. Дозволено е повеќе артисти да имаат contribution_order=1 што би ги направило сите главни артисти (носители) на делото, иако само еден артист може да го објави.
Attachments (9)
- ERModel_v01.png (113.0 KB ) - added by 8 months ago.
- ERModel_v02.png (120.7 KB ) - added by 8 months ago.
- ERModel_v03.png (126.6 KB ) - added by 7 months ago.
- ERModel_v03.xml.png (126.1 KB ) - added by 6 months ago.
- ERModel_v04.xml.png (122.6 KB ) - added by 4 weeks ago.
- ERModel_v05.png (124.4 KB ) - added by 12 days ago.
- ERModel_v05.1.png (104.4 KB ) - added by 10 days ago.
- ERModel_v05.2.png (104.4 KB ) - added by 10 days ago.
- ERModel_v06.xml.png (139.7 KB ) - added by 13 hours ago.
Download all attachments as: .zip

