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


-- Создание базы
CREATE DATABASE RaspisanieDB;
GO

USE RaspisanieDB;
GO

-- 1. Teachers
CREATE TABLE Teachers (
    teacher_id INT IDENTITY PRIMARY KEY,
    full_name VARCHAR(100) NOT NULL
);

-- 2. Days
CREATE TABLE Days (
    day_id INT IDENTITY PRIMARY KEY,
    day_name VARCHAR(20) NOT NULL UNIQUE
);

-- 3. Subjects
CREATE TABLE Subjects (
    subject_id INT IDENTITY PRIMARY KEY,
    subject_name VARCHAR(100) NOT NULL
);

-- 4. LessonTypes
CREATE TABLE LessonTypes (
    type_id INT IDENTITY PRIMARY KEY,
    type_name VARCHAR(50) NOT NULL
);

-- 5. Groups
CREATE TABLE GroupsTable (
    group_id INT IDENTITY PRIMARY KEY,
    group_number VARCHAR(20) NOT NULL UNIQUE
);

-- 6. Schedule
CREATE TABLE Schedule (
    schedule_id INT IDENTITY PRIMARY KEY,
    teacher_id INT NOT NULL,
    day_id INT NOT NULL,
    lesson_number INT NOT NULL,
    subject_id INT NOT NULL,
    type_id INT NOT NULL,
    group_id INT NOT NULL,

    FOREIGN KEY (teacher_id) REFERENCES Teachers(teacher_id),
    FOREIGN KEY (day_id) REFERENCES Days(day_id),
    FOREIGN KEY (subject_id) REFERENCES Subjects(subject_id),
    FOREIGN KEY (type_id) REFERENCES LessonTypes(type_id),
    FOREIGN KEY (group_id) REFERENCES GroupsTable(group_id)
);

-- Наполнение справочников

INSERT INTO Teachers (full_name) VALUES
('Petrov V.I.'),
('Kirov V.A.'),
('Serov A.A.');

INSERT INTO Days (day_name) VALUES
('Ponedelnik'),
('Vtornik'),
('Sreda'),
('Chetverg');

INSERT INTO Subjects (subject_name) VALUES
('Teoriya vychislitelnyh processov'),
('Kompyuternaya grafika'),
('Teoriya informatiki'),
('Programmirovanie na C++'),
('Zashchita informacii'),
('Bazy dannyh');

INSERT INTO LessonTypes (type_name) VALUES
('Lekciya'),
('Laboratornaya');

INSERT INTO GroupsTable (group_number) VALUES
('4906'),
('4907'),
('4944'),
('4942'),
('4922');

-- БАЗОВЫЕ ДАННЫЕ (с картинки)

INSERT INTO Schedule (teacher_id, day_id, lesson_number, subject_id, type_id, group_id) VALUES
(1,1,1,1,1,1),
(1,2,1,2,2,2),
(1,2,2,2,2,1),

(2,1,2,3,1,1),
(2,2,3,4,2,2),
(2,2,4,4,2,1),

(3,1,3,5,1,3),
(3,3,3,6,2,4),
(3,4,4,6,2,5);

-- ДОБИВАЕМ ДО 200 СТРОК

DECLARE @i INT = 1;

WHILE @i <= 191
BEGIN
    INSERT INTO Schedule (teacher_id, day_id, lesson_number, subject_id, type_id, group_id)
    SELECT TOP 1 teacher_id, day_id, lesson_number, subject_id, type_id, group_id
    FROM Schedule
    ORDER BY NEWID();

    SET @i = @i + 1;
END;