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


-- 1. Создание таблицы категорий (categories)
CREATE TABLE categories (
    id INT PRIMARY KEY, -- В реальной БД лучше использовать SERIAL или AUTO_INCREMENT
    title VARCHAR(255) NOT NULL,
    icon VARCHAR(255)
);

-- 2. Создание таблицы курсов (courses)
CREATE TABLE courses (
    id INT PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    price DECIMAL(10, 2) NOT NULL,
    current_discount DECIMAL(10, 2) DEFAULT 0,
    is_available BOOLEAN DEFAULT TRUE,
    category_id INT,
    CONSTRAINT fk_courses_category FOREIGN KEY (category_id) REFERENCES categories(id)
);

-- 3. Создание таблицы пользователей (users)
CREATE TABLE users (
    id INT PRIMARY KEY,
    first_name VARCHAR(100) NOT NULL,
    last_name VARCHAR(100) NOT NULL,
    email VARCHAR(255) UNIQUE NOT NULL,
    password VARCHAR(255) NOT NULL,
    is_admin BOOLEAN DEFAULT FALSE,
    is_premium BOOLEAN DEFAULT FALSE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 4. Создание таблицы чеков (receipts)
CREATE TABLE receipts (
    id INT PRIMARY KEY,
    receipt_url TEXT
);

-- 5. Создание таблицы связи пользователей и курсов (user_courses)
CREATE TABLE user_courses (
    user_id INT,
    course_id INT,
    receipt_id INT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (user_id, course_id), -- Составной первичный ключ
    CONSTRAINT fk_uc_user FOREIGN KEY (user_id) REFERENCES users(id),
    CONSTRAINT fk_uc_course FOREIGN KEY (course_id) REFERENCES courses(id),
    CONSTRAINT fk_uc_receipt FOREIGN KEY (receipt_id) REFERENCES receipts(id)
);