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


-- Включаем поддержку внешних ключей (важно для SQLite)
PRAGMA foreign_keys = ON;

-- Удаляем таблицы, если они уже существуют (для чистоты эксперимента)
DROP TABLE IF EXISTS order_products;
DROP TABLE IF EXISTS orders;
DROP TABLE IF EXISTS products;
DROP TABLE IF EXISTS clients;

-- 1. Таблица clients (Клиенты)
CREATE TABLE clients (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    first_name TEXT NOT NULL,
    last_name TEXT NOT NULL,
    grade INTEGER, -- или TEXT, в зависимости от того, что подразумевается под "grade"
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

-- 2. Таблица products (Товары)
CREATE TABLE products (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    title TEXT NOT NULL,
    price REAL NOT NULL, -- REAL для чисел с плавающей точкой (цена)
    what_inside TEXT
);

-- 3. Таблица orders (Заказы)
CREATE TABLE orders (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    title TEXT NOT NULL,
    price REAL NOT NULL,
    client_id INTEGER NOT NULL,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (client_id) REFERENCES clients(id) ON DELETE CASCADE
);

-- 4. Таблица order_products (Связующая таблица "многие-ко-многим")
CREATE TABLE order_products (
    order_id INTEGER NOT NULL,
    product_id INTEGER NOT NULL,
    PRIMARY KEY (order_id, product_id), -- Составной первичный ключ
    FOREIGN KEY (order_id) REFERENCES orders(id) ON DELETE CASCADE,
    FOREIGN KEY (product_id) REFERENCES products(id) ON DELETE CASCADE
);