| | 1 | |
| | 2 | == Relational diagram == |
| | 3 | |
| | 4 | [[Image(RelationalModel-VidiDB.svg, width=800)]] |
| | 5 | |
| | 6 | Напомена: Оригиналниот модел во Visual Paradigm формат е прикачен на оваа страница: [attachment:RelationalModel-VidiDB.vpp RelationalModel-VidiDB.vpp] |
| | 7 | |
| | 8 | == Descriptive documentation and argumentation == |
| | 9 | |
| | 10 | Во овој дел е детално објаснета логиката зад клучните сегменти на релациониот модел за системот Vidi. |
| | 11 | |
| | 12 | === 1. Хиерархија на содржина (Content, Movie, Series, Season, Episode) === |
| | 13 | Моделот користи специјализација за менаџирање на различните типови содржина. Ентитетот `Content` ги чува заедничките атрибути (наслов, опис, рејтинг), додека `Movie` и `Series` се посебни табели поврзани со него. |
| | 14 | * За сериите е имплементирана дополнителна хиерархија `Series -> Season -> Episode`, што овозможува прецизно следење на епизодите и нивното времетраење преку ентитетот `Watchable`. |
| | 15 | |
| | 16 | === 2. Систем за гледање и напредок Watchable, WatchHistory === |
| | 17 | За да избегнеме дуплирање на логиката за "филм" и "епизода", воведен е апстрактниот ентитет `Watchable`. |
| | 18 | * И `Movie` и `Episode` се поврзани со `Watchable`. Ова овозможува `WatchHistory` и `Watchlist` да се однесуваат на било кој медиумски елемент униформно, следејќи го процентот на изгледаност (`Progress_percentage`) без разлика на типот на содржината. |
| | 19 | |
| | 20 | === 3. Претплати и пристап (Subscription, User_Subscription, Devices) === |
| | 21 | Моделот поддржува комплексен систем на претплати: |
| | 22 | * `Subscription` ги дефинира плановите (цена, квалитет, број на уреди). |
| | 23 | * `User_Subscription` е врска која го следи времетраењето на претплатата на корисникот и дали истата автоматски се обновува. |
| | 24 | * Табелата `Devices` е поврзана со претплатата за да се осигура дека корисникот не го надминува лимитот на дозволени уреди (`MaxDevices`) дефиниран во неговиот пакет. |
| | 25 | |
| | 26 | === 4. Класификација и метаподатоци (Genre, Language, Artist) === |
| | 27 | За ефикасно пребарување, користени се "many-to-many" врски преку посреднички табели: |
| | 28 | * `Content_Genre` и `Content_Language` овозможуваат еден филм или серија да припаѓаат на повеќе жанрови и да бидат достапни на повеќе јазици. |
| | 29 | * `Artist_Content` го поврзува содржината со актерите и режисерите, каде преку `RoleType` во табелата `Artist` се дефинира нивната функција во проектот. |
| | 30 | |
| | 31 | === 5. Интеракција со корисници (Rating, Review) === |
| | 32 | Системот ги раздвојува оценките (`Rating`) од текстуалните рецензии (`Review`). Ова овозможува корисникот да остави брза нумеричка оцена која лесно се агрегира за пресметување на просечен рејтинг, но и детално мислење со датум на објава. |