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


-- 1. Удаление существующих таблиц в правильном порядке
DROP TABLE IF EXISTS Экзамен;
DROP TABLE IF EXISTS Студент;
DROP TABLE IF EXISTS Преподаватель;
DROP TABLE IF EXISTS Инженер;
DROP TABLE IF EXISTS Зав_кафедрой;
DROP TABLE IF EXISTS Заявка;
DROP TABLE IF EXISTS Дисциплина;
DROP TABLE IF EXISTS Специальность;
DROP TABLE IF EXISTS Сотрудник;
DROP TABLE IF EXISTS Кафедра;
DROP TABLE IF EXISTS Факультет;
GO

-- 2. Создание таблиц
CREATE TABLE Факультет (
    Аббревиатура VARCHAR(10) PRIMARY KEY,
    Название VARCHAR(100) NOT NULL
);

CREATE TABLE Кафедра (
    Шифр VARCHAR(10) PRIMARY KEY,
    Название VARCHAR(100) NOT NULL,
    Факультет VARCHAR(10) FOREIGN KEY REFERENCES Факультет(Аббревиатура)
);

CREATE TABLE Сотрудник (
    Таб_номер INT PRIMARY KEY,
    Шифр VARCHAR(10) FOREIGN KEY REFERENCES Кафедра(Шифр),
    Фамилия VARCHAR(50) NOT NULL,
    Должность VARCHAR(50) NOT NULL,
    Зарплата DECIMAL(10, 2) NOT NULL,
    Шеф INT FOREIGN KEY REFERENCES Сотрудник(Таб_номер)
);

CREATE TABLE Специальность (
    Номер VARCHAR(20) PRIMARY KEY,
    Направление VARCHAR(150) NOT NULL,
    Шифр VARCHAR(10) FOREIGN KEY REFERENCES Кафедра(Шифр)
);

CREATE TABLE Дисциплина (
    Код INT PRIMARY KEY,
    Объем INT NOT NULL,
    Название VARCHAR(100) NOT NULL,
    Исполнитель VARCHAR(10) FOREIGN KEY REFERENCES Кафедра(Шифр)
);

CREATE TABLE Заявка (
    Код INT FOREIGN KEY REFERENCES Дисциплина(Код),
    Номер VARCHAR(20) FOREIGN KEY REFERENCES Специальность(Номер) NULL
);

CREATE TABLE Зав_кафедрой (
    Таб_номер INT PRIMARY KEY FOREIGN KEY REFERENCES Сотрудник(Таб_номер),
    Стаж INT NOT NULL
);

CREATE TABLE Инженер (
    Таб_номер INT PRIMARY KEY FOREIGN KEY REFERENCES Сотрудник(Таб_номер),
    Специализация VARCHAR(50) NOT NULL
);

CREATE TABLE Преподаватель (
    Таб_номер INT PRIMARY KEY FOREIGN KEY REFERENCES Сотрудник(Таб_номер),
    Звание VARCHAR(50) NOT NULL,
    Степень VARCHAR(50) NULL
);

CREATE TABLE Студент (
    Рег_номер INT PRIMARY KEY,
    Номер VARCHAR(20) FOREIGN KEY REFERENCES Специальность(Номер),
    Фамилия VARCHAR(50) NOT NULL
);

CREATE TABLE Экзамен (
    Дата DATE NOT NULL,
    Код INT FOREIGN KEY REFERENCES Дисциплина(Код),
    Рег_номер INT FOREIGN KEY REFERENCES Студент(Рег_номер),
    Таб_номер INT FOREIGN KEY REFERENCES Сотрудник(Таб_номер),
    Аудитория VARCHAR(20) NOT NULL,
    Оценка INT NOT NULL
);
GO

-- 3. Заполнение данных
INSERT INTO Факультет (Аббревиатура, Название) VALUES
('ен', 'Естественные науки'),
('гн', 'Гуманитарные науки'),
('ит', 'Информационные технологии'),
('фм', 'Физико-математический');

INSERT INTO Кафедра (Шифр, Название, Факультет) VALUES
('BM', 'Высшая математика', 'ен'),
('ис', 'Информационные системы', 'ит'),
('MM', 'Математическое моделирование', 'фм'),
('оф', 'Общая физика', 'ен'),
('пи', 'Прикладная информатика', 'ит'),
('эф', 'Экспериментальная физика', 'фм');

INSERT INTO Сотрудник (Таб_номер, Шифр, Фамилия, Должность, Зарплата, Шеф) VALUES
(101, 'пи', 'Прохоров П.П.', 'зав. кафедрой', 35000.00, 101),
(102, 'пи', 'Семенов С.С.', 'преподаватель', 25000.00, 101),
(105, 'пи', 'Петров П.П.', 'преподаватель', 25000.00, 101),
(153, 'пи', 'Сидорова С.С.', 'инженер', 15000.00, 102),
(201, 'ис', 'Андреев А.А.', 'зав. кафедрой', 35000.00, 201),
(202, 'ис', 'Борисов Б.Б.', 'преподаватель', 25000.00, 201),
(241, 'ис', 'Глухов Г.Г.', 'инженер', 20000.00, 201),
(242, 'ис', 'Чернов Ч.Ч.', 'инженер', 15000.00, 202),
(301, 'MM', 'Басов Б.Б.', 'зав. кафедрой', 35000.00, 301),
(302, 'MM', 'Сергеева С.С.', 'преподаватель', 25000.00, 301),
(401, 'оф', 'Волков В.В.', 'зав. кафедрой', 35000.00, 401),
(402, 'оф', 'Зайцев З.З.', 'преподаватель', 25000.00, 401),
(403, 'оф', 'Смирнов С.С.', 'преподаватель', 15000.00, 401),
(435, 'оф', 'Лисин Л.Л.', 'инженер', 20000.00, 402),
(501, 'BM', 'Кузнецов К.К.', 'зав. кафедрой', 35000.00, 501),
(502, 'BM', 'Романцев Р.Р.', 'преподаватель', 25000.00, 501),
(503, 'BM', 'Соловьев С.С.', 'преподаватель', 25000.00, 501),
(601, 'эф', 'Зверев З.З.', 'зав. кафедрой', 35000.00, 601),
(602, 'эф', 'Сорокина С.С.', 'преподаватель', 25000.00, 601),
(614, 'эф', 'Григорьев Г.Г.', 'инженер', 20000.00, 602);

