== Дијаграм [[Image(erdiagram.png)]] == Податочни побарувања === Ентитети 1. '''User''' – Ентитет за корисник со сите негови информации. • !UserId – примарен клуч, нумерички, задолжителен • Name – varchar тип, задолжителен • Username – varchar тип, задолжителен • Password – varchar тип, задолжителен • Email – varchar тип, задолжителен • Location – varchar тип, задолжителен • Bio – varchar тип, опционален • Quote – varchar тип, опционален 2. '''Book''' – Ентитет за книга во системот • !BookId – примарен клуч, нумерички, задолжителен • BookISBN – нумерички тип, задолжителен • Title – char тип, задолжителен • Author – текстуален тип, задолжителен • Genre – текстуален тип, задолжителен • Language – текстуален тип, задолжителен • ImageURL – текстуален тип, опционален 3. '''Library''' – Ентитет за листата на физички книги која корисникот ги поседува • !InventoryId – примарен клуч, нумерички, задолжителен • Availability – текстуален тип, задолжителен • Condition – текстуален тип, задолжителен 4. '''Wishlist''' – Ентитет за листата на книги кои корисникот има желба да ги прочита и позајми • !WishId – примарен клуч, нумерички, задолжителен • Priority – текстуален тип, опционален 5. '''!BookRequest''' – Ентитет за барање на книга од корисник што истата ја поседува во нивната библиотека • !RequestId – примарен клуч, нумерички, задолжителен • !RequestStatus – текстуален тип, задолжителен • !RequestDate – датум, задолжителен 6. '''Transaction''' – Ентитет за размена на една или две книги помеѓу двајца корисници • !TransactionId – примарен клуч, нумерички тип, задолжителен • !BorrowDate – датум, задолжителен • !ReturnDate – датум, задолжителен • !BorrowDuration – нумерички тип, задолжителен • !SwapTransactionId – нумерички тип, опционален 7. '''Review''' – Ентитет за оставање на рејтинг и коментар на корисници по размена на книги • !ReviewId – примарен клуч, нумерички, задолжителен • Rating – нумерички тип, задолжителен • !ReviewerComment – текстуален тип, опционален • Date – датум, задолжителен 8. '''Message''' – Ентитет за испраќање и примање на пораки меѓу корисниците • !MessageId – примарен клуч, нумерички, задолжителен • !MessageContent – текстуален тип, задолжителен • Timestamp – време и датум, задолжителен 9. '''!FriendRequest''' – Ентитет за спријателување на корисниците на апликацијата • !FriendshipId – примарен клуч, нумерички, задолжителен • Status – текстуален тип, задолжителен 10. '''Report''' – Ентитет за пријавување на недолично однесување на корисниците • !ReportId – примарен клуч, нумерички, задолжителен • !ReportDate – датум, задолжителен • !ReportType – текстуален тип, задолжителен • Details – текстуален тип, опционален • !ReportedEntity – нумерички тип, задолжителен • !ReportStatus – текстуален тип, задолжителен 11. '''Notification''' – Ентитет за испраќање на известувања до корисниците • !NotificationId – примарен клуч, нумерички, задолжителен • Type – текстуален тип, задолжителен • Description – текстуален тип, задолжителен • Timestamp – време и датум, задолжителен • Status – текстуален тип, задолжителен === 1-1 Релации • '''Results''' – Релација помеѓу !BookRequest и Transaction, едно барање за книга резултира во една трансакција, и една трансакција настанува со едно одобрено барање за книга. Делумно учество од страната на !BookRequest, и целосно од страната на Transaction. • '''Changes''' – Релација помеѓу Transaction и Library, со тоа што една трансакција односно замена на книги ја менува состојбата на библиотеката на корисниците, така што книгата која корисникот ја дал некому станува ‘Not-Available’, и обратно, книгата што се вратила станува ‘Available’. Една трансакција ја менува состојбата на библиотеката, и една промена кај библиотеката настанува од една трансакција. Делумно учество од страната на Library, а целосно од страната на Transaction. • '''Prompts''' – Релација меѓу Transaction и Review, со тоа што по завршената трансакција корисникот мора да даде рејтинг за другиот корисник во замената. Една трансакција води кон рејтинг, и еден рејтинг настанува како последица од завршена трансакција. Делумно учество од страната на Review, а целосно од страната на Transaction. • '''Changes''' – Релација помеѓу !BookRequest и Library, со тоа што едно барање за книга го променува статусот на достапност на книгата во библиотеката, а една таква промена во библиотеката настанува со едно барање за книга. Делумно учество од страната на Library, а целосно од страната на BookRequest. === 1-N Релации • '''Owns''' – Релација помеѓу User и Library, со која корисникот ги наведува книгите што ги поседува во библиотеката на апликацијата. Еден корисник може да наведе дека поседува повеќе книги во библиотеката, а една библиотека има само еден единствен корисник. Делумно учество од страната на User, целосно од страната на Library. • '''Adds''' – Релација помеѓу User и Wishlist, со која корисникот ќе може да додава книги кои сака да ги позејми. Еден корисник може да додава повеќе книги во листата, а една листа припаѓа само на еден корисник. Делумно учество од страната на User, целосно од страната на Wishlist. • '''Gives''' – Релација помеѓу User и Review, со која корисникот дава рејтинг за корисникот со кој разменувал книги. Еден корисник може да даде повеќе рејтингзи, а еден рејтинг е даден од еден корисник. Делумно учество од страната на User, целосно од страната на Review. • '''Receives''' – Релација помеѓу User и Review, со која еден корисник прима рејтинг од корисникот со кој разменувал книги. Еден корисник може да прими повеќе рејтингзи, а еден рејтинг е примен од еден корисник. Делумно учество од страната на User, целосно од страната на Review. • '''Lends''' – Релација помеѓу User и Transaction, со која корисникот може да дава книга на друг корисник, еден корисник може да дава книги во повеќе трансакции, една трансакција е направена од еден корисник кој дава книга. Делумно учество од страната на User, целосно од страната на Transaction. • '''Borrows''' – Релација помеѓу User и Transaction, со која корисникот може да позајмува книга од друг корисник, еден корисник може да позајмува книги од повеќе трансакции, една трансакција е направена од еден корисник кој позајмува книга. Делумно учество од страната на User, целосно од страната на Transaction. • '''Prompts''' – Релација помеѓу Transaction и Notification. Апликацијата испраќа потсетници на корисниците кои позајмиле книги да ги вратат книгите пред истекување на договорениот рок. Една трансакција може да поттикне повеќе известувања, а едно известување доаѓа од една трансакција. Делумно учество од двете страни. • '''Prompts''' – Релација помеѓу !FriendRequest и Notification. Апликацијата испраќа известувања за добиени барања за пријателства. Едно барање може да поттикне повеќе известувања (самото барање, прифатено барање), а едно известување доаѓа од едно барање за пријателство. Делумно учество од двете страни. • '''Prompts''' – Релација помеѓу !BookRequest и Notification. Апликацијата испраќа известувања за добиени барања за книги. Едно барање може да поттикне повеќе известувања (самото барање, прифатено барање), а едно известување доаѓа од едно барање за книга. Делумно учество од двете страни. • '''Prompts''' – Релација помеѓу Message и Notification. Апликацијата испраќа известувања за примени пораки. Една порака може да поттикне повеќе известувања (самата порака, потсетник да се врати на пораката), а едно известување доаѓа од една порака. Делумно учество од двете страни. • '''Receives''' – Релација помеѓу User и Report, со која што корисниците можат да бидат пријавувани за недолично однесување. Еден корисник може да прима повеќе пријави, и една пријава е добиена од еден корисник. Делумно учество од страната на User, целосно од страната на Report. • '''Gives''' – Релација помеѓу User и Report, со која што корисниците можат да пријавуваат други за недолично однесување. Еден корисник може да направи повеќе пријави, и една пријава е направена од еден корисник. Делумно учество од страната на User, целосно од страната на Report. • '''Sends''' – Релација помеѓу User и !FriendRequest. Еден корисник може да испрати повеќе барања за пријателства, и едно барање е испратено од еден корисник. Делумно учество од страната на User, целосно од страната на !FriendRequest. • '''Receives''' – Релација помеѓу User и !FriendRequest. Еден корисник може да прими повеќе барања за пријателства, и едно барање е примено од еден корисник. Делумно учество од страната на User, целосно од страната на !FriendRequest. • '''Sends''' – Релација помеѓу User и Message. Еден корисник може да испрати повеќе пораки, и една порака е испратена од еден корисник. Делумно учество од страната на User, целосно од страната на Message. • '''Receives''' – Релација помеѓу User и Message. Еден корисник може да прими повеќе пораки, и една порака е примена од еден корисник. Делумно учество од страната на User, целосно од страната на Message. • '''Creates''' – Релација помеѓу User и !BookRequest. Еден корисник може да креира повеќе барања за книги, и едно барање е креирано од еден корисник. Делумно учество од страната на User, целосно од страната на !BookRequest. • '''Decides''' – Релација помеѓу User и !BookRequest. Еден корисник може да прифати или одбие повеќе барања за книга, а едно барање за книга може да биде прифатено или одбиено од еден корисник. Делумно учество од страната на User, целосно од страната на !BookRequest. • '''Contains''' – Релација помеѓу Book и Wishlist. Една книга може да се содржи во многу листи на желби, а во една листа на желби може да има една таква книга. Делумно учество од страната на Book, целосно од страната на Wishlist. • '''Contains''' – Релација помеѓу Book и Library. Една книга може да се содржи во многу библиотеки, а во една библиотека може да има една таква книга. Делумно учество од страната на Book, целосно од страната на Library. • '''Requests''' – Релација помеѓу Book и !BookRequest. Една книга може да е побарана во повеќе корисничи барања, а во едно барање може да се побарува само една книга. Делумно учество од страната на Book, целосно од страната на !BookRequest. === M-N Релации • '''Involves''' – Релација помеѓу Transaction и Book. Една книга може да е дел од повеќе кориснички трансакции, а во една трансакција може да се разменуваат повеќе книги. Делумно учество од страната на Transaction, и делумно од страната на Book. • '''Swap''' – Релација-јамка за Transaction. Една трансакција може да се поврзе со нула, една или повеќе други трансакции како дел од размената. Делумно учество од двете страни, бидејќи не сите трансакции се двострана размена. • '''Receives''' – Релација помеѓу User и Notification. Со оваа релација, апликацијата може да им испраќа на корисниците известувања за барања за книги, понуди за пријателства, пораки, и системски и апликациски надградби и информации. Еден корисник може да прима повеќе известувања, а едно известување може да биде пратено на повеќе корисници. Делумно учество од страната на User, целосно од страната на Notification.