SQL-complete-tutorial
115 строк · 3.9 Кб
1-- MySQL Workbench Forward Engineering
2
3SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
4SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
5SET @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';
6
7-- -----------------------------------------------------
8-- Schema school
9-- -----------------------------------------------------
10
11-- -----------------------------------------------------
12-- Schema school
13-- -----------------------------------------------------
14CREATE SCHEMA IF NOT EXISTS `school` DEFAULT CHARACTER SET utf8 ;
15USE `school` ;
16
17-- -----------------------------------------------------
18-- Table `school`.`students`
19-- -----------------------------------------------------
20CREATE TABLE IF NOT EXISTS `school`.`students` (
21`student_id` INT NOT NULL AUTO_INCREMENT,
22`first_name` VARCHAR(50) NOT NULL,
23`last_name` VARCHAR(50) NOT NULL,
24`email` VARCHAR(255) NOT NULL,
25`date_registered` DATETIME NOT NULL,
26PRIMARY KEY (`student_id`))
27ENGINE = InnoDB;
28
29
30-- -----------------------------------------------------
31-- Table `school`.`instructors`
32-- -----------------------------------------------------
33CREATE TABLE IF NOT EXISTS `school`.`instructors` (
34`instructor_id` SMALLINT NOT NULL AUTO_INCREMENT,
35`name` VARCHAR(50) NOT NULL,
36PRIMARY KEY (`instructor_id`))
37ENGINE = InnoDB;
38
39
40-- -----------------------------------------------------
41-- Table `school`.`courses`
42-- -----------------------------------------------------
43CREATE TABLE IF NOT EXISTS `school`.`courses` (
44`course_id` INT NOT NULL AUTO_INCREMENT,
45`instructor_id` SMALLINT NOT NULL,
46`title` VARCHAR(255) NOT NULL,
47`price` DECIMAL(5,2) NOT NULL,
48PRIMARY KEY (`course_id`, `instructor_id`),
49INDEX `fk_courses_instructors1_idx` (`instructor_id` ASC) VISIBLE,
50CONSTRAINT `fk_courses_instructors`
51FOREIGN KEY (`instructor_id`)
52REFERENCES `school`.`instructors` (`instructor_id`)
53ON DELETE NO ACTION
54ON UPDATE CASCADE)
55ENGINE = InnoDB;
56
57
58-- -----------------------------------------------------
59-- Table `school`.`enrollments`
60-- -----------------------------------------------------
61CREATE TABLE IF NOT EXISTS `school`.`enrollments` (
62`student_id` INT NOT NULL,
63`course_id` INT NOT NULL,
64`date` DATETIME NOT NULL,
65`price` DECIMAL(5,2) NOT NULL,
66INDEX `fk_enrollments_students_idx` (`student_id` ASC) VISIBLE,
67INDEX `fk_enrollments_courses1_idx` (`course_id` ASC) VISIBLE,
68PRIMARY KEY (`student_id`, `course_id`),
69CONSTRAINT `fk_enrollments_students`
70FOREIGN KEY (`student_id`)
71REFERENCES `school`.`students` (`student_id`)
72ON DELETE NO ACTION
73ON UPDATE CASCADE,
74CONSTRAINT `fk_enrollments_courses`
75FOREIGN KEY (`course_id`)
76REFERENCES `school`.`courses` (`course_id`)
77ON DELETE NO ACTION
78ON UPDATE NO ACTION)
79ENGINE = InnoDB;
80
81
82-- -----------------------------------------------------
83-- Table `school`.`tags`
84-- -----------------------------------------------------
85CREATE TABLE IF NOT EXISTS `school`.`tags` (
86`tag_id` TINYINT NOT NULL,
87`name` VARCHAR(50) NOT NULL,
88PRIMARY KEY (`tag_id`))
89ENGINE = InnoDB;
90
91
92-- -----------------------------------------------------
93-- Table `school`.`course_tabs`
94-- -----------------------------------------------------
95CREATE TABLE IF NOT EXISTS `school`.`course_tabs` (
96`course_id` INT NOT NULL,
97`tag_id` TINYINT NOT NULL,
98PRIMARY KEY (`course_id`, `tag_id`),
99INDEX `fk_course_tabs_tags1_idx` (`tag_id` ASC) VISIBLE,
100CONSTRAINT `fk_course_tabs_courses1`
101FOREIGN KEY (`course_id`)
102REFERENCES `school`.`courses` (`course_id`)
103ON DELETE NO ACTION
104ON UPDATE NO ACTION,
105CONSTRAINT `fk_course_tabs_tags1`
106FOREIGN KEY (`tag_id`)
107REFERENCES `school`.`tags` (`tag_id`)
108ON DELETE NO ACTION
109ON UPDATE NO ACTION)
110ENGINE = InnoDB;
111
112
113SET SQL_MODE=@OLD_SQL_MODE;
114SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
115SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
116