== ER дијаграм == [[Image(stock_erd.png, 900px)]] == Податочни побарувања == === Ентитети === '''Јаки Ентитети:''' 1. '''User''' - ентитет кој ги дефинира корисниците * userId - primary key (примарен клуч) * username - varchar (задолжителен атрибут) * password - varchar (задолжителен атрибут) * full_name - varchar (задолжителен атрибут) * email - varchar (задолжителен атрибут) * role - varchar (задолжителен атрибут) * is_active - boolean (задолжителен атрибут) 2. '''Customer''' - ентитет кој ги дефинира клиентите * customerId - primary key (примарен клуч) * name - varchar (задолжителен атрибут) * email - varchar (задолжителен атрибут) * phone - varchar (задолжителен атрибут) * address - varchar (задолжителен атрибут) 3. '''Product''' - ентитет кој ги дефинира продуктите * productId - primary key (примарен клуч) * name - varchar (задолжителен атрибут) * description - text (задолжителен атрибут) * sku - varchar (задолжителен атрибут) * unit_price - decimal (задолжителен атрибут) * reorder_level - int (задолжителен атрибут) 4. '''Category''' - ентитет кој ги дефинира категориите на продукти * categoryId - primary key (примарен клуч) * name - varchar (задолжителен атрибут) * description - text (задолжителен атрибут) 5. '''Supplier''' - ентитет кој ги дефинира добавувачите * supplierId - primary key (примарен клуч) * name - varchar (задолжителен атрибут) * contact_person - varchar (задолжителен атрибут) * phone - varchar (задолжителен атрибут) * email - varchar (задолжителен атрибут) * address - varchar (задолжителен атрибут) 6. '''Warehouse''' - ентитет кој ги дефинира складиштата * warehouseId - primary key (примарен клуч) * name - varchar (задолжителен атрибут) * location - varchar (задолжителен атрибут) * capacity - int (задолжителен атрибут) 7. '''Sale''' - ентитет кој ги дефинира продажните * saleId - primary key (примарен клуч) * date_time - datetime (задолжителен атрибут) * total_amount - decimal (задолжителен атрибут) 8. '''!PurchaseOrder''' - ентитет кој ги дефинира нарачките кон добавувачи * poId - primary key (примарен клуч) * order_date - date (задолжителен атрибут) * expected_delivery_date - date (задолжителен атрибут) * status - varchar (задолжителен атрибут) '''Слаби Ентитети:''' 9. '''!SaleItem''' - ентитет кој ги дефинира ставките во продажба (зависи од Sale) * saleId - foreign key, дел од primary key (примарен клуч) * productId - foreign key, дел од primary key (примарен клуч) * quantity - int (задолжителен атрибут) * unit_price_at_sale - decimal (задолжителен атрибут) 10. '''!PurchaseOrderItem''' - ентитет кој ги дефинира ставките во нарачка (зависи од !PurchaseOrder) * poId - foreign key, дел од primary key (примарен клуч) * productId - foreign key, дел од primary key (примарен клуч) * quantity - int (задолжителен атрибут) * unit_cost - decimal (задолжителен атрибут) 11. '''!WarehouseStock''' - ентитет кој ги дефинира запасните продукти за секое складиште (зависи од Warehouse) * warehouseId - foreign key, дел од primary key (примарен клуч) * productId - дел од primary key (примарен клуч) * quantity_on_hand - int (задолжителен атрибут) * last_updated - datetime (задолжителен атрибут) === Релации === * '''belongs_to''' - 1:N релација која ги поврзува ентитетите Product и Category. Еден продукт може да припаѓа само на една категорија, а една категорија може да има повеќе продукти. * '''supplied_by''' - 1:N релација која ги поврзува ентитетите Product и Supplier. Еден продукт може да се добавува од еден добавувач, а еден добавувач може да добавува повеќе продукти. * '''holds''' - 1:N релација која ги поврзува ентитетите Warehouse и !WarehouseStock. Едно складиште може да има повеќе запасни ставки, а една запасна ставка припаѓа на едно складиште. * '''has_stock_in''' - 1:N релација која ги поврзува ентитетите Product и !WarehouseStock. Еден продукт може да има запас во повеќе складишта, а една запасна ставка е за еден продукт. * '''made_by''' - 1:N релација која ги поврзува ентитетите Sale и User. Една продажба е направена од еден корисник, а еден корисник може да направи повеќе продажби. * '''made_for''' - 1:N релација која ги поврзува ентитетите Sale и Customer. Една продажба е за еден клиент, а еден клиент може да има повеќе продажби. * '''contains''' - 1:N релација која ги поврзува ентитетите Sale и !SaleItem. Една продажба содржи повеќе ставки, а една ставка припаѓа на една продажба. * '''includes_product''' - 1:N релација која ги поврзува ентитетите !SaleItem и Product. Една ставка во продажба е за еден продукт, а еден продукт може да биде во повеќе ставки. * '''placed_to''' - 1:N релација која ги поврзува ентитетите !PurchaseOrder и Supplier. Една нарачка е кон еден добавувач, а еден добавувач може да прими повеќе нарачки. * '''includes_item''' - 1:N релација која ги поврзува ентитетите !PurchaseOrder и !PurchaseOrderItem. Една нарачка содржи повеќе ставки, а една ставка припаѓа на една нарачка. * '''orders''' - 1:N релација која ги поврзува ентитетите !PurchaseOrderItem и Product. Една ставка во нарачка е за еден продукт, а еден продукт може да биде во повеќе ставки.