dbo.Categories (39 wierszy) CategoryID smallint NOT NULL PK CategoryName nvarchar(60) NOT NULL ParentCategoryID smallint NULL FK -> dbo.Categories.CategoryID dbo.Customers (200 628 wierszy): Klienci sklepu. Segment B2C to osoby prywatne, B2B to firmy. CustomerID int NOT NULL IDENTITY PK CustomerCode varchar(12) NOT NULL -- Kod klienta: liczbowy dla B2C, z prefiksem B2B- dla firm. FirstName nvarchar(40) NOT NULL LastName nvarchar(60) NOT NULL Email varchar(120) NOT NULL Phone varchar(16) NULL BirthDate date NULL City nvarchar(60) NOT NULL PostalCode varchar(10) NULL RegionID tinyint NULL FK -> dbo.Regions.RegionID Country char(2) NULL -- Kod kraju ISO 3166-1. NULL w kontach przeniesionych ze starego systemu. Segment varchar(10) NOT NULL CreatedAt datetime2(0) NOT NULL IsActive bit NOT NULL -- 1 = konto nieusunięte i niezablokowane. To NIE oznacza, że klient ostatnio coś kupił. CHECK ([Segment]='B2B' OR [Segment]='B2C') dbo.Employees (48 wierszy) EmployeeID smallint NOT NULL PK FirstName nvarchar(40) NOT NULL LastName nvarchar(60) NOT NULL JobTitle nvarchar(60) NOT NULL ManagerID smallint NULL FK -> dbo.Employees.EmployeeID HireDate date NOT NULL dbo.OrderItems (6 506 950 wierszy): Pozycje zamówień. Wartość pozycji = Quantity * UnitPrice * (100 - DiscountPct) / 100. OrderItemID bigint NOT NULL IDENTITY PK OrderID int NOT NULL FK -> dbo.Orders.OrderID ProductID int NOT NULL FK -> dbo.Products.ProductID Quantity smallint NOT NULL UnitPrice decimal(10,2) NOT NULL -- Cena katalogowa jednostki w dniu zamówienia, przed rabatem. DiscountPct decimal(4,1) NOT NULL -- Rabat procentowy na pozycji (0-100). CHECK ([Quantity]>(0)) dbo.Orders (2 399 996 wierszy): Zamówienia. Jeden wiersz = jedno zamówienie (nagłówek). OrderID int NOT NULL IDENTITY PK OrderNumber varchar(20) NOT NULL CustomerID int NOT NULL FK -> dbo.Customers.CustomerID EmployeeID smallint NULL FK -> dbo.Employees.EmployeeID -- Opiekun klienta B2B. NULL dla klientów indywidualnych. OrderDate datetime2(0) NOT NULL -- Data i godzina złożenia zamówienia w czasie lokalnym (Europe/Warsaw). Status varchar(12) NOT NULL -- NEW - nowe, PAID - opłacone, SHIPPED - wysłane, DELIVERED - doręczone, CANCELLED - anulowane, RETURNED - zwrócone (w całości lub części). Channel varchar(8) NOT NULL -- Kanał sprzedaży: WEB - sklep internetowy, APP - aplikacja mobilna (od marca 2024), PHONE - zamówienie telefoniczne. ShipCity nvarchar(60) NOT NULL ShipCountry char(2) NOT NULL PromoCode varchar(20) NULL ShippingCost decimal(8,2) NOT NULL -- Koszt dostawy całego zamówienia (poziom zamówienia, nie pozycji). CHECK ([Status]='RETURNED' OR [Status]='CANCELLED' OR [Status]='DELIVERED' OR [Status]='SHIPPED' OR [Status]='PAID' OR [Status]='NEW') dbo.Payments (2 596 648 wierszy): Płatności. Zamówienie może mieć kilka wierszy: nieudane próby, raty i zwroty. PaymentID int NOT NULL IDENTITY PK OrderID int NOT NULL FK -> dbo.Orders.OrderID PaidAtUtc datetime2(0) NOT NULL -- Czas transakcji w UTC, tak jak zwraca go bramka płatnicza. Amount decimal(12,2) NOT NULL Method varchar(12) NOT NULL Status varchar(10) NOT NULL -- SUCCESS - udana, FAILED - nieudana próba, REFUNDED - zwrot pieniędzy (kwota ujemna). CHECK ([Status]='REFUNDED' OR [Status]='FAILED' OR [Status]='SUCCESS') dbo.ProductPriceHistory (8 685 wierszy): Historia cen. Okres [ValidFrom, ValidTo): ValidTo to pierwszy dzień, w którym cena już NIE obowiązuje. NULL = cena aktualna. ProductID int NOT NULL PK FK -> dbo.Products.ProductID ValidFrom date NOT NULL PK ValidTo date NULL -- Pierwszy dzień, w którym cena już nie obowiązuje. NULL = cena aktualna. Price decimal(10,2) NOT NULL dbo.Products (1 146 wierszy) ProductID int NOT NULL PK SKU varchar(20) NOT NULL ProductName nvarchar(120) NOT NULL CategoryID smallint NOT NULL FK -> dbo.Categories.CategoryID ListPrice decimal(10,2) NOT NULL UnitCost decimal(10,2) NOT NULL IsActive bit NOT NULL CreatedAt date NOT NULL dbo.Regions (16 wierszy) RegionID tinyint NOT NULL PK RegionName nvarchar(40) NOT NULL dbo.Returns (123 270 wierszy): Zwroty pozycji zamówień. Reason to tekst wpisany przez klienta. ReturnID int NOT NULL IDENTITY PK OrderItemID bigint NOT NULL FK -> dbo.OrderItems.OrderItemID ReturnedAt date NOT NULL Quantity smallint NOT NULL Reason nvarchar(200) NOT NULL dbo.Shipments (2 288 585 wierszy): Wysyłki. Jedno zamówienie = najwyżej jedna wysyłka. DeliveredAt NULL = paczka jeszcze w drodze. ShipmentID int NOT NULL IDENTITY PK OrderID int NOT NULL FK -> dbo.Orders.OrderID DeliveryMethod varchar(16) NOT NULL ShippedAt datetime2(0) NOT NULL DeliveredAt datetime2(0) NULL