| Version 2 (modified by , 11 hours ago) ( diff ) |
|---|
Релационен модел
ЕР Дијаграм
Дополнителен Опис
- Табелите
RolesиPermissionsслужат за дефинирање на сите достапни улоги и пермисии во системот, соодветно, додекаUser_RolesиRole_Permissionsги чуваат сите ролји доделени на корисниците и сите пермисии доделени на ролјите, соодветно.Resource_Sharesслужи за чување некои отстапки од овие правила, на пример доколку Корисник А сподели приватна плејлиста со Корисник Б, таа информација ќе се чува во оваа табела и иако плејлистата е приватна Корисник Б сепак ќе има пристап до неа.
- Во табелите
Songs,AlbumsиResource_Sharesимаме подмножества на foreign keys коишто се nullable, но доколку сите од нив се null тогаш тој запис во табелата не би правел смисла. Станува збор за следните подмножества:Songs(published_by_artist_id, published_by_label_admin_id)[*] - информација за кој ја објавил песнатаAlbums(published_by_artist_id, published_by_label_admin_id)- информација за кој го објавил албумотResource_Shares(song_id, playlist_id, album_id)- ресурс на кој се однесува дадената дозволаResource_Shares(user_id, role_id)- дали улогата ја додаваме на конкретен корисник или на одредена ролја
За секое од наведените подмножества има меѓусебна исклучивост, поточно точно еден од клучевите мора да биде non-null. Ова не можеме да го опфатиме во релациониот модел, но истото ќе биде опфатено понатаму во DDL скриптата.
[*] Во дијаграмот има грешка при именување на вториот атрибут (Label_Adminsid треба да биде published_by_label_admin_id).
- Чуваме табели
Playback_SessionsиSong_Streams. Причината за ова е бидејќиPlayback_Sessionsги чува сите сесии каде некој корисник слушал некоја песна, макар и да ја слушал само неколку секунди или ја прескокнал додека барал некоја друга. Јасно е дека доколку ова го чуваме како едно слушање на песната ќе води до многу инфлаторни податоци, па затоа ќе поставиме одреден праг кој треба да се постигне за една сесија да се смета за валидно слушање (пр. 30 секунди). За секоја од овие валидни сесии при надминување на прагот ќе следи запис воSong_Streamsтабелата. Оваа табела намерно е денормализирана (содржи редундантни податоци заstreamed_at,song_idкои би можеле да се земат и со join прекуplayback_session_id) со цел сите аналитики околу бројот на слушања да се прават директно на оваа табела бидејќи нема да ги содржи оние записи коишто не ни се од интерес.
Song_Relationshipsтабелата служи за опфаќање на различни изданија од песни - нешто како Remix, Cover, Only Instrumental и слично, што е честа практика во индустријата. Ова би се постигнало преку додавање на нов запис воSongsсо новото издание на песната, а потоа додавање на соодветен запис воSong_Relationships, кадеrelationship_typeја опишува релацијата за која станува збор, пример некој од горенаведените термини.
Attachments (1)
- RelationalModel.jpg (209.4 KB ) - added by 11 hours ago.
Download all attachments as: .zip
Note:
See TracWiki
for help on using the wiki.

