Datový model

SongsAndVotes

Projekty .NET

SSŠVT


Datový model k projektu SongsAndVotes

Analýza datového modelu ke každému release-u projektu SongsAndVotes je na samostatné stránce:


Analýza pro Release #3 – Sociální zasíťování

Implementací požadavků z Release-u #3 projektu SongsAndVotes bychom již měli dostat, pokud jde o funkcionalitu, celkem bohatou aplikaci. Uživatelé si budou moci nastavit svůj profil, definovat vlastní playlisty, hodnotit písničky a diskutovat o nich s jinými uživateli.

Aplikace SongsAndVotes bude v tomto release-u sloužit zároveň pro komunikaci mezi uživateli, podobně jako je tomu např. u appky Messenger, jakési "odnože" sociální sítě Facebook. Uživatelé si tedy budou moci mezi sebou posílat zprávy.

Do datového modelu projektu přibudou s tímto releasem tyto business objekty:

UserProfile
Uživatelský profil.
Playlist
Uživatelem definovaný playlist.
Vote
Hodnocení písničky pomocí hvězdiček.
Like
Reakce na písničku ("to se mi líbí", "nelíbí se mi" apod.).
Comment
Komentář k písničce.
Message
Zpráva poslaná jedním uživatelem jinému uživateli.

Relace User – UserProfile

Každý uživatel bude mít jeden uživatelský profil a každý uživatelský profil je vázán na jediného uživatele. Vztah mezi business objekty User a UserProfile je tedy 1:1 (one-to-one).

Business objekt User slouží hlavně pro zabezpečení aplikace (přihlašování, autorizace apod.), zatímco business objekt UserProfile reprezentuje uživatele, který už nějak s aplikací pracuje (už se do ní přihlásil, systém ho ověřil). Proto budeme pro ostatní vztahy mezi uživatelem a dalšími entitami (hodnocení, like-y, komentáře a zprávy) používat místo business objektu User raději business objekt UserProfile.


Relace UserProfile – Playlist – Song

Uživatel si může vytvářet vlastní playlisty. Každý uživatel může mít takových playlistů několik. Vazba mezi UserProfile a Playlist je tedy 1:N.

V playlistu jsou písničky. Jeden playlist obsahuje několik písniček. A naopak – jedna písnička může být ve více playlistech. Mezi business objekty Playlist a Song je tedy vztah M:N. Bude tedy dobré definovat ještě pomocný business objekt PlaylistSong.


Business objekty Vote a Like

Každý uživatel může vytvořit libovolné množství hodnocení (pro různé písničky). Mezi UserProfile a Vote je tedy vztah 1:N. Jedna písnička může mít několik hodnocení, tj. mohlo ji hodnotit více uživatelů. Mezi Song a Vote je rovněž vztah 1:N.

U business objektu Like je to velmi podobné jako u Vote. Mezi uživatelem (jeho profilem) a like-y je tedy vztah 1:N, totéž platí pro vztah mezi písničkou a jejími like-y.


Business objekt Comment

Business objekt Comment, který modeluje komentování písniček jednotlivými uživateli, je, co do vztahů s jinými business objekty, asi nejsložitějším objektem v našem projektu. Kromě toho, že se opět chová podobně jako business objekty Vote a Like, tedy že mezi UserProfile a Comment je vztah 1:N a tentýž vztah pozorujeme i mezi Song a Comment, tedy kromě tohoto chování tvoří objekty typu Comment ještě hierarchii.

Jeden komentář navazuje (může navazovat) na jiný komentář. Další komentář může být komentářem k prvnímu komentáři. A další komentář může být opět komentářem k tomu prvnímu. Tyto vzahy jsou velmi podobné komunikaci prostřednictvím elektronické pošty. Komentáře tedy tvoří posloupnosti a větve, jedná se o stromovou strukturu.

Ještě jinak si lze hierarchii představit jako rodokmen. Každý komentář má (může mít) jednoho rodiče. Rodič je předchozí komentář, na který tento komentář reaguje. A zároveň má (může mít) daný komentář několik dětí (navazujících komentářů). Jde o vztah business objektu k sobě samému, tedy o vztah mezi Comment a Comment a ten vztah je one-to-many (jeden rodič – několik dětí).


Business objekt Message

Business objekt Message, který má sloužit pro posílání zpráv mezi uživateli, je vazbami na jiné objekty trochu podobný jako business objekt Comment. Má rovněž hierarchii (vazba mezi Message a Message je 1:N), protože jedna zpráva může být např. odpovědí na jinou, předešlou zprávu.

Zároveň vztah mezi business objektem UserProfile a business objektem Message je 1:N, ale jsou to vlastně vztahy dva (vztah mezi nimi je "dvojnásobný"), protože jednou v tomto vztahu vystupuje uživatel jako odesílatel zprávy, a podruhé jako její příjemce.


ER-diagram

Datový model pro tento release zobrazuje následující ER-diagram: