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


-- 1. Таблица кабинетов
CREATE TABLE Cabinets (
    cabinet_id INT PRIMARY KEY AUTO_INCREMENT,
    room_number VARCHAR(20) NOT NULL
);

-- 2. Таблица учителей
CREATE TABLE Teachers (
    teacher_id INT PRIMARY KEY AUTO_INCREMENT,
    full_name VARCHAR(100) NOT NULL,
    cabinet_id INT NULL, -- У некоторых учителей может не быть собственного кабинета
    FOREIGN KEY (cabinet_id) REFERENCES Cabinets(cabinet_id) ON DELETE SET NULL
);

-- 3. Таблица предметов
CREATE TABLE Subjects (
    subject_id INT PRIMARY KEY AUTO_INCREMENT,
    subject_name VARCHAR(100) NOT NULL
);

-- 4. Связь учителей и предметов (многие ко многим)
CREATE TABLE Teacher_Subjects (
    teacher_id INT,
    subject_id INT,
    PRIMARY KEY (teacher_id, subject_id),
    FOREIGN KEY (teacher_id) REFERENCES Teachers(teacher_id) ON DELETE CASCADE,
    FOREIGN KEY (subject_id) REFERENCES Subjects(subject_id) ON DELETE CASCADE
);

-- 5. Таблица классов
CREATE TABLE Classes (
    class_id INT PRIMARY KEY AUTO_INCREMENT,
    class_num INT NOT NULL,               -- Параллель (например, 5, 10)
    class_letter VARCHAR(5) NOT NULL,     -- Буква (например, 'А', 'Б')
    class_teacher_id INT NOT NULL,        -- Классный руководитель
    FOREIGN KEY (class_teacher_id) REFERENCES Teachers(teacher_id)
);

-- 6. Таблица учеников
CREATE TABLE Students (
    student_id INT PRIMARY KEY AUTO_INCREMENT,
    full_name VARCHAR(100) NOT NULL,      -- Фамилия и имя
    class_id INT NOT NULL,
    FOREIGN KEY (class_id) REFERENCES Classes(class_id) ON DELETE CASCADE
);

-- 7. Таблица четвертных оценок
CREATE TABLE Grades (
    grade_id INT PRIMARY KEY AUTO_INCREMENT,
    student_id INT NOT NULL,
    subject_id INT NOT NULL,
    quarter INT NOT NULL CHECK (quarter BETWEEN 1 AND 4),
    grade_value INT NOT NULL CHECK (grade_value BETWEEN 2 AND 5),
    FOREIGN KEY (student_id) REFERENCES Students(student_id) ON DELETE CASCADE,
    FOREIGN KEY (subject_id) REFERENCES Subjects(subject_id) ON DELETE CASCADE
);

-- 8. Таблица расписания занятий
CREATE TABLE Schedule (
    schedule_id INT PRIMARY KEY AUTO_INCREMENT,
    class_id INT NOT NULL,
    day_of_week VARCHAR(15) NOT NULL,     -- Например, 'Понедельник', 'Среда'
    lesson_number INT NOT NULL,           -- Номер урока (1, 2, 3...)
    subject_id INT NOT NULL,
    teacher_id INT NOT NULL,
    cabinet_id INT NULL,                  -- Кабинет, в котором идет урок
    FOREIGN KEY (class_id) REFERENCES Classes(class_id) ON DELETE CASCADE,
    FOREIGN KEY (subject_id) REFERENCES Subjects(subject_id) ON DELETE CASCADE,
    FOREIGN KEY (teacher_id) REFERENCES Teachers(teacher_id) ON DELETE CASCADE,
    FOREIGN KEY (cabinet_id) REFERENCES Cabinets(cabinet_id) ON DELETE SET NULL
);