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


CREATE DATABASE RaspisanieDB;
GO

USE RaspisanieDB;
GO

-- =========================
-- СОЗДАНИЕ ТАБЛИЦ
-- =========================

CREATE TABLE Prepodavateli (
    prepodavatel_id INT IDENTITY PRIMARY KEY,
    fio NVARCHAR(100) NOT NULL
);

CREATE TABLE DniNedeli (
    den_id INT IDENTITY PRIMARY KEY,
    nazvanie NVARCHAR(20) NOT NULL UNIQUE
);

CREATE TABLE Discipliny (
    disciplina_id INT IDENTITY PRIMARY KEY,
    nazvanie NVARCHAR(100) NOT NULL
);

CREATE TABLE TipyZanyatiy (
    tip_id INT IDENTITY PRIMARY KEY,
    nazvanie NVARCHAR(50) NOT NULL
);

CREATE TABLE Gruppy (
    gruppa_id INT IDENTITY PRIMARY KEY,
    nomer NVARCHAR(20) NOT NULL UNIQUE
);

CREATE TABLE Raspisanie (
    raspisanie_id INT IDENTITY PRIMARY KEY,
    prepodavatel_id INT NOT NULL,
    den_id INT NOT NULL,
    nomer_pary INT NOT NULL CHECK (nomer_pary > 0),
    disciplina_id INT NOT NULL,
    tip_id INT NOT NULL,
    gruppa_id INT NOT NULL,
    auditoriya NVARCHAR(20) NOT NULL,
    vremya TIME NOT NULL,

    FOREIGN KEY (prepodavatel_id) REFERENCES Prepodavateli(prepodavatel_id),
    FOREIGN KEY (den_id) REFERENCES DniNedeli(den_id),
    FOREIGN KEY (disciplina_id) REFERENCES Discipliny(disciplina_id),
    FOREIGN KEY (tip_id) REFERENCES TipyZanyatiy(tip_id),
    FOREIGN KEY (gruppa_id) REFERENCES Gruppy(gruppa_id)
);

-- =========================
-- ЗАПОЛНЕНИЕ СПРАВОЧНИКОВ
-- =========================

INSERT INTO Prepodavateli (fio) VALUES
('Petrov V.I.'), ('Kirov V.A.'), ('Serov A.A.'),
('Ivanov I.I.'), ('Sidorov P.P.'), ('Smirnov A.V.'),
('Kuznetsov D.A.'), ('Popov N.N.'), ('Volkov E.S.'), ('Fedorov M.K.');

INSERT INTO DniNedeli (nazvanie) VALUES
('Ponedelnik'), ('Vtornik'), ('Sreda'), ('Chetverg'), ('Pyatnica');

INSERT INTO Discipliny (nazvanie) VALUES
('Teoriya vychislitelnyh processov'),
('Kompyuternaya grafika'),
('Teoriya informatiki'),
('Programmirovanie na C++'),
('Zashchita informacii'),
('Bazy dannyh'),
('Setevye tehnologii');

INSERT INTO TipyZanyatiy (nazvanie) VALUES
('Lekciya'), ('Laboratornaya rabota'), ('Praktika');

INSERT INTO Gruppy (nomer) VALUES
('4906'), ('4907'), ('4944'), ('4942'), ('4922');

-- =========================
-- ЗАПОЛНЕНИЕ 200 СТРОК
-- =========================

DECLARE @i INT = 1;

WHILE @i <= 200
BEGIN
    INSERT INTO Raspisanie (
        prepodavatel_id,
        den_id,
        nomer_pary,
        disciplina_id,
        tip_id,
        gruppa_id,
        auditoriya,
        vremya
    )
    VALUES (
        (ABS(CHECKSUM(NEWID())) % 10) + 1,
        (ABS(CHECKSUM(NEWID())) % 5) + 1,
        (ABS(CHECKSUM(NEWID())) % 4) + 1,
        (ABS(CHECKSUM(NEWID())) % 7) + 1,
        (ABS(CHECKSUM(NEWID())) % 3) + 1,
        (ABS(CHECKSUM(NEWID())) % 5) + 1,
        CONCAT('Aud-', (ABS(CHECKSUM(NEWID())) % 50) + 100),
        DATEADD(MINUTE, (ABS(CHECKSUM(NEWID())) % 600), '08:00')
    );

    SET @i = @i + 1;
END;

-- =========================
-- ПРОВЕРКА
-- =========================

SELECT * FROM Raspisanie;