== Релационен модел [[Image(RelationalModel-MarketNET.svg)]] == Опис Основата на системот е ентитетот **AppUser**, кој ги претставува сите корисници во системот. Секој корисник може да има повеќе адреси (**UserAddress**), да објавува и купува производи (Product) и да комуницира со други корисници преку chat систем (**Conversation** и **Message**). Производите(Product) се организирани преку **Category** - која може да биде главна категорија или пак поткатерија(има parent category). Секоја категорија си има посебни атрибути кои се специфични само за неа и се чуваат во табела(**CategoryAttributes**). Во табелата **Product** се чуваат основните атрибути кои се заеднички за сите продукти, а атрибутите кои не се заеднички т.е. се специфични за соодветната категорија во која припаѓа продуктот се чуваат во посебна табела(**ProductAttributes**). За секој производ се чуваат и дополнителни информации како слики (**ProductImages**), статистики (**ProductStats**) и прегледи (**ProductViews**). Секој корисник кој сака да стане продавач(seller) мора да се верифицира и да плати соодветен пакет. Табелата **Package** ги дефинира сите достапни пакети што платформата ги нуди. Секој пакет има јасно дефинирани карактеристики како цена, валута, времетраење и ниво на видливост (BASIC, STANDARD, PREMIUM). Табелата **UserPackages** чува информации за тоа кој пакет е активен кај одреден продавач(или порано бил), како и временскиот период на неговата важност (start_date и end_date). Корисникот може да додадава продукти во сопствена листа favorites кои се чуваат во табелата **Favorites**. Системот поддржува e-commerce функционалности преку додавање на производи кој сакаме да ги купиме во кошничка(табелата **Cart**) а соодветните продукти се чуваат во табелата **CartItems**. Кога корисникот ќе реши дека сака да ги купи производите ставени во cart, автоматски се креира нарачка(во табелата **Order**), a сите Cart Items од соодветната cart се префрлаат во **OrderItems** - табела која трајно ги чува сите продукти од секоја нарачка. Плаќањата се чуваат во табелата **Payments**, но едно наше плаќање значи плаќање на сите продукти од цела кошничка наеднаш. Потребно е парите да се распределат на секој seller соодветно. Посебните трансакции кон секој seller се чуваат во табелата **Transaction**. Сите информации поврзани со плаќања исто така се чуваат трајно. Во Payments се чуваат и плаќањата на UserPackages. Чуваме курири т.е. карга со кои соработуваме во табелата **Carriers**. Доставите на нарачки се чуваат во табелата **Shipment** која чува информации за соодвното карго, соодветната нарачка и соодветната адреса UserAddress која корисникот ја одбрал за доставата. Корисниците можат да оставаат review за продукт и продавач само после извршена нарачка за соодветниот продукт или било кој продукт од соодветниот продавач. Тие се чуваат во табелата **Reviews**. Табелата **Badge** ги дефинира сите можни награди/ознаки што може да ги добие еден корисник. Ги добива според reviews, време активно на апликацијата и број на продажби. Добиените награди се чуваат во табелата **UserBadges**. Табелата **SavedSearches** служи за зачувување на критериуми за пребарување дефинирани од корисникот со цел да добие извесување веднаш кога ќе се појави продукт според неговите барања. Преку табелата **SavedSearchesAttributes** системот поддржува и специфични филтри базирани на атрибути на категоријата (пр: боја, бренд, големина), што овозможува многу попрецизно пребарување. Табелата **Notifications** се користи за испраќање автоматски известувања до корисниците. Овие известувања може да бидат поврзани со различни настани во системот, како: * појава на нов оглас што одговара на зачувано пребарување * промени кај омилени (favorites) производи * пораки од други корисници * ажурирање на статус на нарачка или достава.