INSERT INTO Специальность (Номер, Направление, Шифр) VALUES
('01.03.04', 'Прикладная математика', 'MM'),
('09.03.02', 'Информационные системы и технологии', 'ис'),
('09.03.03', 'Прикладная информатика', 'пи'),
('14.03.02', 'Ядерные физика и технологии', 'эф'),
('38.03.05', 'Бизнес-информатика', 'ис');

INSERT INTO Дисциплина (Код, Объем, Название, Исполнитель) VALUES
(101, 320, 'Математика', 'BM'),
(102, 160, 'Информатика', 'пи'),
(103, 160, 'Физика', 'оф'),
(202, 120, 'Базы данных', 'ис'),
(204, 160, 'Электроника', 'эф'),
(205, 80, 'Программирование', 'пи'),
(209, 80, 'Моделирование', 'MM');

INSERT INTO Заявка (Код, Номер) VALUES
(101, NULL), (205, '01.03.04'), (209, NULL), (101, NULL), (102, NULL),
(103, '09.03.02'), (202, NULL), (205, NULL), (209, NULL), (101, NULL),
(102, NULL), (103, '09.03.03'), (202, NULL), (205, NULL), (101, NULL),
(102, NULL), (103, '14.03.02'), (204, NULL), (101, NULL), (103, NULL),
(202, '38.03.05'), (209, NULL);

INSERT INTO Зав_кафедрой (Таб_номер, Стаж) VALUES
(101, 15), (201, 18), (301, 20), (401, 10), (501, 18), (601, 8);

INSERT INTO Инженер (Таб_номер, Специализация) VALUES
(153, 'электроник'), (241, 'электроник'), (242, 'программист'), (435, 'электроник'), (614, 'программист');

INSERT INTO Преподаватель (Таб_номер, Звание, Степень) VALUES
(101, 'профессор', 'Д. Т.Н.'), (102, 'доцент', 'к. ф.-м. н.'), (105, 'доцент', 'К. Т.Н.'),
(201, 'профессор', 'д. ф.-м. н.'), (202, 'доцент', 'к. ф.-м. н.'), (301, 'профессор', 'Д. Т.Н.'),
(302, 'доцент', 'К. Т.Н.'), (401, 'профессор', 'Д. Т.Н.'), (402, 'доцент', 'К. Т.Н.'),
(403, 'ассистент', NULL), (501, 'профессор', 'д. ф.-м. н.'), (502, 'профессор', 'д. ф.-м. н.'),
(503, 'доцент', 'к. ф.-м. н.'), (601, 'профессор', 'д. ф.-м. н.');

INSERT INTO Студент (Рег_номер, Номер, Фамилия) VALUES
(10101, '09.03.03', 'Николаева Н. Н.'), (10102, '09.03.03', 'Иванов И. И.'), (10103, '09.03.03', 'Крюков К. К.'),
(20101, '09.03.02', 'Андреев А. А.'), (20102, '09.03.02', 'Федоров Ф. Ф.'), (30101, '14.03.02', 'Бондаренко Б. Б.'),
(30102, '14.03.02', 'Цветков К. К.'), (30103, '14.03.02', 'Петров П. П.'), (50101, '01.03.04', 'Сергеев С. С.'),
(50102, '01.03.04', 'Кудрявцев К. К.'), (80101, '38.03.05', 'Макаров М. М.'), (80102, '38.03.05', 'Яковлев Я. Я.');

INSERT INTO Экзамен (Дата, Код, Рег_номер, Таб_номер, Аудитория, Оценка) VALUES
('2015-06-05', 102, 10101, 102, 'T505', 4), ('2015-06-05', 102, 10102, 102, 'T505', 4),
('2015-06-05', 202, 20101, 202, 'T506', 4), ('2015-06-05', 202, 20102, 202, 'T506', 3),
('2015-06-07', 102, 30101, 105, '4419', 3), ('2015-06-07', 101, 30102, 102, 'т506', 4),
('2015-06-07', 102, 80101, 102, 'м425', 5), ('2015-06-09', 205, 80102, 402, 'м424', 4),
('2015-06-09', 209, 20101, 302, '4333', 3), ('2015-06-10', 101, 10101, 501, 'T506', 4),
('2015-06-10', 101, 10102, 501, 'T506', 4), ('2015-06-10', 204, 30102, 601, '349', 5),
('2015-06-10', 209, 80101, 301, '3105', 5), ('2015-06-10', 209, 80102, 301, '3105', 4),
('2015-06-12', 101, 80101, 502, 'c324', 4), ('2015-06-15', 101, 30101, 503, '4417', 4),
('2015-06-15', 101, 50101, 501, 'ф201', 5), ('2015-06-15', 101, 50102, 501, 'ф201', 3),
('2015-06-15', 103, 10101, 403, '4414', 4), ('2015-06-17', 102, 10101, 102, 'т505', 5);
GO