-- Удаление таблиц, если они уже существуют (для пересоздания)
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, если курс не закончен
);