== Дијаграм [[Image(BookSwap_Diagram.jpg)]] == Податочни побарувања === Ентитети 1. '''User''' – Ентитет за корисник со сите негови информации. • !UserId – примарен клуч, нумерички, задолжителен • Name – текстуален тип, задолжителен • Username – varchar тип, задолжителен • Password – varchar тип, задолжителен • Email – varchar тип, задолжителен • Location – текстуален тип, задолжителен 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 – време и датум, задолжителен • !EntityId – нумерички тип, задолжителен • 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. Апликацијата испраќа потсетници на корисниците кои позајмиле книги да ги вратат книгите пред истекување на договорениот рок. Една трансакција може да поттикне повеќе известувања, а едно известување доаѓа од една трансакција. Делумно учество од двете страни. • '''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. • '''Contains''' – Релација помеѓу Book и Wishlist. Една книга може да се содржи во една листа на желби, а во една листа на желби може да има повеќе книги. Делумно учество од страната на Book, и делумно од страната на Wishlist. • '''Contains''' – Релација помеѓу Book и Library. Една книга може да се содржи во една библиотека, а во една библиотека може да има повеќе книги. Делумно учество од страната на Book, и делумно од страната на Library. • '''Requests''' – Релација помеѓу Book и !BookRequest. Една книга може да е побарана во повеќе корисничи барања, а во едно барање може да се побарува само една книга. Делумно учество од страната на Book, целосно од страната на !BookRequest. === M-N Релации • '''Involves''' – Релација помеѓу Transaction и Book. Една книга може да е дел од повеќе кориснички трансакции, а во една трансакција може да се разменуваат повеќе книги. Делумно учество од страната на Transaction, и делумно од страната на Book. • '''Receives''' – Релација помеѓу User и Notification. Со оваа релација, апликацијата може да им испраќа на корисниците известувања за барања за книги, понуди за пријателства, пораки, и системски и апликациски надградби и информации. Еден корисник може да прима повеќе известувања, а едно известување може да биде пратено на повеќе корисници. Делумно учество од страната на User, целосно од страната на Notification.