wiki:ERModel

Version 35 (modified by 231136, 13 hours ago) ( diff )

--

Концептуален дизајн - ЕР Дијаграм и податочни побарувања

ЕР Дијаграм

Податочни барања

Ентитети

  1. 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)

  1. Non_Admin_Users – ентитет кој чува податоци за слушателите и артистите
    • user_id* (bigint)
  1. Admins – ентитет кој чува податоци за администраторот
    • user_id* (bigint)
  1. Listeners – ентитет кој чува податоци за слушателите на музика (секојдневен корисник)
    • user_id* (bigint)
  1. Musical_Entities - ентитет кој чува податоци за сите форми на објавена музика (Песна и Албум)
    • id (bigint)
    • title (text, not null)
    • genre (text, not null)
    • release_date (date, not null)
  1. Songs – ентитет кој чува податоци за песните
    • link (text, not null)
    • id* (bigint)
  1. Artists – ентитет кој чува податоци за артистите (креатори на музика)
    • user_id* (bigint)
  1. Events – ентитет кој чува податоци за настаните на коишто настапуваат артистите
    • event_id (bigint)
    • name (text, not null)
    • location (text, not null)
    • venue (text, not null)
    • date (date, not null)
    • time (time, not null)
  1. Albums – ентитет кој чува податоци за албумите објавени од артистите
    • id* (bigint)
  1. Playlists – ентитет кој чува податоци за плејлистите креирани од корисниците
    • playlist_id (bigint)
    • cover (text)
    • name (text, not null)
  1. Listens - ентитет кој чува податоци за секое слушање од страна на корисник
    • listener_id* (bigint)
    • song_id* (bigint)
    • timestamp (timestamp)
  1. Contributions - ентитет кој чува податоци за секој придонес на артист во дадена песна или албум
    • artist_id* (bigint)
    • musical_entity_id* (bigint)
    • contribution_order (int)
  1. Roles - ентитет кој податоци за улоги кој може еден артист да ги има во некој придонес
    • role_id (bigint)
    • contribution_id* (bigint)

Релации

  1. follows (Non-Admin Users ↔ Non-Admin Users N:M)

Корисниците можат да следат други корисници.

  1. performs_at (Events ↔ Artists, N:M)

Артистите можат да настапуваат на настани.

  1. creates_event (Users ↔ Events, 1:N)

Корисник може да создава нови настани.

  1. likes (Listeners ↔ Musical_Entities, N:M)

Корисниците можат да ги додадат песните/албумите во листа на омилени („favourites“).

  1. reviews (Listeners ↔ Musical_Entities, N:M)

Корисниците можат да ги оценуваат песните/албумите со оценка (1-5) и коментар.

  1. creates_playlist (Listeners ↔ Playlists, 1:N)

Корисниците можат да креираат листи со песни.

  1. saves (Listeners ↔ Playlists, N:M)

Корисниците можат да зачувуваат листи со песни креирани од други корисници.

  1. is_in (Songs ↔ Playlists, N:M)

Песните можат да се наоѓаат во листи со песни креирани од корисниците.

  1. has (Albums ↔ Songs, 1:N)

Еден албум содржи песни.

  1. releases (Artists ↔ Musical_Entities, 1:N)

Артист може да објави песни/албуми.

  1. makes (Listeners ↔ Listens, 1:N)

Корисниците можат да слушаат песни и со тоа создаваат запис за едно ново слушање

  1. refers_to (Songs ↔ Listens, 1:N)

Кога една песна е слушана се создава запис кој се однесува на таа конкретна песна

  1. credited_in (Artists ↔ Contributions, 1:N)

Се чува кој артист има некаков придонес

  1. has_credit (Musical_Entities ↔ Contributions, 1:N)

Се чува која песна/албум има некаков придонес од артист

  1. performs (Roles ↔ Contributions, M:N)

Се чува кои улоги ги има артист во некој придонес

Историјат

Верзија 1 - Почетна верзија

Верзија 2

  • Администраторот и артистите можат да додаваат настани.
  • Песните и албумите наследуваат од заедничка суперкласа - MusicalEntity
  • Артистите можат да бидат дел од песни/албуми, и притоа да имаат различни улоги.
  • Албумите можат да бидат објавени само од еден артист.

Верзија 3

  • За секој настан дополнително се чуваат име, датум и време
  • За релацијата listens_to наместо број на слушања, се чува timestamp од секое слушање со цел едно слушање на песната да се чува како посебен настан

Верзија 4

  • Веќе немаме две одделни релации за создавач на настан, една кон администратор и една кон артист, туку имаме единствена релација со генералниот корисник

Верзија 5

  • Релацијата is_part_of е преименувана во contributes_to, што понатаму во ddl ќе биде мапирано во табелата artist_contribution, што е по конвенција што ја користиме и низ остатокот од моделирањето.
  • Listens релацијата е моделирана како слаб ентитет со парцијален клуч timestamp.

Верзија 6

  • Релацијата contributes_to ја претворивме во слаб ентитет Contributions кој има релација со Artists, Musical_Entities, но и новосоздадената Roles табела. Ова овозможува еден артист да има повеќе улоги во дадена песна.
  • Додадовме нов атрибут contribution_order кој овозмозможува пратење на точниот официјален редослед што го бараат издавачите/авторите со нивните улоги. Дозволено е повеќе артисти да имаат contribution_order=1 што би ги направило сите главни артисти (носители) на делото, иако само еден артист може да го објави.

Attachments (9)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.