Advertisement
Guest User

Untitled

a guest
May 21st, 2019
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.99 KB | None | 0 0
  1. -- Лабораторная работа №3, дисциплина "Базы данных", СПбГУАП, весенний семестр 2019
  2.  
  3. -- Включение форсирования ограничений ссылочной целостности
  4. PRAGMA foreign_keys = ON;
  5.  
  6. -- Очистка схемы данных
  7. PRAGMA FOREIGN_KEYS=ON;
  8. DROP TABLE IF EXISTS Прогон;
  9. DROP TABLE IF EXISTS Выступление;
  10. DROP TABLE IF EXISTS Репетиция;
  11. DROP TABLE IF EXISTS Участие_сотрудника_спектакле;
  12. DROP TABLE IF EXISTS Строка_расписания;
  13. DROP TABLE IF EXISTS Предмет_спектакля;
  14. DROP TABLE IF EXISTS Роль;
  15. DROP TABLE IF EXISTS Спектакль;
  16. DROP TABLE IF EXISTS Актер;
  17. DROP TABLE IF EXISTS Предмет;
  18. DROP TABLE IF EXISTS Сотрудник;
  19.  
  20. -- Создание схемы данных
  21. create table Сотрудник(
  22. ФИО text default('Герман'),
  23. Паспорт integer primary key,
  24. Домашний_адрес text,
  25. Мобильный_телефон text,
  26. Домашний_телефон text,
  27. Должность text);
  28.  
  29. create table Предмет(
  30. Название_предмета text,
  31. Код_предмета integer primary key,
  32. Тип_предмета text);
  33.  
  34. create table Актер(
  35. ФИО text,
  36. Код_актера integer primary key,
  37. Амплуа text,
  38. Мобильный_телефон text,
  39. Домашний_телефон text,
  40. CHECK (Мобильный_телефон OR Домашний_телефон));
  41.  
  42. create table Спектакль(
  43. Название_спектакля text,
  44. Автор text,
  45. Год_постановки integer,
  46. Жанр text,
  47. Количество_актов integer,
  48. Сюжет text,
  49. primary key(Название_спектакля, Год_постановки),
  50. CHECK(Год_постановки <= strftime('%Y','now')));
  51.  
  52. create table Роль(
  53. Название_роли text,
  54. Тип_роли text,
  55. Название_пьесы text,
  56. Год_постановки integer,
  57. foreign key(Название_пьесы, Год_постановки)references Спектакль(Название_спектакля, Год_постановки),
  58. primary key(Название_роли, Название_пьесы, Год_постановки));
  59.  
  60. create table Предмет_спектакля(
  61. Код_предмета integer,
  62. Название_спектакля text,
  63. Год_постановки integer,
  64. foreign key(Код_предмета)references Предмет(Код_предмета),
  65. foreign key(Название_спектакля, Год_постановки)references Спектакль(Название_спектакля, Год_постановки),
  66. primary key(Код_предмета, Название_спектакля, Год_постановки));
  67.  
  68. create table Строка_расписания(
  69. Дата_спектакля date,
  70. Время_спектакля time,
  71. Стоимость_билета integer,
  72. Название_спектакля text,
  73. Год_постановки integer,
  74. foreign key(Название_спектакля, Год_постановки)references Спектакль(Название_спектакля, Год_постановки),
  75. primary key(Дата_спектакля, Время_спектакля));
  76.  
  77. create table Участие_сотрудника_спектакле(
  78. Паспорт integer,
  79. Дата_спектакля date,
  80. Время_спектакля time,
  81. foreign key(Паспорт)references Сотрудник(Паспорт),
  82. foreign key(Дата_спектакля, Время_спектакля)references Строка_расписания(Дата_спектакля, Время_спектакля),
  83. primary key(Паспорт, Дата_спектакля, Время_спектакля));
  84.  
  85. create table Репетиция(
  86. Дата_репетиции date,
  87. Время_репетиции time,
  88. Название_спектакля text,
  89. Год_постановки integer,
  90. foreign key(Название_спектакля, Год_постановки)references Спектакль(Название_спектакля, Год_постановки),
  91. primary key(Дата_репетиции, Время_репетиции));
  92.  
  93. create table Выступление(
  94. Дата_спектакля date,
  95. Время_спектакля time,
  96. Код_актера integer,
  97. Название_роли text,
  98. Название_пьесы text,
  99. Год_постановки integer,
  100. foreign key(Дата_спектакля, Время_спектакля)references Строка_расписания(Дата_спектакля, Время_спектакля),
  101. foreign key(Код_актера)references Актер(Код_актера),
  102. foreign key(Название_роли, Название_пьесы, Год_постановки)references Роль(Название_роли, Название_пьесы, Год_постановки),
  103. primary key(Дата_спектакля, Время_спектакля, Название_роли, Название_пьесы));
  104.  
  105. create table Прогон(
  106. Дата_репетиции date,
  107. Время_репетиции time,
  108. Код_актера integer,
  109. Название_роли text,
  110. Название_пьесы text,
  111. Год_постановки integer,
  112. foreign key(Дата_репетиции, Время_репетиции)references Репетиция(Дата_репетиции, Время_репетиции),
  113. foreign key(Код_актера)references Актер(Код_актера),
  114. foreign key(Название_роли, Название_пьесы, Год_постановки)references Роль(Название_роли, Название_пьесы, Год_постановки),
  115. primary key(Дата_репетиции, Время_репетиции, Название_роли, Название_пьесы));
  116.  
  117. -- Заполнение данными
  118. insert into Актер values('Антонов',1,'Кокет','92138','32374');
  119. insert into Актер values('Гавриленко',2,'Трагик','11111','');
  120. insert into Актер values('Нагорных',3,'Грасьосо','','7776');
  121. insert into Актер values('Габен',4,'Простак','','12123');
  122.  
  123. insert into Сотрудник values('Бондаренко',1825494,'Улица Бондаря','4632730684','','Суфлер');
  124. insert into Сотрудник values('Копытин',2281337,'Улица Колотушкина','5553535','235256','Повар');
  125. insert into Сотрудник values('Гаврила',2281477,'Улица Пушкина','777777','','Уборщик');
  126. insert into Сотрудник values('Блинов',3456789,'Улица Блинов','34446','','Грузчик');
  127.  
  128. insert into Предмет values('Зонт',1,'Инвентарь');
  129. insert into Предмет values('Стул',2,'Мебель');
  130. insert into Предмет values('Стол',3,'Мебель');
  131. insert into Предмет values('Шкаф',4,'Мебель');
  132. insert into Предмет values('Костюм Льва',5,'Костюм');
  133. insert into Предмет values('Тестовый костюм',6,'Костюм');
  134.  
  135. insert into Спектакль values('Лебединое озеро','Чайковский',2010,'Комедия',3,'Ьез спойлеров');
  136. insert into Спектакль values('Ромео и Джульета','Шекспир',2018,'Драма',3,'Ьез спойлеров');
  137. insert into Спектакль values('Трагическая история о Гамлете','Шекспир',2017,'Трагедия',1,'Ьез спойлеров');
  138. insert into Спектакль values('Щелкунчик','Чайковский',2016,'Боевик',2,'Ьез спойлеров');
  139.  
  140. insert into Роль values('Гамлет','Первого плана','Трагическая история о Гамлете', 2017);
  141. insert into Роль values('Джульета','Первого плана','Ромео и Джульета', 2018);
  142. insert into Роль values('Йорик','Второго плана','Трагическая история о Гамлете', 2017);
  143. insert into Роль values('Ромео','Первого плана','Ромео и Джульета', 2018);
  144. insert into Роль values('Лебедь','Первого плана','Лебединое озеро',2010);
  145.  
  146. insert into Предмет_спектакля values(1,'Ромео и Джульета',2018);
  147. insert into Предмет_спектакля values(2,'Ромео и Джульета',2018);
  148. insert into Предмет_спектакля values(3,'Лебединое озеро',2010);
  149. insert into Предмет_спектакля values(4,'Трагическая история о Гамлете',2017);
  150. insert into Предмет_спектакля values(5,'Щелкунчик',2016);
  151.  
  152. insert into Строка_расписания values('2019-04-20','18:00:00',2000,'Лебединое озеро',2010);
  153. insert into Строка_расписания values('2019-04-20','21:30:00',3500,'Ромео и Джульета',2018);
  154. insert into Строка_расписания values('2019-05-20','21:30:00',3500,'Ромео и Джульета',2018);
  155. --insert into Строка_расписания values('2019-05-08','17:00:00',2000,'Щелкунчик',2016);
  156. insert into Строка_расписания values('2019-05-10','17:00:00',2500,'Трагическая история о Гамлете',2017);
  157.  
  158. insert into Строка_расписания values('2019-01-20','21:30:00',3500,'Ромео и Джульета',2018);
  159. insert into Строка_расписания values('2018-02-05','21:30:00',3500,'Лебединое озеро',2010);
  160.  
  161. --insert into Строка_расписания values('2018-02-06','16:30:00',3500,'Лебединое озеро',2010);
  162. --insert into Строка_расписания values('2018-02-07','16:30:00',3500,'Лебединое озеро',2010);
  163. --insert into Строка_расписания values('2018-02-08','16:30:00',3500,'Лебединое озеро',2010);
  164.  
  165.  
  166. --insert into Участие_сотрудника_спектакле values(1825494,'2019-05-08','17:00:00');
  167. insert into Участие_сотрудника_спектакле values(2281337,'2019-04-20','18:00:00');
  168. insert into Участие_сотрудника_спектакле values(2281477,'2019-04-20','18:00:00');
  169. insert into Участие_сотрудника_спектакле values(3456789,'2019-05-10','17:00:00');
  170.  
  171. insert into Репетиция values('2019-04-17','14:00:00','Лебединое озеро',2010);
  172. insert into Репетиция values('2019-04-17','17:00:00','Ромео и Джульета',2018);
  173. insert into Репетиция values('2019-04-17','16:00:00','Ромео и Джульета',2018);--
  174. insert into Репетиция values('2019-04-17','15:00:00','Ромео и Джульета',2018);--
  175. insert into Репетиция values('2019-04-19','17:00:00','Ромео и Джульета',2018);
  176. insert into Репетиция values('2019-04-25','17:00:00','Ромео и Джульета',2018);
  177. insert into Репетиция values('2019-04-18','18:00:00','Лебединое озеро',2010);
  178. insert into Репетиция values('2019-04-18','20:00:00','Трагическая история о Гамлете',2017);
  179. insert into Репетиция values('2019-04-20','16:00:00','Щелкунчик',2016);
  180.  
  181.  
  182. --insert into Спектакль values('Лебединое озеро','Чайковский',2010,'Комедия',3,'Ьез спойлеров');
  183. --insert into Спектакль values('Ромео и Джульета','Шекспир',2018,'Драма',3,'Ьез спойлеров');
  184. --insert into Спектакль values('Трагическая история о Гамлете','Шекспир',2017,'Трагедия',1,'Ьез спойлеров');
  185. --insert into Спектакль values('Щелкунчик','Чайковский',2016,'Боевик',2,'Ьез спойлеров');
  186.  
  187. insert into Выступление values('2019-04-20','21:30:00',2,'Джульета','Ромео и Джульета',2018);
  188. insert into Выступление values('2019-04-20','21:30:00',3,'Ромео','Ромео и Джульета',2018);--1
  189. insert into Выступление values('2019-05-20','21:30:00',2,'Джульета','Ромео и Джульета',2018);
  190. insert into Выступление values('2019-05-20','21:30:00',1,'Ромео','Ромео и Джульета',2018);--1
  191. insert into Выступление values('2019-05-10','17:00:00',3,'Гамлет','Трагическая история о Гамлете',2017);
  192. insert into Выступление values('2019-05-10','17:00:00',4,'Йорик','Трагическая история о Гамлете',2017);
  193.  
  194. insert into Выступление values('2019-01-20','21:30:00',2,'Джульета','Ромео и Джульета',2018);
  195. insert into Выступление values('2019-01-20','21:30:00',1,'Ромео','Ромео и Джульета',2018);
  196. insert into Выступление values('2018-02-05','21:30:00',1,'Лебедь','Лебединое озеро',2010);
  197.  
  198. insert into Прогон values('2019-04-17','17:00:00',2,'Джульета','Ромео и Джульета',2018);
  199. insert into Прогон values('2019-04-17','17:00:00',1,'Ромео','Ромео и Джульета',2018);
  200. insert into Прогон values('2019-04-19','17:00:00',2,'Джульета','Ромео и Джульета',2018);
  201. insert into Прогон values('2019-04-19','17:00:00',1,'Ромео','Ромео и Джульета',2018);
  202. insert into Прогон values('2019-04-25','17:00:00',2,'Джульета','Ромео и Джульета',2018);
  203. insert into Прогон values('2019-04-25','17:00:00',1,'Ромео','Ромео и Джульета',2018);
  204. insert into Прогон values('2019-04-18','20:00:00',3,'Гамлет','Трагическая история о Гамлете',2017);
  205. insert into Прогон values('2019-04-18','20:00:00',4,'Йорик','Трагическая история о Гамлете',2017);
  206.  
  207.  
  208.  
  209.  
  210. DROP TRIGGER IF EXISTS Trigger3
  211. CREATE TRIGGER Trigger3
  212. after insert
  213. on Прогон
  214. when new.Дата_репетиции in ( select Дата_репетиции
  215. from Прогон
  216. where new.Код_актера = Код_актера
  217. group by Код_актера, Дата_репетиции
  218. having count(*) > 2 )
  219. begin
  220. select raise(ROLLBACK,"Остынь актеришко");
  221. End;
  222.  
  223.  
  224. insert into Строка_расписания values('2019-05-08','17:00:00',2000,'Щелкунчик',2016);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement