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


-- MySQL Workbench Forward Engineering

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
-- -----------------------------------------------------
-- Schema it_cube
-- -----------------------------------------------------

-- -----------------------------------------------------
-- Schema it_cube
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `it_cube` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ;
USE `it_cube` ;

-- -----------------------------------------------------
-- Table `it_cube`.`application_history`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `it_cube`.`application_history` (
  `history_id` INT NOT NULL AUTO_INCREMENT,
  `application_id` INT NOT NULL,
  `old_status` VARCHAR(20) NULL DEFAULT NULL,
  `new_status` VARCHAR(20) NULL DEFAULT NULL,
  `changed_at` DATETIME NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`history_id`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8mb4
COLLATE = utf8mb4_unicode_ci;


-- -----------------------------------------------------
-- Table `it_cube`.`parents`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `it_cube`.`parents` (
  `parent_id` INT NOT NULL AUTO_INCREMENT,
  `last_name` VARCHAR(50) NOT NULL,
  `first_name` VARCHAR(50) NOT NULL,
  `middle_name` VARCHAR(50) NULL DEFAULT NULL,
  `phone` VARCHAR(20) NOT NULL,
  `email` VARCHAR(100) NOT NULL,
  `snils` CHAR(11) NULL DEFAULT NULL,
  `registered_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `address` VARCHAR(200) NULL DEFAULT NULL,
  PRIMARY KEY (`parent_id`),
  UNIQUE INDEX `uq_parents_phone` (`phone` ASC) VISIBLE,
  UNIQUE INDEX `uq_parents_email` (`email` ASC) VISIBLE,
  UNIQUE INDEX `uq_parents_snils` (`snils` ASC) VISIBLE)
ENGINE = InnoDB
AUTO_INCREMENT = 6
DEFAULT CHARACTER SET = utf8mb4
COLLATE = utf8mb4_unicode_ci;


-- -----------------------------------------------------
-- Table `it_cube`.`children`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `it_cube`.`children` (
  `child_id` INT NOT NULL AUTO_INCREMENT,
  `last_name` VARCHAR(50) NOT NULL,
  `first_name` VARCHAR(50) NOT NULL,
  `middle_name` VARCHAR(50) NULL DEFAULT NULL,
  `birth_date` DATE NOT NULL,
  `snils` CHAR(11) NULL DEFAULT NULL,
  `parent_id` INT NOT NULL,
  `gender` ENUM('М', 'Ж') NULL DEFAULT NULL,
  PRIMARY KEY (`child_id`),
  UNIQUE INDEX `uq_children_snils` (`snils` ASC) VISIBLE,
  INDEX `idx_children_parent` (`parent_id` ASC) VISIBLE,
  CONSTRAINT `fk_children_parent`
    FOREIGN KEY (`parent_id`)
    REFERENCES `it_cube`.`parents` (`parent_id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB
AUTO_INCREMENT = 6
DEFAULT CHARACTER SET = utf8mb4
COLLATE = utf8mb4_unicode_ci;


-- -----------------------------------------------------
-- Table `it_cube`.`programs`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `it_cube`.`programs` (
  `program_id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(100) NOT NULL,
  `description` TEXT NULL DEFAULT NULL,
  `min_age` TINYINT UNSIGNED NOT NULL,
  `max_age` TINYINT UNSIGNED NOT NULL,
  `duration_hours` SMALLINT UNSIGNED NOT NULL,
  `is_active` TINYINT(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`program_id`),
  UNIQUE INDEX `uq_programs_name` (`name` ASC) VISIBLE)
ENGINE = InnoDB
AUTO_INCREMENT = 9
DEFAULT CHARACTER SET = utf8mb4
COLLATE = utf8mb4_unicode_ci;


-- -----------------------------------------------------
-- Table `it_cube`.`teachers`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `it_cube`.`teachers` (
  `teacher_id` INT NOT NULL AUTO_INCREMENT,
  `last_name` VARCHAR(50) NOT NULL,
  `first_name` VARCHAR(50) NOT NULL,
  `middle_name` VARCHAR(50) NULL DEFAULT NULL,
  `specialization` VARCHAR(100) NOT NULL,
  `phone` VARCHAR(20) NOT NULL,
  `email` VARCHAR(100) NOT NULL,
  `hire_date` DATE NULL DEFAULT NULL,
  PRIMARY KEY (`teacher_id`),
  UNIQUE INDEX `uq_teachers_phone` (`phone` ASC) VISIBLE,
  UNIQUE INDEX `uq_teachers_email` (`email` ASC) VISIBLE)
ENGINE = InnoDB
AUTO_INCREMENT = 9
DEFAULT CHARACTER SET = utf8mb4
COLLATE = utf8mb4_unicode_ci;


-- -----------------------------------------------------
-- Table `it_cube`.`groups`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `it_cube`.`groups` (
  `group_id` INT NOT NULL AUTO_INCREMENT,
  `program_id` INT NOT NULL,
  `teacher_id` INT NOT NULL,
  `room` VARCHAR(20) NULL DEFAULT NULL,
  `academic_year` VARCHAR(9) NOT NULL,
  `max_seats` SMALLINT UNSIGNED NOT NULL,
  `free_seats` SMALLINT UNSIGNED NOT NULL,
  `notes` VARCHAR(255) NULL DEFAULT NULL,
  PRIMARY KEY (`group_id`),
  INDEX `idx_groups_program` (`program_id` ASC) VISIBLE,
  INDEX `idx_groups_teacher` (`teacher_id` ASC) VISIBLE,
  CONSTRAINT `fk_groups_program`
    FOREIGN KEY (`program_id`)
    REFERENCES `it_cube`.`programs` (`program_id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_groups_teacher`
    FOREIGN KEY (`teacher_id`)
    REFERENCES `it_cube`.`teachers` (`teacher_id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE)
ENGINE = InnoDB
AUTO_INCREMENT = 6
DEFAULT CHARACTER SET = utf8mb4
COLLATE = utf8mb4_unicode_ci;


-- -----------------------------------------------------
-- Table `it_cube`.`applications`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `it_cube`.`applications` (
  `application_id` INT NOT NULL AUTO_INCREMENT,
  `child_id` INT NOT NULL,
  `group_id` INT NULL DEFAULT NULL,
  `status` ENUM('новая', 'на рассмотрении', 'одобрена', 'отклонена', 'зачислен') NOT NULL DEFAULT 'новая',
  `submitted_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `comment` TEXT NULL DEFAULT NULL,
  `updated_at` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`application_id`),
  INDEX `idx_applications_child` (`child_id` ASC) VISIBLE,
  INDEX `idx_applications_group` (`group_id` ASC) VISIBLE,
  INDEX `idx_applications_status` (`status` ASC) VISIBLE,
  INDEX `idx_applications_submitted` (`submitted_at` ASC) VISIBLE,
  CONSTRAINT `fk_applications_child`
    FOREIGN KEY (`child_id`)
    REFERENCES `it_cube`.`children` (`child_id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_applications_group`
    FOREIGN KEY (`group_id`)
    REFERENCES `it_cube`.`groups` (`group_id`)
    ON DELETE SET NULL
    ON UPDATE CASCADE)
ENGINE = InnoDB
AUTO_INCREMENT = 6
DEFAULT CHARACTER SET = utf8mb4
COLLATE = utf8mb4_unicode_ci;


-- -----------------------------------------------------
-- Table `it_cube`.`schedule`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `it_cube`.`schedule` (
  `lesson_id` INT NOT NULL AUTO_INCREMENT,
  `group_id` INT NOT NULL,
  `weekday` ENUM('Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Вс') NOT NULL,
  `start_time` TIME NOT NULL,
  `end_time` TIME NOT NULL,
  PRIMARY KEY (`lesson_id`),
  INDEX `idx_schedule_group` (`group_id` ASC) VISIBLE,
  CONSTRAINT `fk_schedule_group`
    FOREIGN KEY (`group_id`)
    REFERENCES `it_cube`.`groups` (`group_id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB
AUTO_INCREMENT = 6
DEFAULT CHARACTER SET = utf8mb4
COLLATE = utf8mb4_unicode_ci;


-- -----------------------------------------------------
-- Table `it_cube`.`teachers_backup`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `it_cube`.`teachers_backup` (
  `teacher_id` INT NOT NULL AUTO_INCREMENT,
  `last_name` VARCHAR(50) NOT NULL,
  `first_name` VARCHAR(50) NOT NULL,
  `specialization` VARCHAR(100) NOT NULL,
  PRIMARY KEY (`teacher_id`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8mb4
COLLATE = utf8mb4_unicode_ci;


SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;