Загрузка данных
-- 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;