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


CREATE DATABASE IF NOT EXISTS university
    CHARACTER SET utf8mb4
    COLLATE utf8mb4_unicode_ci;

USE university;


-- =========================================
-- ГРУППА
-- =========================================
CREATE TABLE group_table (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    course INT,
    quantity_students INT
);


-- =========================================
-- ПРЕПОДАВАТЕЛЬ
-- =========================================
CREATE TABLE teacher (
    id INT AUTO_INCREMENT PRIMARY KEY,
    surname VARCHAR(100) NOT NULL,
    name VARCHAR(100) NOT NULL,
    patronymic VARCHAR(100),
    position VARCHAR(100),
    degree VARCHAR(100)
);


-- =========================================
-- ФАКУЛЬТЕТ
-- =========================================
CREATE TABLE faculty (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(150) NOT NULL,
    type VARCHAR(100)
);


-- =========================================
-- ДИСЦИПЛИНА
-- =========================================
CREATE TABLE discipline (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(150) NOT NULL,
    direction VARCHAR(150),
    hours INT
);


-- =========================================
-- РАСПИСАНИЕ
-- =========================================
CREATE TABLE schedule (
    id INT AUTO_INCREMENT PRIMARY KEY,

    semester_id INT,
    discipline_id INT NOT NULL,
    teacher_id INT NOT NULL,
    group_id INT NOT NULL,

    external_slot_id INT,
    lesson_type VARCHAR(50),
    auditorium_id INT,

    FOREIGN KEY (discipline_id)
        REFERENCES discipline(id),

    FOREIGN KEY (teacher_id)
        REFERENCES teacher(id),

    FOREIGN KEY (group_id)
        REFERENCES group_table(id)
);


-- =========================================
-- СЕМЕСТР
-- =========================================
CREATE TABLE semester (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    date_start DATE,
    date_end DATE
);


-- =========================================
-- ВНЕШНИЙ СЛОТ
-- =========================================
CREATE TABLE external_slot (
    id INT AUTO_INCREMENT PRIMARY KEY,
    pair_number INT,
    weekday VARCHAR(20),
    time_start TIME,
    time_end TIME,
    week_number INT
);


-- =========================================
-- АУДИТОРИЯ
-- =========================================
CREATE TABLE auditorium (
    id INT AUTO_INCREMENT PRIMARY KEY,
    number VARCHAR(20) NOT NULL,
    capacity INT,
    type VARCHAR(50)
);


-- =========================================
-- СВЯЗИ РАСПИСАНИЯ
-- =========================================

ALTER TABLE schedule
    ADD CONSTRAINT fk_schedule_semester
    FOREIGN KEY (semester_id)
    REFERENCES semester(id);

ALTER TABLE schedule
    ADD CONSTRAINT fk_schedule_external_slot
    FOREIGN KEY (external_slot_id)
    REFERENCES external_slot(id);

ALTER TABLE schedule
    ADD CONSTRAINT fk_schedule_auditorium
    FOREIGN KEY (auditorium_id)
    REFERENCES auditorium(id);