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


```sql
-- ============================================================
-- DATABASE: it_cube — автоматизация приёма и распределения заявок
-- СУБД: MySQL 8.0+
-- Таблиц: 7
-- ============================================================

DROP DATABASE IF EXISTS it_cube;
CREATE DATABASE it_cube
    CHARACTER SET utf8mb4
    COLLATE utf8mb4_unicode_ci;

USE it_cube;

-- ============================================================
-- 1. TABLE: parents — родители
-- ============================================================
CREATE TABLE parents (
    parent_id       INT AUTO_INCREMENT PRIMARY KEY,                 -- код родителя
    last_name       VARCHAR(50)  NOT NULL,                          -- фамилия
    first_name      VARCHAR(50)  NOT NULL,                          -- имя
    middle_name     VARCHAR(50)  NULL,                              -- отчество
    phone           VARCHAR(20)  NOT NULL UNIQUE,                   -- телефон
    email           VARCHAR(100) NOT NULL UNIQUE,                   -- электронная почта
    snils           CHAR(11)     NULL UNIQUE,                       -- СНИЛС
    registered_at   DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP -- дата регистрации
) ENGINE=InnoDB;

-- ============================================================
-- 2. TABLE: children — дети
-- ============================================================
CREATE TABLE children (
    child_id        INT AUTO_INCREMENT PRIMARY KEY,                 -- код ребёнка
    last_name       VARCHAR(50) NOT NULL,                           -- фамилия
    first_name      VARCHAR(50) NOT NULL,                           -- имя
    middle_name     VARCHAR(50) NULL,                               -- отчество
    birth_date      DATE        NOT NULL,                           -- дата рождения
    snils           CHAR(11)    NULL UNIQUE,                        -- СНИЛС
    parent_id       INT         NOT NULL,                           -- код родителя
    FOREIGN KEY (parent_id)
        REFERENCES parents(parent_id)
        ON DELETE CASCADE
        ON UPDATE CASCADE
) ENGINE=InnoDB;

-- ============================================================
-- 3. TABLE: teachers — преподаватели
-- ============================================================
CREATE TABLE teachers (
    teacher_id      INT AUTO_INCREMENT PRIMARY KEY,                 -- код преподавателя
    last_name       VARCHAR(50)  NOT NULL,                          -- фамилия
    first_name      VARCHAR(50)  NOT NULL,                          -- имя
    middle_name     VARCHAR(50)  NULL,                              -- отчество
    specialization  VARCHAR(100) NOT NULL,                          -- специализация
    phone           VARCHAR(20)  NOT NULL UNIQUE,                   -- телефон
    email           VARCHAR(100) NOT NULL UNIQUE                    -- электронная почта
) ENGINE=InnoDB;

-- ============================================================
-- 4. TABLE: programs — программы
-- ============================================================
CREATE TABLE programs (
    program_id      INT AUTO_INCREMENT PRIMARY KEY,                 -- код программы
    name            VARCHAR(100) NOT NULL UNIQUE,                   -- название
    description     TEXT         NULL,                              -- описание
    min_age         TINYINT UNSIGNED NOT NULL,                      -- минимальный возраст
    max_age         TINYINT UNSIGNED NOT NULL,                      -- максимальный возраст
    duration_hours  SMALLINT UNSIGNED NOT NULL                      -- длительность (часов)
) ENGINE=InnoDB;

-- ============================================================
-- 5. TABLE: groups — кружки
-- ============================================================
CREATE TABLE groups (
    group_id        INT AUTO_INCREMENT PRIMARY KEY,                 -- код кружка
    program_id      INT NOT NULL,                                   -- код программы
    teacher_id      INT NOT NULL,                                   -- код преподавателя
    room            VARCHAR(20) NULL,                               -- аудитория
    academic_year   VARCHAR(9)  NOT NULL,                           -- учебный год
    max_seats       SMALLINT UNSIGNED NOT NULL,                     -- максимум мест
    free_seats      SMALLINT UNSIGNED NOT NULL,                     -- свободных мест
    FOREIGN KEY (program_id)
        REFERENCES programs(program_id)
        ON DELETE RESTRICT
        ON UPDATE CASCADE,
    FOREIGN KEY (teacher_id)
        REFERENCES teachers(teacher_id)
        ON DELETE RESTRICT
        ON UPDATE CASCADE
) ENGINE=InnoDB;

-- ============================================================
-- 6. TABLE: schedule — расписание
-- ============================================================
CREATE TABLE schedule (
    lesson_id       INT AUTO_INCREMENT PRIMARY KEY,                 -- код занятия
    group_id        INT NOT NULL,                                   -- код кружка
    weekday         ENUM('Пн','Вт','Ср','Чт','Пт','Сб','Вс') NOT NULL, -- день недели
    start_time      TIME NOT NULL,                                  -- время начала
    end_time        TIME NOT NULL,                                  -- время окончания
    FOREIGN KEY (group_id)
        REFERENCES groups(group_id)
        ON DELETE CASCADE
        ON UPDATE CASCADE
) ENGINE=InnoDB;

-- ============================================================
-- 7. TABLE: applications — заявки
-- ============================================================
CREATE TABLE applications (
    application_id  INT AUTO_INCREMENT PRIMARY KEY,                 -- код заявки
    child_id        INT NOT NULL,                                   -- код ребёнка
    group_id        INT NULL,                                       -- код кружка (NULL — не распределён)
    status          VARCHAR(20) NOT NULL DEFAULT 'новая',           -- статус заявки
    submitted_at    DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,    -- дата подачи
    comment         TEXT NULL,                                      -- комментарий
    FOREIGN KEY (child_id)
        REFERENCES children(child_id)
        ON DELETE CASCADE
        ON UPDATE CASCADE,
    FOREIGN KEY (group_id)
        REFERENCES groups(group_id)
        ON DELETE SET NULL
        ON UPDATE CASCADE
) ENGINE=InnoDB;

-- ============================================================
-- END OF SCRIPT
-- ============================================================
```