· 6 years ago · Jun 07, 2019, 11:42 AM
1PRAGMA FOREIGN_KEYS = ON;
2DROP TABLE IF EXISTS Предмет_группы;
3DROP TABLE IF EXISTS Проведение_КР;
4DROP TABLE IF EXISTS Проведение_ЛР;
5DROP TABLE IF EXISTS Оценка_за_ЛР;
6DROP TABLE IF EXISTS ЛР;
7DROP TABLE IF EXISTS Оценка_за_КР;
8DROP TABLE IF EXISTS КР;
9DROP TABLE IF EXISTS Студент;
10DROP TABLE IF EXISTS Группа;
11DROP TABLE IF EXISTS Предмет;
12
13
14 Create Table Предмет (
15 Название_предмета text primary key);
16
17 Create Table Группа (
18 №_группы integer primary key,
19 Факультет text,
20 №_зачетки_старосты integer);
21
22 Create Table КР (
23 id_КР integer check (id_КР > 0),
24 Название_предмета text,
25 primary key(id_КР),
26 foreign key(Название_предмета) references Предмет(Название_предмета));
27
28 Create Table Студент (
29 №_зачетки integer check (№_зачетки > 0),
30 ФИО text,
31 №_группы integer,
32 Стипендия integer check (Стипендия >= 0),
33 primary key(№_зачетки),
34 foreign key(№_группы) references Группа(№_группы));
35
36 Create Table Оценка_за_КР (
37 Оценка integer check (Оценка >=2 and Оценка <=5),
38 Дата_сдачи date,
39 id_КР integer check (id_КР >= 0),
40 №_зачетки integer,
41 primary key(№_зачетки, id_КР),
42 foreign key(№_зачетки) references Студент(№_зачетки),
43 foreign key(id_КР) references КР(id_КР));
44
45 Create Table ЛР (
46 id_ЛР integer check (id_ЛР >0),
47 Название_предмета text,
48 Номер_лабы integer,
49 primary key(id_ЛР),
50 foreign key(Название_предмета) references Предмет(Название_предмета));
51
52 Create Table Оценка_за_ЛР (
53 Оценка integer check (Оценка >=2 and Оценка <=5),
54 Дата_сдачи date,
55 id_ЛР integer check (id_ЛР >0),
56 №_зачетки integer,
57 Номер_лабы integer,
58 primary key(№_зачетки, id_ЛР),
59 foreign key(id_ЛР) references ЛР(id_ЛР),
60 foreign key(№_зачетки) references Студент(№_зачетки));
61
62 Create Table Проведение_ЛР (
63 Дата_сдачи date,
64 №_группы integer,
65 id_ЛР integer check (id_ЛР >0),
66 primary key(№_группы, id_ЛР),
67 foreign key(№_группы) references Группа(№_группы),
68 foreign key(id_ЛР) references ЛР(id_ЛР));
69
70 Create Table Проведение_КР (
71 Дата_сдачи date,
72 №_группы integer,
73 id_КР integer check (id_КР >0),
74 primary key(№_группы, id_КР),
75 foreign key(№_группы) references Группа(№_группы),
76 foreign key(id_КР) references КР(id_КР));
77
78 Create Table Предмет_группы (
79 №_группы integer,
80 Название_предмета text,
81 primary key(Название_предмета, №_группы),
82 foreign key(Название_предмета) references Предмет(Название_предмета),
83 foreign key(№_группы) references Группа(№_группы));
84
85 insert into Предмет values ('Базы данных');
86insert into Предмет values ('ИКГ');
87insert into Предмет values ('Моделирование');
88
89 insert into Группа values (4641, 4, 4111);
90insert into Группа values (4642, 4, 4222);
91insert into Группа values (4643, 4, 4333);
92insert into Группа values (5641, 5, 5111);
93insert into Группа values (5642, 5, 5222);
94insert into Группа values (5643, 5, 5333);
95
96insert into КР values (1, 'Базы данных');
97insert into КР values (2, 'Базы данных');
98insert into КР values (3, 'ИКГ');
99insert into КР values (4, 'Моделирование');
100
101 insert into Студент values (123, 'Иванов', 4642, 3000);
102insert into Студент values (124, 'Щенников',4642, 3000);
103insert into Студент values (125, 'Дук', 4641, 2000);
104insert into Студент values (126, 'Блинов', 4642, 0);
105insert into Студент values (127, 'Твардовский', 4643, 3000);
106insert into Студент values (128, 'Швыдков', 4643, 0);
107
108 insert into Оценка_за_КР values (5, '2019-04-20', 1, 123);
109insert into Оценка_за_КР values (5, '2019-04-20', 1, 124);
110insert into Оценка_за_КР values (4, '2019-04-18', 1, 125);
111insert into Оценка_за_КР values (3, '2019-04-18', 1, 126);
112insert into Оценка_за_КР values (4, '2019-04-20', 3, 123);
113insert into Оценка_за_КР values (4, '2019-04-20', 3, 124);
114insert into Оценка_за_КР values (5, '2019-04-18', 3, 125);
115insert into Оценка_за_КР values (5, '2019-04-18', 3, 126);
116
117 insert into ЛР values (1, 'Базы данных',1);
118insert into ЛР values (2, 'Базы данных',2);
119insert into ЛР values (3, 'Базы данных',3);
120insert into ЛР values (11, 'Моделирование',1);
121insert into ЛР values (22, 'Моделирование',2);
122insert into ЛР values (33, 'Моделирование',3);
123
124 insert into Оценка_за_ЛР values (5, '2019-04-01', 1, 123,1);
125insert into Оценка_за_ЛР values (4, '2019-04-01', 1, 124,1);
126insert into Оценка_за_ЛР values (3, '2019-04-02', 1, 125,1);
127insert into Оценка_за_ЛР values (5, '2019-04-02', 1, 126,1);
128insert into Оценка_за_ЛР values (5, '2019-04-02', 11, 123,1);
129--insert into Оценка_за_ЛР values (4, '2019-04-02', 22, 124,2);
130insert into Оценка_за_ЛР values (3, '2019-04-02', 33, 125,3);
131
132 insert into Проведение_ЛР values ('2019-04-02', 4641, 1);
133insert into Проведение_ЛР values ('2019-04-01', 4642, 1);
134insert into Проведение_ЛР values ('2019-04-03', 4643, 1);
135
136 insert into Проведение_КР values ('2019-04-02', 4641, 1);
137insert into Проведение_КР values ('2019-04-01', 4642, 1);
138insert into Проведение_КР values ('2019-04-03', 4643, 1);
139
140 insert into Предмет_группы values (4641, 'Базы данных');
141insert into Предмет_группы values (4642, 'Базы данных');
142insert into Предмет_группы values (4643, 'Базы данных');
143insert into Предмет_группы values (4641, 'ИКГ');
144insert into Предмет_группы values (4642, 'ИКГ');
145insert into Предмет_группы values (4643, 'ИКГ');
146insert into Предмет_группы values (4641, 'Моделирование');
147insert into Предмет_группы values (4642, 'Моделирование');
148insert into Предмет_группы values (4643, 'Моделирование');
149
150
151DROP TRIGGER IF EXISTS Trigger4;
152CREATE TRIGGER Trigger4 after insert on Оценка_за_ЛР
153when not exists ( select *
154 from Оценка_за_ЛР natural join ЛР
155 where new.№_зачетки = №_зачетки and Название_предмета in ( select Название_предмета
156 from Оценка_за_ЛР natural join ЛР
157 where new.id_ЛР = id_ЛР limit 1) and new.Номер_лабы = Номер_лабы +1 )
158begin
159 select raise(rollback, "НЕ НАДО!!!");
160end;
161
162insert into Оценка_за_ЛР values (5, '2019-04-01', 3, 123,3);