Advertisement
Guest User

Untitled

a guest
Nov 25th, 2015
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.34 KB | None | 0 0
  1. CREATE DATABASE DBSDU;
  2. USE DBSDU;
  3.  
  4. DROP TABLE IF EXISTS Person, Tourist, Provider, CoTraveler, Adress, Accomodation, Service, Cantoned, Reside, Institution, Headoffice, CategoryInstitution, EmailContact, FaxContact, PhoneContact, Event;
  5.  
  6. /*VYTVORENIE TABULIEK*/
  7.  
  8. CREATE TABLE Person (
  9. login VARCHAR(20) PRIMARY KEY,
  10. password VARCHAR(12) NOT NULL
  11. );
  12.  
  13. CREATE TABLE Tourist (
  14. login VARCHAR(20) REFERENCES Person (login),
  15. PRIMARY KEY(login)
  16. );
  17.  
  18. CREATE TABLE Provider (
  19. login VARCHAR(20) REFERENCES Person (login),
  20. rating FLOAT,
  21. PRIMARY KEY(login)
  22. );
  23.  
  24. CREATE TABLE Telephone (
  25. login VARCHAR(20),
  26. phone VARCHAR(15),
  27. PRIMARY KEY (login, phone),
  28. CONSTRAINT fk_phone_owner FOREIGN KEY(login) REFERENCES Provider (login) ON DELETE CASCADE
  29. );
  30.  
  31. CREATE TABLE CoTraveler (
  32. login1 VARCHAR(20) REFERENCES Tourist (login),
  33. login2 VARCHAR(20) UNIQUE NOT NULL REFERENCES Tourist (login),
  34. PRIMARY KEY(login1)
  35. );
  36.  
  37. CREATE TABLE Adress (
  38. street VARCHAR(20),
  39. housenumber VARCHAR(10),
  40. postcode VARCHAR(5),
  41. PRIMARY KEY (street,housenumber,postcode)
  42. );
  43.  
  44. CREATE TABLE Accomodation (
  45. name VARCHAR(255) NOT NULL,
  46. ID INT UNIQUE NOT NULL,
  47. capacity INT NOT NULL,
  48. rating INT NOT NULL,
  49. street VARCHAR(255) REFERENCES Adress (street),
  50. housenumber VARCHAR(255) REFERENCES Adress (housenumber),
  51. postcode VARCHAR(255) REFERENCES Adress (postcode),
  52. PRIMARY KEY (street, housenumber,postcode)
  53. );
  54.  
  55. CREATE TABLE Service (
  56. ID INT REFERENCES Accomodation (ID),
  57. PROVIDER_NAME VARCHAR(255) REFERENCES Provider (login),
  58. PRIMARY KEY (ID, PROVIDER_NAME)
  59. );
  60.  
  61. CREATE TABLE Cantoned (
  62. ID INT REFERENCES Accomodation (ID),
  63. login VARCHAR(20) REFERENCES Tourist (login),
  64. PRIMARY KEY (ID, login)
  65. );
  66.  
  67. CREATE TABLE Reside (
  68. PROVIDER_NAME VARCHAR(20) REFERENCES Provider (login),
  69. street VARCHAR(20) REFERENCES Adress (street),
  70. housenumber VARCHAR(10) REFERENCES Adress (housenumber),
  71. postcode VARCHAR(5) REFERENCES Adress (postcode),
  72. PRIMARY KEY (PROVIDER_NAME, street, housenumber, postcode)
  73. );
  74.  
  75. CREATE TABLE Institution (
  76. tradename VARCHAR(20) PRIMARY KEY,
  77. rating FLOAT NOT NULL
  78. );
  79.  
  80. CREATE TABLE Headoffice (
  81. tradename VARCHAR(20) REFERENCES Institution (tradename),
  82. street VARCHAR(20) REFERENCES Adress (street),
  83. housenumber VARCHAR(10) REFERENCES Adress (housenumber),
  84. postcode VARCHAR(5) REFERENCES Adress (postcode),
  85. PRIMARY KEY (tradename, street,housenumber,postcode),
  86. CONSTRAINT fk_address_owner FOREIGN KEY(tradename) REFERENCES Institution (tradename) ON DELETE CASCADE
  87. );
  88.  
  89. CREATE TABLE CategoryInstitution (
  90. tradename VARCHAR(20) REFERENCES Institution (tradename),
  91. category VARCHAR(15),
  92. PRIMARY KEY (tradename, category)
  93. );
  94.  
  95. CREATE TABLE EmailContact (
  96. tradename VARCHAR(20),
  97. email VARCHAR(20),
  98. CHECK (email LIKE '%@%'),
  99. PRIMARY KEY (tradename, email),
  100. CONSTRAINT fk_mail_owner FOREIGN KEY(tradename) REFERENCES Institution (tradename) ON DELETE CASCADE
  101. );
  102.  
  103. CREATE TABLE FaxContact (
  104. tradename VARCHAR(20) REFERENCES Institution (tradename),
  105. fax INT,
  106. PRIMARY KEY (tradename, fax),
  107. CONSTRAINT fk_fax_owner FOREIGN KEY(tradename) REFERENCES Institution (tradename) ON DELETE CASCADE
  108. );
  109.  
  110. CREATE TABLE PhoneContact (
  111. tradename VARCHAR(20) REFERENCES Institution (tradename),
  112. phone VARCHAR(15),
  113. PRIMARY KEY (phone, tradename)
  114. );
  115.  
  116.  
  117. CREATE TABLE Event (
  118. tradename VARCHAR(20) REFERENCES Institution (tradename),
  119. hour TIME,
  120. day DATE,
  121. login VARCHAR(20) REFERENCES Tourist (login),
  122. PRIMARY KEY (tradename,login)
  123. );
  124.  
  125. /*NAPLNENIE TABULIEK*/
  126.  
  127. INSERT INTO Person VALUES ('peter.novak', 'uvhj1488');
  128. INSERT INTO Person VALUES ('jozef.turek', '1bjbk5');
  129. INSERT INTO Person VALUES ('karolina.hrava', 'hurtadd');
  130. INSERT INTO Person VALUES ('roman.prvy', 'kugfujk');
  131. INSERT INTO Person VALUES ('ondrej.kral', 'hju578');
  132. INSERT INTO Person VALUES ('ondrej.dubek', 'hpl578');
  133. INSERT INTO Person VALUES ('rodina.malych', 'jkn47bk');
  134. INSERT INTO Person VALUES ('hotel.Adria', 'kbgkj458');
  135. INSERT INTO Person VALUES ('penzion.Uno', 'jjll242');
  136. INSERT INTO Person VALUES ('privat.More', 'hjvj48');
  137. INSERT INTO Person VALUES ('hostel.Kuna', 'bjbj486');
  138.  
  139. INSERT INTO Tourist VALUES ('peter.novak');
  140. INSERT INTO Tourist VALUES ('jozef.turek');
  141. INSERT INTO Tourist VALUES ('karolina.hrava');
  142. INSERT INTO Tourist VALUES ('roman.prvy');
  143. INSERT INTO Tourist VALUES ('ondrej.kral');
  144. INSERT INTO Tourist VALUES ('ondrej.dubek');
  145.  
  146. INSERT INTO Provider VALUES ('rodina.malych', 1.0);
  147. INSERT INTO Provider VALUES ('hotel.Adria', 5.0);
  148. INSERT INTO Provider VALUES ('penzion.Uno', 1.5);
  149. INSERT INTO Provider VALUES ('privat.More', 2.4);
  150. INSERT INTO Provider VALUES ('hostel.Kuna', 3.2);
  151.  
  152. INSERT INTO Telephone VALUES ('rodina.malych', '0944023456');
  153. INSERT INTO Telephone VALUES ('hotel.Adria', '0903452874');
  154. INSERT INTO Telephone VALUES ('penzion.Uno', '098845678');
  155. INSERT INTO Telephone VALUES ('privat.More', '0945363987');
  156. INSERT INTO Telephone VALUES ('hostel.Kuna', '090536397');
  157.  
  158. INSERT INTO CoTraveler VALUES ('peter.novak', 'jozef.turek');
  159. INSERT INTO CoTraveler VALUES ('jozef.turek', 'karolina.hrava');
  160. INSERT INTO CoTraveler VALUES ('karolina.hrava', 'peter.novak');
  161. INSERT INTO CoTraveler VALUES ('roman.prvy', 'ondrej.kral');
  162. INSERT INTO CoTraveler VALUES ('ondrej.kral', 'jan.druhy');
  163.  
  164. INSERT INTO Adress VALUES ('Okruzna', '222/2', '02001');
  165. INSERT INTO Adress VALUES ('Budvarska', '145', '02001');
  166. INSERT INTO Adress VALUES ('Kratka', '14', '02597');
  167. INSERT INTO Adress VALUES ('Dlha', '258', '02145');
  168. INSERT INTO Adress VALUES ('Mierova', '3', '01258');
  169. INSERT INTO Adress VALUES ('Lichardova', '24/2', '02002');
  170. INSERT INTO Adress VALUES ('Plzenska', '140', '02489');
  171. INSERT INTO Adress VALUES ('Kratka', '24', '02597');
  172. INSERT INTO Adress VALUES ('Dlha', '28', '02145');
  173. INSERT INTO Adress VALUES ('Mierova', '36', '01258');
  174.  
  175. INSERT INTO Accomodation VALUES ('Privat u rodiny Malych',1,5, 4.0, 'Okruzna','222/2','02001');
  176. INSERT INTO Accomodation VALUES ('Hotel Adria',2,100, 1.0, 'Budvarska','145','02001');
  177. INSERT INTO Accomodation VALUES ('Penzion Uno',3,25, 4.1, 'Kratka','14','02597');
  178. INSERT INTO Accomodation VALUES ('Privat More',4,45, 1.5, 'Dlha','258','02145');
  179. INSERT INTO Accomodation VALUES ('Hostel Kuna',5 ,250, 3.1, 'Mierova', '3','01258');
  180.  
  181. INSERT INTO Reside VALUES ('rodina.malych', 'Okruzna', '222/2', '02001');
  182. INSERT INTO Reside VALUES ('hotel.Adria', 'Budvarska', '145', '02001');
  183. INSERT INTO Reside VALUES ('penzion.Uno', 'Kratka', '14', '02597');
  184. INSERT INTO Reside VALUES ('privat.More', 'Dlha', '258', '02145');
  185. INSERT INTO Reside VALUES ('hostel.Kuna', 'Mierova', '3', '01258');
  186.  
  187. INSERT INTO Service VALUES (1, 'rodina.malych');
  188. INSERT INTO Service VALUES (2, 'hotel.Adria');
  189. INSERT INTO Service VALUES (3, 'penzion.Uno');
  190. INSERT INTO Service VALUES (4, 'privat.More');
  191. INSERT INTO Service VALUES (5, 'hostel.Kuna');
  192.  
  193. INSERT INTO Cantoned VALUES (1, 'peter.novak');
  194. INSERT INTO Cantoned VALUES (2, 'jozef.turek');
  195. INSERT INTO Cantoned VALUES (3, 'karolina.hrava');
  196. INSERT INTO Cantoned VALUES (4, 'roman.prvy');
  197. INSERT INTO Cantoned VALUES (5, 'ondrej.kral');
  198. INSERT INTO Cantoned VALUES (5, 'ondrej.dubek');
  199.  
  200. INSERT INTO Institution VALUES ('kulturFabrik', 1.0);
  201. INSERT INTO Institution VALUES ('TabackaCooltura', 4.0);
  202. INSERT INTO Institution VALUES ('BK Zupny dom', 1.5);
  203. INSERT INTO Institution VALUES ('Stanica', 5.0);
  204. INSERT INTO Institution VALUES ('Klub Luc', 1.0);
  205.  
  206. INSERT INTO Headoffice VALUES ('kulturFabrik', 'Lichardova', '24/2', '02002');
  207. INSERT INTO Headoffice VALUES ('TabackaCooltura', 'Plzenska', '140', '02001');
  208. INSERT INTO Headoffice VALUES ('BK Zupny dom', 'Kratka', '24', '02001');
  209. INSERT INTO Headoffice VALUES ('Stanica', 'Dlha', '28', '02147');
  210. INSERT INTO Headoffice VALUES ('Klub Luc', 'Mierova', '36', '01258');
  211.  
  212. INSERT INTO CategoryInstitution VALUES ('kulturFabrik', 'divadlo');
  213. INSERT INTO CategoryInstitution VALUES ('TabackaCooltura', 'umenie');
  214. INSERT INTO CategoryInstitution VALUES ('BK Zupny dom', 'hudba');
  215. INSERT INTO CategoryInstitution VALUES ('Stanica', 'umenie');
  216. INSERT INTO CategoryInstitution VALUES ('Klub Luc', 'zabava');
  217.  
  218. INSERT INTO EmailContact VALUES ('kulturFabrik', 'divadlo@kulturFabrik.sk');
  219. INSERT INTO EmailContact VALUES ('TabackaCooltura', 'umenie@tabacka.sk');
  220. INSERT INTO EmailContact VALUES ('BK Zupny dom', 'hudba@zupnydom.sk');
  221. INSERT INTO EmailContact VALUES ('Stanica', 'sport@stanica.sk');
  222. INSERT INTO EmailContact VALUES ('Klub Luc', 'zabava@klubluc.sk');
  223.  
  224. INSERT INTO FaxContact VALUES ('kulturFabrik', 467854678);
  225. INSERT INTO FaxContact VALUES ('TabackaCooltura', 467854245);
  226. INSERT INTO FaxContact VALUES ('BK Zupny dom', 467854457);
  227. INSERT INTO FaxContact VALUES ('Stanica', 467125678);
  228. INSERT INTO FaxContact VALUES ('Klub Luc', 467854678);
  229.  
  230. INSERT INTO PhoneContact VALUES ('kulturFabrik', '0945363987');
  231. INSERT INTO PhoneContact VALUES ('TabackaCooltura', '0944563987');
  232. INSERT INTO PhoneContact VALUES ('BK Zupny dom', '0905313987');
  233. INSERT INTO PhoneContact VALUES ('Stanica', '0940363987');
  234. INSERT INTO PhoneContact VALUES ('Klub Luc', '0945373987');
  235.  
  236. INSERT INTO Event VALUES ('kulturFabrik', '12:20:00','2011-11-02', 'peter.novak');
  237. INSERT INTO Event VALUES ('TabackaCooltura', '10:00:00', '2011-11-26', 'jozef.turek');
  238. INSERT INTO Event VALUES ('BK Zupny dom', '18:20:00', '2011-11-27', 'karolina.hrava');
  239. INSERT INTO Event VALUES ('Stanica', '20:30:00', '2011-11-29', 'roman.prvy');
  240. INSERT INTO Event VALUES ('Klub Luc', '08:30:00', '2011-11-30', 'ondrej.kral');
  241.  
  242.  
  243.  
  244.  
  245. /*1.) vypise vsetky institucie v dvoch susednych mestach*/
  246. SELECT tradename FROM headoffice WHERE(postcode = '02001' )
  247. UNION
  248. SELECT tradename FROM headoffice WHERE(postcode = '02001')
  249.  
  250. /*2.) vypise mena turistov, ktory sa nenavstivia ziadnu zaujmovu instituciu*/
  251. SELECT tourist.login FROM tourist LEFT OUTER JOIN event ON(tourist.login = event.login)
  252. WHERE event.login IS NULL
  253.  
  254. /*3.) zoznam turistov, ktory v roku 2011 sa zaujimali o umenie*/
  255. SELECT login FROM Event JOIN CategoryInstitution ON(Event.tradename=CategoryInstitution.tradename)
  256. WHERE (category= 'umenie' AND (day>'2011-01-01' AND day<'2011-12-31'))
  257. ORDER BY login
  258.  
  259. /*4.)zobrazi institucie s vacsim ako priemernym ratingom*/
  260. SELECT * FROM institution
  261. WHERE (rating >(SELECT AVG(rating) FROM institution))
  262.  
  263. /*5.) zobrazi ubytovacie zariadenia s poctami ubytovanych a kapacitou, kde je este volne miesto)*/
  264. SELECT accomodation.name, accomodation.capacity, COUNT(cantoned.login) AS tourists
  265. FROM accomodation NATURAL JOIN cantoned
  266. GROUP BY accomodation.name HAVING(tourists < capacity)
  267.  
  268. /*pohlad na zobrazenie kompletnych informacii o ubytovacich zariadeniach*/
  269. CREATE VIEW accomodation_information (name,cantoned_tourists ,capacity, street, housenumber, postcode) AS
  270. SELECT accomodation.name,COUNT(cantoned.login) AS tourists, accomodation.capacity, street, housenumber,postcode
  271. FROM accomodation NATURAL JOIN cantoned
  272. GROUP BY accomodation.name
  273.  
  274. /*pohlad na zobrazenie tabulky s instituciami, ktore v danom tyzdni organizuju nejake podujatie*/
  275. CREATE VIEW all_event_at_week AS
  276. SELECT tradename, category, street, housenumber, postcode, day
  277. FROM event NATURAL JOIN institution NATURAL JOIN categoryinstitution NATURAL JOIN headoffice
  278. GROUP BY tradename HAVING (day > '2011-11-01' AND day<'2011-11-07' )
  279. ORDER BY category
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement