wiki:ERModel

Актуелна верзија

Дијаграм

Податочни побарувања

Целосниот DDL е на RelationalDesign Ентитети:

  • CONTINENTS: Овој ентитет се користи за претставување на потекло на секој корисник заедно со ентитетот COUNTRY
    • Кандидат клучеви: continent_code
    • Атрибути:
      • continent_code - код на континент, тип: char(2)
      • continent_name - цело име на континентот, тип: varchar(255)
  • COUNTRY
    • Кандидат клучеви: country_code
    • Атрибути:
      • country_code - код на државата, тип: char
      • iso3 - код на државата според iso3, тип: char
      • country_name - име на државата, тип: varchar
      • country_full_name - цело име на државата, тип: varchar
      • country_number - број на државата, тип: char
  • BUZZER: Овој ентитет ги претставува корисниците на апликацијата.
    • Кандидат клучеви: user_id
    • Атрибути:
      • user_id - идентификациски код, тип: bigserial
      • user_name - корисничко име, тип: varchar
      • user_password - корисничка лозинка, тип: varchar
      • user_email - електронска пошта на корисникот, тип: varchar
      • user_image - кориснички аватар, тип: bytea
  • ARTIST: Овој ентитет е специјализација на ентитетот USER, ги претставува уметниците.
    • Кандидат клучеви: наследува клуч од USER.
    • Атрибути:
      • artist_info - информации за уметникот/биографија, тип: text
  • LISTENER: Овој ентитет е специјализација на ентитетот USER и ги претставува корисниците - слушатели.
    • Кандидат клучеви: наследува клуч од USER.
    • Атрибути:
      • Не се чуваат дополнителни атрибути за овој ентитет.
  • BUZZEVENT: Овој ентитет е „супер класа“ на ентитетите CONCERT и LIVESTREAM.
    • Кандидат клучеви: event_id
    • Атрибути:
      • event_id - идентификациски код, тип: bigserial
      • event_name - име на настанот, тип: varchar
  • LIVESTREAM: Овој ентитет се однесува на livestreams кои уметниците може да ги прават на платформата.
    • Кандидат клучеви: наследува клуч од EVENT.
    • Атрибути:
      • livestream_start - почеток на преносот во живо, тип: timestamptz
      • livestream_end - време кога завршил преносот, тип: timestamptz
  • CONCERT: Во овој ентитет се чуваат концертите кои ги одржува уметникот.
    • Кандидат клучеви: наследува клуч од EVENT.
    • Атрибути:
      • concert_location - место на одржување, тип: varchar
      • concert_timeDate - датум и време на одржување, тип: timestamptz
  • CREATION: Овој ентитет претставува дело кое уметникот може да го објави.
    • Кандидат клучеви: creation_id
    • Атрибути:
      • creation_id - идентификациски код, тип: bigserial
      • creation_date - датум на објавување, тип: date
      • creation_duration - траење на делото, тип: int
  • SONG: Овој ентитет е специјализација на CREATION и чува песни.
    • Кандидат клучеви: наследува клуч од CREATION.
    • Атрибути:
      • lyrics - текст на песната, тип: text
      • song_title - име на песната, тип: varchar
      • song_file - патека до датотеката на песната, тип: varchar
  • ALBUM: Овој ентитет го претставува секој албум.
    • Кандидат клучеви: album_id
    • Атрибути:
      • album_id - идентификациски код, тип: bigserial
      • album_title - име на албумот, тип: varchar
      • album_date - датум на издавање на албумот, тип: timestamp
  • PLAYLIST: Овој ентитет ќе чува податоци за плејлиста.
    • Кандидат клучеви: playlist_id
    • Атрибути:
      • playlist_id - идентификациски код, тип: bigserial
      • playlist_name - име на албумот, тип: varchar
      • playlist_description - опис на плејлистата, тип: text
      • playlist_img - слика на плејлистата, тип:
  • EPISODE: Овој ентитет е специјализација на CREATION и се однесува на епизоди кои се дел од некој подкаст.
    • Кандидат клучеви: наследува клуч од RELEASE.
    • Атрибути:
      • episode_no - број на епизода, тип: bigserial
      • episode_description - опис на епизодата, тип: text
      • episode_title - име на епизодата, тип: varchar
      • episode_file - патека до датотеката на епизодата, тип: varchar
  • PODCAST: Овој ентитет ќе чува податоци за подкасти.
    • Кандидат клучеви: podcast_id
    • Атрибути:
      • podcast_id - идентификациски код, тип: bigserial
      • podcast_title - име на подкастот, тип: varchar
  • GENRE: Овој ентитет ќе чува жанрови.
    • Кандидат клучеви: genre_id
    • Атрибути:
      • genre_id - идентификациски код, тип: bigserial
      • genre_name - име на жанрот, тип: varchar
  • CATEGORY: Овој ентитет ќе чува категории на подкасти.
    • Кандидат клучеви: category_id
    • Атрибути:
      • category_id - идентификациски код, тип: bigserial
      • category_name - име на категоријата, тип: varchar
  • BUZZ_COMMENT: Во овој ентитет ќе се чуваат сите оценувања и коментари за делата.
    • Кандидат клучеви: comment_id
    • Атрибути:
      • comment_id - идентификациски код, тип: bigserial
      • comment_timestamp - коментар, тип: timestamp
      • comment_rating - оцена, тип: numeric(2,1)
      • comment_text - време на оценување, тип: varchar
  • REACTION: Овој ентитет ќе чува реакции со кои гледач на LIVESTREAM ќе може да реагира.
    • Кандидат клучеви: reaction_id
    • Атрибути:
      • reaction_id - идентификациски код, тип: bigserial
      • reaction_name - име на реакцијата, тип: varchar
      • reaction_img - слика/емотикон за реакцијата, тип: text
  • SOCIAL_MEDIA: Во овој ентитет се чуваат општи информации за социјални медиуми.
    • Кандидат клучеви: sm_name
    • Атрибути:
      • sm_name - име а воедни и примарен клуч на социјалниот медиум, тип: varchar
      • sm_logo - лого на социјалниот медиум, тип: text
  • RECORD_LABEL: Во овој ентитет ќе се чуваат податоци за сите издавачки куќи кои ги продуцираат/издаваат песните или албумите.
    • Кандидат клучеви: rlabel_id
    • Атрибути:
      • rlabel_id - идентификациски код, тип: bigserial
      • rlabel_name - име на издавачката куќа, тип: varchar

