== ЕР Дијаграм [[Image(DistributorApp_DB_Scheme_ver2.png​)]] == Податочни побарувања === Ентитети **ARTICLE** - ентитет кој чува податоци за артикли достапни во дистрибуцијата. * article_id bigint, примарен клуч * article_name string, задолжителен * article_image string, задолжителен * article_weight int, задолжителен * article_price decimal, задолжителен **ARTICLE_UNIT** - ентитет кој чува податоци за единки од артикл. * unit_id int, примарен клуч * unit_expiration_date date, задолжителен * unit_serial_number string, задолжителен * unit_batch_number string, задолжителен * unit_manufacture_date date, задолжителен * unit_cost_price decimal, задолжителен **CATEGORY** - ентитет кој чува податоци за категории на артикли. * category_id int, примарен клуч * category_name string, задолжителен **CITY** - ентитет кој чува податоци за градови. * city_id int, примарен клуч * city_name string, задолжителен **CUSTOMER** - ентитет кој чува податоци за потрошувачи (специјализација од USER). * customer_EDB int, задолжителен * customer_company_name string, задолжителен * customer_address string, задолжителен * customer_open_time time, задолжителен * customer_close_time time, задолжителен * customer_representative_image string, задолжителен **DELIVERY** - ентитет кој чува податоци за достави. * delivery_id int, примарен клуч * delivery_status enum, задолжителен * delivery_date_created date, задолжителен * delivery_date date, задолжителен **DRIVER** - ентитет кој ги претставува корисниците - возачи (специјализација од USER). **MANAGER** - ентитет кој ги претставува корисниците - менаџери (специјализација од USER). **ORDERS** - ентитет кој чува податоци за нарачки направени од некој потрошувач. * order_id bigint, примарен клуч * order_date date, задолжителен * order_status enum, задолжителен * order_sum int, задолжителен * order_fulfillment_date timestamp **PRO_FORMA** - ентитет кој чува податоци за про-фактури. * pro_forma_id bigint, примарен клуч * pro_forma_status enum, задолжителен * pro_forma_deadline date, задолжителен * pro_forma_date_created date, задолжителен **USERS** - ентитет кој чува податоци за корисниците. * user_id bigint, примарен клуч * user_name string, задолжителен * user_surname string, задолжителен * user_email string, задолжителен * user_mobile string, задолжителен **VEHICLE** - ентитет кој чува податоци за возила со кои се вршат достави. * vehicle_id int, примарен клуч * vehicle_carry_weight int, задолжителен * vehicle_service_interval int, задолжителен * vehicle_kilometers int, задолжителен * vehicle_last_service date **WAREHOUSE** - ентитет кој чува податоци за магацини на дистрибуцијата. * warehouse_id int, примарен клуч * warehouse_address string, задолжителен === Релации **belongs_to** - релација помеѓу WAREHOUSE и VEHICLE која означува дека едно возило припаѓа на некој магацин. Едно возило мора да припаѓа само на еден магацин, а еден магацин може да има 0 или повеќе возила. **creates_order** - релација помеѓу CUSTOMER и ORDERS која означува креирање на една нарачка од страна на потрошувач. Еден потрошувач може да има 0 или повеќе нарачки а една нарачка мора да биде направена од еден потрошувач. **delivers** - релација помеѓу DELIVERY и VEHICLE која означува кое возило ја врши одредена достава. Една достава мора да биде извршена од едно возило, а едно возило може да има извршено 0 или повеќе достави. **drives** - релација помеѓу DRIVER и VEHICLE која означува кој возач одговара и управува со кое возило. Секој возач мора да има едно возило и секое возило мора да биде управувано од еден возач. **from_category** - релација помеѓу CATEGORY и ARTICLE која означува од која категорија е еден артикл. Еден артикл мора да има една категорија, а една категорија може да има 0 или повеќе артикли асоцирани со неа. **generates** - релација помеѓу ORDERS и PRO_FORMA која означува од која нарачка е одредена про-фактура. Една про-фактура мора да биде асоцирана со една нарачка, а една нарачка може да има 0 или 1 про-фактура. **in_stock** - релација помеѓу ARTICLE_UNIT и WAREHOUSE која означува една единка од некој артикл во кој магацин се наоѓа. Една единка мора да припаѓа на еден а може и на повеќе магацини, а еден магацин може да има 0 или повеќе единки од некој артикл. **located_in** - релација помеѓу CITY и USER која означува од кој град е еден корисник. Еден град може да има 0 или повеќе корисници, а еден корисник мора да биде асоциран со еден град. **manages** - релација помеѓу MANAGER и WAREHOUSE која означува кој менаџер управува со одреден магацин. Еден менаџер мора да управува само со 1 магацин и 1 магацин мора да биде управуван од само 1 менаџер. **order_contains** - релација помеѓу ORDERS и ARTICLE_UNIT која означува една нарачка кои единки од некој артикл ги содржи. Една нарачка мора да има барем 1 единка од некој артикл, а една единка од артикл може да биде асоцирана само со 1 нарачка. **shipping** - релација помеѓу ORDERS и DELIVERY која означува која нарачка со која достава ќе се достави. Една нарачка мора да припаѓа на само една достава, а една достава мора да има барем 1 нарачка. **unit_of_article** - релација помеѓу ARTICLE и ARTICLE_UNIT која означува од кој артикл е една единка-артикл. Една единка артикл мора да припаѓа на само 1 артикл, а еден артикл може да има 1 или повеќе единки. **warehouse_location** - релација помеѓу WAREHOUSE и CITY која означува во кој град се наоѓа еден магацин. Во еден град може да има 1 или повеќе магацини, а еден магацин мора да биде од само 1 град. == Историјат