· 8 years ago · Jun 15, 2018, 03:24 PM
1-- Ð›Ð°Ð±Ð¾Ñ€Ð°Ñ‚Ð¾Ñ€Ð½Ð°Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð° â„–3, диÑциплина "Базы данных", СПбГУÐП, веÑна-лето 2018
2
3-- Включение форÑÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ð¹ ÑÑылочной целоÑтноÑти
4PRAGMA foreign_keys = ON;
5
6-- ОчиÑтка Ñхемы данных
7
8DROP TABLE IF EXISTS ДиÑциплина_у_ÑпециальноÑти;
9DROP TABLE IF EXISTS ЗанÑтие_у_группы;
10DROP TABLE IF EXISTS ЗанÑтие;
11DROP TABLE IF EXISTS Группа;
12DROP TABLE IF EXISTS Преподаватель;
13DROP TABLE IF EXISTS Предмет;
14DROP TABLE IF EXISTS ÐудиториÑ;
15DROP TABLE IF EXISTS Кафедра;
16DROP TABLE IF EXISTS СпециальноÑть;
17
18-- Создание Ñхемы данных
19
20CREATE TABLE ÐÑƒÐ´Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ (
21Ðомер_аудитории VARCHAR(8) PRIMARY KEY
22);
23
24CREATE TABLE Предмет (
25Ðазвание TEXT PRIMARY KEY
26);
27
28CREATE TABLE Кафедра (
29Ðазвание TEXT,
30Ðомер INT PRIMARY KEY
31);
32
33CREATE TABLE Преподаватель (
34Ðомер_паÑпорта VARCHAR(11)PRIMARY KEY,
35Ðомер_кафедры INT REFERENCES Кафедра(Ðомер),
36ФИО TEXT ,
37ДолжноÑть TEXT
38);
39
40CREATE TABLE СпециальноÑть (
41Ðазвание TEXT,
42Ðомер_ÑпециальноÑти VARCHAR(10) PRIMARY KEY
43);
44
45CREATE TABLE ДиÑциплина_у_ÑпециальноÑти (
46Объем_лабораторных_занÑтий INT,
47Объем_практичеÑких_занÑтий INT,
48Объем_лекционных_занÑтий INT CHECK (Объем_лекционных_занÑтий<60),
49КурÑовой_проект VARCHAR(4),
50Ðомер_ÑемеÑтра INT,
51Ðомер_ÑпециальноÑти VARCHAR(10) REFERENCES СпециальноÑть(Ðомер_ÑпециальноÑти),
52Ðазвание_предмета TEXT,
53PRIMARY KEY (Ðомер_ÑпециальноÑти,Ðазвание_предмета),
54FOREIGN KEY(Ðазвание_предмета) REFERENCES Предмет(Ðазвание)
55);
56
57CREATE TABLE Группа (
58Ðомер_группы VARCHAR(5),
59Ðомер_ÑпециальноÑти VARCHAR(10) REFERENCES СпециальноÑть(Ðомер_ÑпециальноÑти) ,
60Ðомер_ÑемеÑтра INT,
61PRIMARY KEY (Ðомер_группы)
62
63);
64CREATE TABLE ЗанÑтие (
65Тип TEXT,
66Ðомер_занÑÑ‚Ð¸Ñ INTEGER CHECK (([День_недели]="Понедельник" And [Ðомер_занÑтиÑ]<=8) Or ([День_недели]="Вторник" And [Ðомер_занÑтиÑ]<=8) Or ([День_недели]="Среда" And [Ðомер_занÑтиÑ]<=8) Or ([День_недели]="Четверг" And [Ðомер_занÑтиÑ]<=8) Or ([День_недели]="ПÑтница" And [Ðомер_занÑтиÑ]<=8) Or ([День_недели]="Суббота" And [Ðомер_занÑтиÑ]<=6)),
67День_недели TEXT ,
68Ðомер_аудитории VARCHAR(8) REFERENCES ÐудиториÑ(Ðомер_аудитории),
69Ðомер_паÑпорта_Ð¿Ñ€ÐµÐ¿Ð¾Ð´Ð°Ð²Ð°Ñ‚ÐµÐ»Ñ VARCHAR(11) REFERENCES Преподаватель(Ðомер_паÑпорта),
70Предмет TEXT references Предмет(Ðазвание),
71PRIMARY KEY (Ðомер_занÑтиÑ, День_недели, Ðомер_аудитории)
72);
73
74CREATE TABLE ЗанÑтие_у_группы (
75Ðомер_группы VARCHAR(5),
76Ðомер_занÑÑ‚Ð¸Ñ INTEGER,
77День_недели TEXT,
78Ðомер_аудитории VARCHAR(8),
79PRIMARY KEY (Ðомер_группы, Ðомер_занÑтиÑ, День_недели, Ðомер_аудитории),
80UNIQUE (Ðомер_группы,Ðомер_занÑтиÑ,День_недели),
81FOREIGN KEY(Ðомер_занÑтиÑ, День_недели, Ðомер_аудитории) REFERENCES ЗанÑтие (Ðомер_занÑтиÑ, День_недели, Ðомер_аудитории),
82FOREIGN KEY(Ðомер_группы) REFERENCES Группа(Ðомер_группы)
83);
84
85-- Заполнение данными
86
87INSERT INTO ÐÑƒÐ´Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ VALUES ('32-02'), ('32-04'),('24-03'),('12-03'), ('12-15'),('13-15'), ('52-08'), ('32-09');
88INSERT INTO Кафедра VALUES ('Кафедра вычиÑлительных ÑиÑтем и Ñетей',44), ('Кафедра проблемно-ориентированных вычиÑлительных комплекÑов',41), ('Кафедра компьютерных технологий и программной инженерии',43);
89DROP VIEW IF EXISTS View1;
90DROP VIEW IF EXISTS View2;
91-- ваш код здеÑÑŒ!
92
93-- Создание предÑтавлений
94-- 1) Группы ÑпециальноÑти "ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð°Ñ Ð¸Ð½Ð¶ÐµÐ½ÐµÑ€Ð¸Ñ", у которых не назначено каких-то пар из тех, которые должны быть в Ñтом ÑемеÑтре.
95--CREATE VIEW View1 AS
96--Select Предмет from Select Ðазвание_предмета from ДиÑциплина_у_ÑпециальноÑти where Ðомер_ÑпециальноÑти=(Select Ðомер_ÑпециальноÑти from СпециальноÑть where Ðазвание='ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð°Ñ Ð¸Ð½Ð¶ÐµÐ½ÐµÑ€Ð¸Ñ') Group by Ðомер_ÑемеÑтра,Ðазвание_предмета;
97
98
99INSERT INTO Предмет VALUES ('Ð¢ÐµÐ¾Ñ€Ð¸Ñ Ð°Ð»Ð³Ð¾Ñ€Ð¸Ñ‚Ð¼Ð¾Ð²'), ('Ð¢ÐµÑ…Ð½Ð¾Ð»Ð¾Ð³Ð¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ'), ('Моделирование'),('МикропроцеÑÑорные ÑиÑтемы'),('Ð˜Ð½Ñ‚ÐµÑ€Ð°ÐºÑ‚Ð¸Ð²Ð½Ð°Ñ ÐºÐ¾Ð¼Ð¿ÑŒÑŽÑ‚ÐµÑ€Ð½Ð°Ñ Ð³Ñ€Ð°Ñ„Ð¸ÐºÐ°'), ('СиÑтемное программное обеÑпечение'),('Операционные ÑиÑтемы'), ('Схемотехника'), ('Базы данных'), ('Корпоративные Ñети Ñо Ñлужбой каталога');
100INSERT INTO Преподаватель VALUES ('2345 435432', 44, 'Петров Игорь Юрьевич', 'Старший преподаватель'), ('5756 214324', 43, 'Пинцкер ВаÑилий Ðнатольевич', 'ПрофеÑÑор'), ('7654 315543', 44, 'Ðрхипов Евгений ÐлекÑеевич', 'ПрофеÑÑор'), ('8765 254674', 41, 'БелÑков Дмитрий Ðндреевич', 'ÐÑÑиÑтент');
101INSERT INTO ЗанÑтие VALUES --('Практика', 3, 'Четверг', '24-03','5756 214324','Операционные ÑиÑтемы'),
102('ЛекциÑ', 4, 'Четверг', '24-03','8765 254674','Операционные ÑиÑтемы'),
103 ('Практика', 3, 'Вторник', '24-03','5756 214324','Моделирование'),
104 ('ЛекциÑ', 3, 'Понедельник', '32-02','2345 435432', 'Корпоративные Ñети Ñо Ñлужбой каталога'),
105 ('Практика', 2, 'Вторник', '24-03','5756 214324','Моделирование'),
106 ('Практика', 4, 'ПÑтница', '12-03','5756 214324','Ð¢ÐµÑ…Ð½Ð¾Ð»Ð¾Ð³Ð¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ'),
107 ('Ð›Ð°Ð±Ð¾Ñ€Ð°Ñ‚Ð¾Ñ€Ð½Ð°Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð°', 4, 'ПÑтница', '12-15','7654 315543','Операционные ÑиÑтемы'),
108 ('Ð›Ð°Ð±Ð¾Ñ€Ð°Ñ‚Ð¾Ñ€Ð½Ð°Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð°', 5, 'Суббота', '13-15','7654 315543','Моделирование'),
109 ('Практика', 3, 'Четверг', '12-03','7654 315543','Базы данных'),
110 ('ЛекциÑ', 4, 'Четверг', '52-08','8765 254674','Операционные ÑиÑтемы'),
111 ('Практика', 4, 'Среда', '32-04','8765 254674','МикропроцеÑÑорные ÑиÑтемы'),
112 ('Практика', 6, 'Вторник', '32-09','8765 254674','Схемотехника'),
113 ('ЛекциÑ', 5, 'Вторник', '32-09','7654 315543','Ð¢ÐµÑ…Ð½Ð¾Ð»Ð¾Ð³Ð¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ');
114INSERT INTO СпециальноÑть VALUES ('Информатика и вычиÑÐ»Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ‚ÐµÑ…Ð½Ð¸ÐºÐ°','09.03.01'), ('ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð°Ñ Ð¸Ð½Ð¶ÐµÐ½ÐµÑ€Ð¸Ñ','09.03.04'), ('ÐŸÑ€Ð¸ÐºÐ»Ð°Ð´Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸ÐºÐ°','09.03.03'),('Ðлектроника и наноÑлектроника','11.03.04'),('МатематичеÑкое обеÑпечение','02.03.03'), ('ÐŸÑ€Ð¸ÐºÐ»Ð°Ð´Ð½Ð°Ñ Ð¼Ð°Ñ‚ÐµÐ¼Ð°Ñ‚Ð¸ÐºÐ° и информатика','01.03.02');
115INSERT INTO Группа VALUES ('4732', '09.03.04', 2),('4542', '09.03.01', 6), ('4541','09.03.01', 6), ('4731','09.03.04', 2), ('4512', '09.03.03', 6),('4431', '11.03.04', 8),('4543','09.03.01', 6),('4735', '01.03.02', 2),('4735М', '02.03.03', 2),('4531', '11.03.04', 6),('4515', '09.03.03', 6);
116INSERT INTO ЗанÑтие_у_группы VALUES --('4731', 3, 'Четверг', '24-03'),
117('4732', 4, 'Четверг', '24-03'),
118('4732', 3, 'Вторник', '24-03'),('4542', 3, 'Понедельник', '32-02'), ('4541', 3, 'Понедельник', '32-02'),('4731', 2, 'Вторник', '24-03'), ('4512', 4, 'ПÑтница', '12-03'),('4735', 4, 'ПÑтница', '12-15'),('4431', 5, 'Суббота', '13-15'),('4543', 3, 'Четверг', '12-03'),('4735', 4, 'Четверг', '52-08'),('4735М', 4, 'Среда', '32-04'),('4531', 6, 'Вторник', '32-09'),('4515', 5, 'Вторник', '32-09');
119CREATE VIEW View1 AS
120 SELECT X.Тип,COUNT( DISTINCT X.Тип)*100/COUNT (DISTINCT Y.Тип) Процент
121 FROM ЗанÑтие X, ЗанÑтие Y where X.Тип='ЛекциÑ'; --and Ðомер_паÑпорта_преподавателÑ=(Select Ðомер_паÑпорта From Преподаватель where Ðомер_кафедры=(Select Ðомер From Кафедра ));
122
123CREATE VIEW View2 AS
124Select Ðомер_группы from
125Группа where Ðомер_группы not in( SELECT Ðомер_группы FROM
126ЗанÑтие_у_группы natural join ЗанÑтие where
127Предмет<>(Select Ðазвание_предмета from
128ДиÑциплина_у_ÑпециальноÑти where
129Ðомер_ÑпециальноÑти=(Select Ðомер_ÑпециальноÑти from
130СпециальноÑть where Ðазвание='ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð°Ñ Ð¸Ð½Ð¶ÐµÐ½ÐµÑ€Ð¸Ñ') Group by Ðомер_ÑемеÑтра,Ðазвание_предмета))
131and Ðомер_ÑпециальноÑти=(Select Ðомер_ÑпециальноÑти from
132СпециальноÑть where Ðазвание='ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð°Ñ Ð¸Ð½Ð¶ÐµÐ½ÐµÑ€Ð¸Ñ');
133
134INSERT INTO ДиÑциплина_у_ÑпециальноÑти VALUES (33, 53, 58, 'нет',6,'09.03.01','Корпоративные Ñети Ñо Ñлужбой каталога'), (25, 23, 27, 'нет',2,'01.03.02','Операционные ÑиÑтемы'), (43, 22, 31, 'нет',6,'09.03.01','Ð˜Ð½Ñ‚ÐµÑ€Ð°ÐºÑ‚Ð¸Ð²Ð½Ð°Ñ ÐºÐ¾Ð¼Ð¿ÑŒÑŽÑ‚ÐµÑ€Ð½Ð°Ñ Ð³Ñ€Ð°Ñ„Ð¸ÐºÐ°'),(15, 44, 24, 'нет',8,'11.03.04','Моделирование'),(0, 50, 0, 'еÑть',2,'02.03.03','СиÑтемное программное обеÑпечение'),(23, 25, 14, 'нет',4,'01.03.02','Ð¢ÐµÑ…Ð½Ð¾Ð»Ð¾Ð³Ð¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ'),(37, 73, 15, 'нет',6,'09.03.01','Базы данных'),(47, 34, 32, 'еÑть',2,'11.03.04','Схемотехника'),(15, 24, 42, 'нет',2,'09.03.04','Операционные ÑиÑтемы'),(33, 43, 21, 'нет',6,'09.03.03','Ð¢ÐµÑ…Ð½Ð¾Ð»Ð¾Ð³Ð¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ'),(25, 56, 42, 'нет',2,'09.03.04','Моделирование'),(25, 56, 42, 'нет',2,'02.03.03','МикропроцеÑÑорные ÑиÑтемы');