Релации:

  • PART_OF_ALBUM: Оваа релација е помеѓу ентитетите SONG и ALBUM. Повеќе песни може да бидат дел од еден албум и еден албум може да содржи повеќе песни. 1-to-many релација. Ентитетот ALBUM е со целосно учество во релацијата, затоа што не може еден албум да не содржи песни.
  • CREATED_BY: Оваа релација е помеѓу ентитетите ARTIST и CREATION. Се однесува на издавање на дело од еден уметник. Во релацијата еден уметник може да издаде повеќе дела, а едно дело може да биде издадено само од еден уметник. CREATED_BY е со целосно учество во релацијата затоа што не може да има дела кои не се издадени од некој уметник.
  • FEATURES: Оваа релација е помеѓу ентитетите ARTIST и CREATION. Повеќе уметници може да издадат повеќе дела. Оваа релација се однесува на оние дела кои се издадени како соработка помеѓу повеќе уметници/артисти. Оваа релација е помеѓу ARTIST и CREATION затоа што може и албум и една песна и епизода да биде издадена од двајца или повеќе уметници.
  • COMMENTED_BY: Оваа релација е помеѓу ентитетите BUZZER и BUZZ_COMMENT. Еден корисник може да направи повеќе коментари на едно дело, а еден коментар може да биде направен од само еден корисник. ентитетот BUZZ_COMMENT е со целосно учество.
  • COMMENTED_ON: Оваа релација е помеѓу ентитетите BUZZ_COMMENT и CREATION. Еден коментар може да биде само на едно дело а едно дело може да има повеќе коментари. Ентитетот BUZZ_COMMENT е со целосно учество во релацијата.
  • CREATES_PLAYLIST: Оваа релација е помеѓу ентитетите LISTENER и PLAYLIST. Еден слушател може да креира повеќе плејлисти. Ентитетот PLAYLIST е со целосно учество во релацијата затоа што секоја плејлиста мора да биде креирана од некој слушател.
  • CONTAINS: Оваа релација е помеѓу ентитетите SONG и PLAYLIST. Повеќе плејлисти може да содржат повеќе песни. Ниеден од ентитетите не е со целосно учество затоа што песните може да не припаѓаат во некоја плејлиста и една плејлиста може да биде празна.
  • CREATES_EVENT: Оваа релација е помеѓу ентитетите ARTIST и EVENT. Повеќе уметници може да креираат повеќе настани. Ентитетот EVENT е со задолжително учество, затоа што еден настан мора да биде креиран од некој уметник.
  • ATTENDS: Оваа релација е помеѓу ентитетите LISTENER и EVENT. Повеќе слушатели може да присуствуваат на еден настан и еден слушател може да присуствува на повеќе настани. Ниеден од ентитетите не е со целосно учество, затоа што на некој настан може да не присуствува никој, и еден слушател може да не присуствува на ниеден настан.
  • IS_OF_CATEGORY: Оваа релација е помеѓу ентитетите PODCAST и CATEGORY. Еден подкаст може да биде дел на повеќе категории, и во една категорија може да има повеќе подкасти. Ентитетот PODCAST е со целосно учество во релацијата затоа што мора да припаѓа на некоја категорија.
  • IS_OF_GENRE: Оваа релација е помеѓу ентитетите SONG и GENRE. Еден жанр може да содржи повеќе песни, а една песна може да биде дел само од еден жанр. Ентитетот SONG е со целосно учество затоа што една песна мора да припаѓа на некој жанр.
  • REACTS_WITH: Оваа релација е помеѓу ентитетите LISTENER и REACTION. Се однесува на давање реакции на LIVESTREAM. Еден слушател може да направи повеќе реакции, а една реакција може да биде дадена само од еден слушател. Ентитетот REACTION е со целосно учество затоа што мора секоја реакција да биде дадена од некој слушател.
  • GIVEN_TO: Оваа релација е помеѓу ентитетите LIVESTREAM и REACTION. Еден livestream може да добие повеќе реакции и една реакција може да биде дадена на повеќе livestreams. Ниеден ентитет не е со целосно учество.
  • LISTENS_TO: Оваа релација е помеѓу ентитетите LISTENER и RELEASE. Еден слушател може да слуша повеќе дела и едно дело може да биде слушано од повеќе слушатели. Ниеден ентитет не е со целосно учество, еден слушател може да нема слушнато ниту една песна а една песна може да не биде слушана ниту еднаш од ниеден слушател.
  • PREFERS_CATEGORY: Оваа релација е помеѓу ентитетите CATEGORY и LISTENER. Еден слушател може да преферира повеќе категории и една категорија може да биде преферирана од повеќе слушатели. Со неа всушност се чуваат податоци за тоа кој слушател кои категории ги преферира. Овие податоци може да се искористат за предложување на подкасти на секој слушател соодветно на нивниот вкус. Ниеден ентитет не е со целосно учество.
    • Атрибути:
      • pref_ctg_timestamp - време кога некој слушател ја додал некоја категорија во својата листа на преференци, тип: timestamptz
  • PREFERS_GENRE: Оваа релација е помеѓу ентитетите GENRE и LISTENER. Еден слушател може да преферира повеќе жанрови и еден жанр може да биде префериран од повеќе слушатели. Во неа се чуваат податоци за тоа кој слушател кои жанрови на песни ги преферира. Овие податоци може да се искористат за предложување на песни на секој слушател соодветно нивниот вкус. Ниеден ентитет не е со целосно учество.
    • Атрибути:
      • pref_gen_timestamp - односно време кога некој слушател го додал жанрот во својата листа на преференци, тип: timestamptz
  • FOLLOWS: Оваа релација е помеѓу ентитетите LISTENER и ARTIST. Еден слушател може да „следи“ повеќе уметници и еден уметник може да биде „следен“ од повеќе слушатели. Ниеден ентитет не е со целосно учество.
    • Атрибути:
      • receive_notification - дали слушателот сака да добива нотификации за нови дела од тој уметник, тип: boolean.
  • HAS_ACCOUNT: Оваа релација е помеѓу ентитетите ARTIST и SOCIAL_MEDIA. Еден уметник може да има профили на повеќе социјални медиуми и еден социјален медиум може да има профил со username од еден уметник. Ниеден ентитет не е со целосно учество.
    • Атрибути:
      • sm_username - корисничко име на уметникот на таа платформа.
  • PART_OF_PODCAST: Оваа релација е помеѓу ентитетите PODCAST и EPISODE. Една епизода може да припаѓа на еден подкаст и еден подкаст може да содржи повеќе епизоди. Ентитетот EPISODE е со целосно учество затоа што не може епизодата да постои сама, мора да биде дел од некој подкаст.
  • USER_FROM: Оваа релација е помеѓу BUZZER и COUNTRY. Ентитетот COUNTRY е со целосно учество во релацијата.
  • RLABEL_ALBUM_RELEASE: Оваа релација е помеѓу ентитетите ALBUM и RECORD_LABEL. Ги чува сите албуми издадени од некоја издавачка куќа. Ентитетот RECORD_LABEL е со целосно учество во релацијата. Една издавачка куќа може да издаде повеќе албуми, а еден албум може да биде издаден само од една издавачка куќа.
  • RLABEL_SONG_RELEASE: Оваа релација е помеѓу ентитетите SONG и RECORD_LABEL. Ги чува сите песни (singles) издадени од некоја издавачка куќа. Ентитетоте RECORD_LABEL е со целосно учество во релацијата. Една издавачка куќа може да издаде повеќе песни, а една песна може да биде издадена од една издавачка куќа.
  • COUNTRY_CONTINENT: Оваа релација е помеѓу ентитетите CONTINENT и COUNTRY. Една држава може да биде само од еден континент и еден континент може да има повеќе држави во себе. COUNTRY е со задолжително учество во релацијата.
  • ALBUM_CREATED_BY: Оваа релација е помеѓу ентитетите ARTIST и ALBUM. Еден артист може да креира повеќе албуми, а еден албум може да биде од само еден артист. Ентитетот ALBUM е со целосно учество во релацијата.
  • PODCAST_CREATED_BY: Оваа релација е помеѓу ентитетите ARTIST и PODCAST. Еден артист може да креира повеќе подкасти, а еден подкаст може да биде од само еден артист. Ентитетот PODCAST е со целосно учество во релацијата.
  • BUZZER_SESSION: Оваа релација е помеѓу ентитетот BUZZER и самиот себеси. Во неа ќе се чуваат сесиите кои корисникот ги има на апликацијата.
    • Атрибути:
      • session_uuid - идентификациски код на сесијата.

