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


-- =========================================================================
-- УДАЛЕНИЕ СУЩЕСТВУЮЩИХ ТАБЛИЦ (в обратном порядке из-за внешних ключей)
-- =========================================================================
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

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

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

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

-- 3. Таблица: Сотрудник
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 Сотрудник(Таб_номер)
);
GO

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

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

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

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

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

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

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

-- 11. Таблица: Экзамен
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

-- =========================================================================
-- ЗАПОЛНЕНИЕ ДАННЫМИ
-- =========================================================================

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

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

-- Заполнение таблицы: Сотрудник
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);
GO

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

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

-- Заполнение таблицы: Заявка
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);
GO

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

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

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

-- Заполнение таблицы: Студент
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', 'Яковлев Я. Я.');
GO

-- Заполнение таблицы: Экзамен
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