Загрузка данных


-- CLIENT
CREATE TABLE Client (
    id_client INT IDENTITY(1,1) PRIMARY KEY,
    full_name VARCHAR(100) NOT NULL,
    phone VARCHAR(20),
    email VARCHAR(100),
    address VARCHAR(200)
);


-- ORDER
CREATE TABLE [Order] (
    id_order INT IDENTITY(1,1) PRIMARY KEY,
    id_client INT NOT NULL,
    order_date DATE NOT NULL,
    amount DECIMAL(10,2),
    status VARCHAR(50),

    FOREIGN KEY (id_client)
        REFERENCES Client(id_client)
);


-- PRODUCT
CREATE TABLE Product (
    id_product INT IDENTITY(1,1) PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    description VARCHAR(500),
    price DECIMAL(10,2) NOT NULL,
    quantity INT NOT NULL
);


-- WAREHOUSE
CREATE TABLE Warehouse (
    id_warehouse INT IDENTITY(1,1) PRIMARY KEY,
    name VARCHAR(100),
    address VARCHAR(200)
);


-- ORDER POSITION
CREATE TABLE OrderPosition (
    id_position INT IDENTITY(1,1) PRIMARY KEY,
    id_order INT NOT NULL,
    id_product INT NOT NULL,
    id_warehouse INT NOT NULL,
    quantity INT NOT NULL,
    price DECIMAL(10,2) NOT NULL,

    FOREIGN KEY (id_order)
        REFERENCES [Order](id_order),

    FOREIGN KEY (id_product)
        REFERENCES Product(id_product),

    FOREIGN KEY (id_warehouse)
        REFERENCES Warehouse(id_warehouse)
);


-- DELIVERY
CREATE TABLE Delivery (
    id_delivery INT IDENTITY(1,1) PRIMARY KEY,
    id_order INT NOT NULL,
    address VARCHAR(200),
    delivery_date DATE,
    status VARCHAR(50),

    FOREIGN KEY (id_order)
        REFERENCES [Order](id_order)
);


-- INVOICE
CREATE TABLE Invoice (
    id_invoice INT IDENTITY(1,1) PRIMARY KEY,
    id_order INT NOT NULL,
    invoice_date DATE,
    amount DECIMAL(10,2),

    FOREIGN KEY (id_order)
        REFERENCES [Order](id_order)
);


-- PAYMENT
CREATE TABLE Payment (
    id_payment INT IDENTITY(1,1) PRIMARY KEY,
    id_invoice INT NOT NULL,
    payment_date DATE,
    amount DECIMAL(10,2),
    payment_method VARCHAR(50),
    status VARCHAR(50),

    FOREIGN KEY (id_invoice)
        REFERENCES Invoice(id_invoice)
);