Историјат:

  1. Верзија 1:
    • Додадени се почетните ентитети и почнато е додавање на некои релации.
  2. Верзија 2:
    • Во оваа верзија почнавме од почеток во TerraER. Можеби треба да биде насловена верзија 1, но поради транспарентност ми се прикачени и двете почетни верзии.
  3. Верзија 3:
    • Додадени се уште ентитети и релации, недостигаат атрибути.
  4. Верзија 4:
    • Додадени се сите атрибути, одберени се клучеви за секој ентитет. Направена е мала промена за релацијата CREATES_PLAYLIST, ентитетот PLAYLIST го ставивме да биде со целосно учество во релацијата. Export-от од TerraER беше преголем фајл за да го прикачам па направив screenshot.
  5. Верзија 5:
    • Додаден е ентитет RECORD_LABEL и има поправка на кардиналност во релацијата REACTS_WITH.
  6. Верзија 6:
    • Додадени атрибути на ентитетите SONG и EPISODE за дадотека на секој ентитет. Додаден нов ентитет - COUNTRY. Додаден атрибут на релацијата помеѓу ALBUM и SONG. Додаден атрибут на ентитетот ALBUM - album_date. Додадена е релација помеѓу COUNTRY и ARTIST.
  7. Верзија 7: Променети се имињата на некои ентитети и релации.
    • REVIEW во COMMENT
    • REVIEWS во COMMENTED_ON
    • RELEASE во CREATION
    • RELEASED во CREATED_BY
    • USER во BUZZER
    • EVENT во BUZZEVENT
  • Истотака променета е насоката на задолжтелната врска од страната на RECORD_LABEL до АLBUM и SONG.
  1. Верзија 8:

Променет е дијаграмот да соодветствува на оној од DBeaver во RelationalDesign,

  • Додаден ентитет CONTINENTS и соодветните релации.
  • Додадени релации помеѓу Album, Podcast и Artist.
  • Модифицирани релациите has_account и country да се во релација со ентитетот Buzzer а не Artist
  • Додадени атрибути кои недостигаа.
  • Слика од Верзијата 8
  1. Верзија 9:

Додадена е релација BUZZER_SESSION.

Last modified 3 months ago Last modified on 02/21/24 16:09:29

Attachments (18)

Note: See TracWiki for help on using the wiki.