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


-- Удаление таблиц, если они уже существуют (для пересоздания)
DROP TABLE IF EXISTS enrollments;
DROP TABLE IF EXISTS students;
DROP TABLE IF EXISTS courses;
DROP TABLE IF EXISTS instructors;

-- Таблица инструкторов
CREATE TABLE instructors (
    id SERIAL PRIMARY KEY,
    full_name VARCHAR(100) NOT NULL,
    rating NUMERIC(3,2) CHECK (rating BETWEEN 0 AND 5)
);

-- Таблица курсов
CREATE TABLE courses (
    id SERIAL PRIMARY KEY,
    title VARCHAR(200) NOT NULL,
    instructor_id INT NOT NULL REFERENCES instructors(id) ON DELETE CASCADE,
    price DECIMAL(10,2) NOT NULL CHECK (price >= 0),
    duration_hours INT NOT NULL CHECK (duration_hours > 0)
);

-- Таблица студентов
CREATE TABLE students (
    id SERIAL PRIMARY KEY,
    full_name VARCHAR(100) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL
);

-- Таблица записей на курсы (связь многие-ко-многим)
CREATE TABLE enrollments (
    id SERIAL PRIMARY KEY,
    student_id INT NOT NULL REFERENCES students(id) ON DELETE CASCADE,
    course_id INT NOT NULL REFERENCES courses(id) ON DELETE CASCADE,
    enroll_date DATE NOT NULL DEFAULT CURRENT_DATE,
    final_grade INT CHECK (final_grade BETWEEN 1 AND 100)  -- NULL, если курс не закончен
);