Advertisement
Guest User

Untitled

a guest
Dec 12th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.38 KB | None | 0 0
  1. /*
  2. Created: 09.12.2019
  3. Modified: 12.12.2019
  4. Project: Schronisko
  5. Model: Logical model
  6. Company: Politechnika Warszawska
  7. Author: Maciej Dabkowski,Kamil Stepien
  8. Version: 1.0
  9. Database: Oracle 19c
  10. */
  11.  
  12.  
  13. -- Create sequences section -------------------------------------------------
  14.  
  15. CREATE SEQUENCE SchronsikaSeq
  16. INCREMENT BY 1
  17. START WITH 1
  18. NOMAXVALUE
  19. NOMINVALUE
  20. CACHE 20
  21. /
  22.  
  23. -- Create tables section -------------------------------------------------
  24.  
  25. -- Table Schroniska
  26.  
  27. CREATE TABLE Schroniska(
  28. Id_Schroniska Integer NOT NULL,
  29. Nazwa Varchar2(30 ) NOT NULL,
  30. Miejscowosc Varchar2(30 ) NOT NULL,
  31. Ulica Varchar2(30 ) NOT NULL,
  32. Nr_Lokalu Varchar2(5 ) NOT NULL
  33. )
  34. /
  35.  
  36. -- Add keys for table Schroniska
  37.  
  38. ALTER TABLE Schroniska ADD CONSTRAINT Unique_Identifier1 PRIMARY KEY (Id_Schroniska)
  39. /
  40.  
  41. -- Create triggers for table Schroniska
  42.  
  43. CREATE TRIGGER SchroniskaT1
  44. BEFORE INSERT
  45. ON Schroniska
  46. BEGIN
  47. select SchroniskaSeq.nextval into :new.Id_schronisko from dual;
  48. END;
  49. /
  50.  
  51. -- Table Pracownicy
  52.  
  53. CREATE TABLE Pracownicy(
  54. Id_pracownika Integer NOT NULL,
  55. Imie Varchar2(15 ) NOT NULL,
  56. Nazwisko Varchar2(30 ) NOT NULL,
  57. Plec Char(1 )
  58. CHECK (Plec IN ('K','M')),
  59. PESEL Varchar2(11 ) NOT NULL,
  60. Nr_Telefonu Varchar2(9 ) NOT NULL,
  61. Data_zatrudnienia Date NOT NULL,
  62. Id_Schroniska Integer NOT NULL,
  63. Id_stanowiska Integer NOT NULL
  64. )
  65. /
  66.  
  67. -- Create indexes for table Pracownicy
  68.  
  69. CREATE INDEX IX_Schronisko_zatrudnia ON Pracownicy (Id_Schroniska)
  70. /
  71.  
  72. CREATE INDEX IX_Relationship2 ON Pracownicy (Id_stanowiska)
  73. /
  74.  
  75. -- Add keys for table Pracownicy
  76.  
  77. ALTER TABLE Pracownicy ADD CONSTRAINT Unique_Identifier2 PRIMARY KEY (Id_pracownika)
  78. /
  79.  
  80. -- Table Hycle
  81.  
  82. CREATE TABLE Hycle(
  83. Id_pracownika Integer NOT NULL,
  84. Prawo_jazdy Varchar2(5 ) NOT NULL,
  85. Data_waznosci_prawa_jazdy Date NOT NULL,
  86. Uprawnienia_do_łapania Char(1 ) NOT NULL
  87. CHECK (CzyJest IN ('1','0'))
  88. )
  89. /
  90.  
  91. -- Add keys for table Hycle
  92.  
  93. ALTER TABLE Hycle ADD CONSTRAINT Unique_Identifier3 PRIMARY KEY (Id_pracownika)
  94. /
  95.  
  96. -- Table Opiekunowie
  97.  
  98. CREATE TABLE Opiekunowie(
  99. Id_pracownika Integer NOT NULL,
  100. Przyzwolenie_na_opieke Char(1 ) NOT NULL
  101. CHECK (Przyzwolenie_na_opieke IN ('1','0')),
  102. Stopień_zaawansowania Char(1 )
  103. CHECK (Stopien_zaawansowania IN ('A','B','I'))
  104. )
  105. /
  106.  
  107. -- Add keys for table Opiekunowie
  108.  
  109. ALTER TABLE Opiekunowie ADD CONSTRAINT Unique_Identifier4 PRIMARY KEY (Id_pracownika)
  110. /
  111.  
  112. -- Table Weterynarze
  113.  
  114. CREATE TABLE Weterynarze(
  115. Id_pracownika Integer NOT NULL,
  116. Uprawnienia_do_leczenia Char(1 ) NOT NULL
  117. CHECK (CzyJest IN ('1','0')),
  118. Data_ważnosci_uprawnien Date,
  119. Opis_uprawnien Varchar2(800 )
  120. )
  121. /
  122.  
  123. -- Add keys for table Weterynarze
  124.  
  125. ALTER TABLE Weterynarze ADD CONSTRAINT Unique_Identifier5 PRIMARY KEY (Id_pracownika)
  126. /
  127.  
  128. -- Table Wynagrodzenia
  129.  
  130. CREATE TABLE Wynagrodzenia(
  131. Id_Wynagrodzenia Integer NOT NULL,
  132. Data Date NOT NULL,
  133. Kwota Number(8,2) NOT NULL,
  134. Premia Number(8,2),
  135. Id_pracownika Integer NOT NULL
  136. )
  137. /
  138.  
  139. -- Create indexes for table Wynagrodzenia
  140.  
  141. CREATE INDEX IX_Pracownik_otrzymuje ON Wynagrodzenia (Id_pracownika)
  142. /
  143.  
  144. -- Add keys for table Wynagrodzenia
  145.  
  146. ALTER TABLE Wynagrodzenia ADD CONSTRAINT Unique_Identifier6 PRIMARY KEY (Id_Wynagrodzenia)
  147. /
  148.  
  149. -- Table Grafiki
  150.  
  151. CREATE TABLE Grafiki(
  152. Id_Grafiku Varchar2(5 ) NOT NULL,
  153. Data_od Date NOT NULL,
  154. Data_do Date,
  155. Id_pracownika Integer NOT NULL
  156. )
  157. /
  158.  
  159. -- Create indexes for table Grafiki
  160.  
  161. CREATE INDEX IX_Pracownik_posiada ON Grafiki (Id_pracownika)
  162. /
  163.  
  164. -- Add keys for table Grafiki
  165.  
  166. ALTER TABLE Grafiki ADD CONSTRAINT Unique_Identifier7 PRIMARY KEY (Id_Grafiku)
  167. /
  168.  
  169. -- Table Zwierzeta
  170.  
  171. CREATE TABLE Zwierzeta(
  172. Id_Zwierzecia Integer NOT NULL,
  173. Data_przyjecia Date NOT NULL,
  174. Imie Varchar2(20 ),
  175. Opis Varchar2(800 ),
  176. Id_Schroniska Integer NOT NULL,
  177. Id Rasa Integer,
  178. Id_Gatunku Integer NOT NULL,
  179. Id_klatki Integer NOT NULL
  180. )
  181. /
  182.  
  183. -- Create indexes for table Zwierzeta
  184.  
  185. CREATE INDEX IX_Schronisko_utrzymuje ON Zwierzeta (Id_Schroniska)
  186. /
  187.  
  188. CREATE INDEX IX_Relationship4 ON Zwierzeta (Id Rasa)
  189. /
  190.  
  191. CREATE INDEX IX_Relationship5 ON Zwierzeta (Id_Gatunku)
  192. /
  193.  
  194. CREATE INDEX IX_Relationship6 ON Zwierzeta (Id_klatki)
  195. /
  196.  
  197. -- Add keys for table Zwierzeta
  198.  
  199. ALTER TABLE Zwierzeta ADD CONSTRAINT Unique_Identifier8 PRIMARY KEY (Id_Zwierzecia)
  200. /
  201.  
  202. -- Table Klatki
  203.  
  204. CREATE TABLE Klatki(
  205. Id_Klatki Integer NOT NULL,
  206. Rozmiar_klatki Char(1 ) NOT NULL,
  207. Kuweta Char(1 ) NOT NULL
  208. CHECK (CzyJest IN ('1','0')),
  209. Miska Char(1 ) NOT NULL
  210. CHECK (CzyJest IN ('1','0')),
  211. Legowisko Char(1 ) NOT NULL
  212. CHECK (CzyJest IN ('1','0')),
  213. Id_Schroniska Integer NOT NULL
  214. )
  215. /
  216.  
  217. -- Create indexes for table Klatki
  218.  
  219. CREATE INDEX IX_Schronisko_posiada ON Klatki (Id_Schroniska)
  220. /
  221.  
  222. -- Add keys for table Klatki
  223.  
  224. ALTER TABLE Klatki ADD CONSTRAINT Unique_Identifier9 PRIMARY KEY (Id_Klatki)
  225. /
  226.  
  227. -- Table Uslugi
  228.  
  229. CREATE TABLE Uslugi(
  230. Id_Uslugi Integer NOT NULL,
  231. Nazwa Varchar2(20 ) NOT NULL,
  232. Opis_uslugi Varchar2(800 ),
  233. Charakter_uslugi Char(1 ) NOT NULL
  234. CHECK (Charakter_uslugi IN ('D','P','K')),
  235. Id_Schroniska Integer NOT NULL
  236. )
  237. /
  238.  
  239. -- Create indexes for table Uslugi
  240.  
  241. CREATE INDEX IX_Schronisko_dostarcza ON Uslugi (Id_Schroniska)
  242. /
  243.  
  244. -- Add keys for table Uslugi
  245.  
  246. ALTER TABLE Uslugi ADD CONSTRAINT Unique_Identifier10 PRIMARY KEY (Id_Uslugi)
  247. /
  248.  
  249. -- Table Klienci
  250.  
  251. CREATE TABLE Klienci(
  252. Id_Klienta Integer NOT NULL,
  253. Imie Varchar2(15 ) NOT NULL,
  254. Nazwisko Varchar2(20 ) NOT NULL,
  255. Nr_dowodu Varchar2(30 ) NOT NULL,
  256. Zdolnosc_adopcyjna Char(1 ) NOT NULL
  257. CHECK (CzyJest IN ('1','0')),
  258. Id_Schroniska Integer NOT NULL
  259. )
  260. /
  261.  
  262. -- Create indexes for table Klienci
  263.  
  264. CREATE INDEX IX_Schronisko ON Klienci (Id_Schroniska)
  265. /
  266.  
  267. -- Add keys for table Klienci
  268.  
  269. ALTER TABLE Klienci ADD CONSTRAINT Unique_Identifier11 PRIMARY KEY (Id_Klienta)
  270. /
  271.  
  272. -- Table Badania
  273.  
  274. CREATE TABLE Badania(
  275. Id_Badania Integer NOT NULL,
  276. Data_badania Date NOT NULL,
  277. Data_waznosci Date,
  278. Status_badania Char(1 ) NOT NULL,
  279. Szczegoly_badania Varchar2(800 ),
  280. Id_zwierzecia Integer NOT NULL
  281. )
  282. /
  283.  
  284. -- Create indexes for table Badania
  285.  
  286. CREATE INDEX IX_Zwierze_jest_badane ON Badania (Id_zwierzecia)
  287. /
  288.  
  289. -- Add keys for table Badania
  290.  
  291. ALTER TABLE Badania ADD CONSTRAINT Unique_Identifier12 PRIMARY KEY (Id_Badania)
  292. /
  293.  
  294. -- Table Klient1
  295.  
  296. CREATE TABLE Klient1(
  297. Id_klienta Integer NOT NULL,
  298. Imie Varchar2(20 ),
  299. Nazwisko Varchar2(30 ),
  300. Nr_dowodu Varchar2(30 )
  301. )
  302. /
  303.  
  304. -- Add keys for table Klient1
  305.  
  306. ALTER TABLE Klient1 ADD CONSTRAINT Unique_Identifier13 PRIMARY KEY (Id_klienta)
  307. /
  308.  
  309. -- Table Szkolenia
  310.  
  311. CREATE TABLE Szkolenia(
  312. Id_Szkolenia Integer NOT NULL,
  313. Nazwa_szkolenia Varchar2(30 ) NOT NULL,
  314. Opis_szkolenia Varchar2(800 ),
  315. Data_odbycia_szkolenia Date NOT NULL,
  316. Data_waznosci_szkolenia Date,
  317. Id_pracownika Integer NOT NULL
  318. )
  319. /
  320.  
  321. -- Create indexes for table Szkolenia
  322.  
  323. CREATE INDEX IX_Pracownik_odbywa ON Szkolenia (Id_pracownika)
  324. /
  325.  
  326. -- Add keys for table Szkolenia
  327.  
  328. ALTER TABLE Szkolenia ADD CONSTRAINT Unique_Identifier14 PRIMARY KEY (Id_Szkolenia)
  329. /
  330.  
  331. -- Table Wlasciciele
  332.  
  333. CREATE TABLE Wlasciciele(
  334. Id_Wlasciciel Integer NOT NULL,
  335. Imie Varchar2(15 ) NOT NULL,
  336. Nazwisko Varchar2(30 ) NOT NULL,
  337. Id_Schroniska Integer NOT NULL
  338. )
  339. /
  340.  
  341. -- Create indexes for table Wlasciciele
  342.  
  343. CREATE INDEX IX_Relationship1 ON Wlasciciele (Id_Schroniska)
  344. /
  345.  
  346. -- Add keys for table Wlasciciele
  347.  
  348. ALTER TABLE Wlasciciele ADD CONSTRAINT PK_Wlasciciele PRIMARY KEY (Id_Wlasciciel)
  349. /
  350.  
  351. -- Table Stanowiska
  352.  
  353. CREATE TABLE Stanowiska(
  354. Id_Stanowiska Integer NOT NULL,
  355. Nazwa Varchar2(30 ) NOT NULL,
  356. Opis Varchar2(400 )
  357. )
  358. /
  359.  
  360. -- Add keys for table Stanowiska
  361.  
  362. ALTER TABLE Stanowiska ADD CONSTRAINT PK_Stanowiska PRIMARY KEY (Id_Stanowiska)
  363. /
  364.  
  365. -- Table Gatunki
  366.  
  367. CREATE TABLE Gatunki(
  368. Id_Gatunku Integer NOT NULL,
  369. Nazwa Varchar2(20 ) NOT NULL,
  370. Opis Varchar2(400 )
  371. )
  372. /
  373.  
  374. -- Add keys for table Gatunki
  375.  
  376. ALTER TABLE Gatunki ADD CONSTRAINT PK_Gatunki PRIMARY KEY (Id_Gatunku)
  377. /
  378.  
  379. ALTER TABLE Gatunki ADD CONSTRAINT Nazwa UNIQUE (Nazwa)
  380. /
  381.  
  382. -- Table Rasy
  383.  
  384. CREATE TABLE Rasy(
  385. Id_Rasa Integer NOT NULL,
  386. Nazwa Varchar2(30 ) NOT NULL,
  387. Opis Varchar2(400 ),
  388. Id_Gatunku Integer
  389. )
  390. /
  391.  
  392. -- Create indexes for table Rasy
  393.  
  394. CREATE INDEX IX_Relationship3 ON Rasy (Id_Gatunku)
  395. /
  396.  
  397. -- Add keys for table Rasy
  398.  
  399. ALTER TABLE Rasy ADD CONSTRAINT PK_Rasy PRIMARY KEY (Id_Rasa)
  400. /
  401.  
  402. -- Table Zakupy_uslug
  403.  
  404. CREATE TABLE Zakupy_uslug(
  405. Id_Klienta Integer NOT NULL,
  406. Id_Uslugi Integer NOT NULL,
  407. Data Char(20 ) NOT NULL
  408. )
  409. /
  410.  
  411. -- Add keys for table Zakupy_uslug
  412.  
  413. ALTER TABLE Zakupy_uslug ADD CONSTRAINT PK_Zakupy_uslug PRIMARY KEY (Id_Klienta,Id_Uslugi,Data)
  414. /
  415.  
  416. -- Trigger for sequence SchronsikaSeq for column Id_Schroniska in table Schroniska ---------
  417. CREATE OR REPLACE TRIGGER ts_Schroniska_SchronsikaSeq BEFORE INSERT
  418. ON Schroniska FOR EACH ROW
  419. BEGIN
  420. :new.Id_Schroniska := SchronsikaSeq.nextval;
  421. END;
  422. /
  423. CREATE OR REPLACE TRIGGER tsu_Schroniska_SchronsikaSeq AFTER UPDATE OF Id_Schroniska
  424. ON Schroniska FOR EACH ROW
  425. BEGIN
  426. RAISE_APPLICATION_ERROR(-20010,'Cannot update column Id_Schroniska in table Schroniska as it uses sequence.');
  427. END;
  428. /
  429.  
  430.  
  431. -- Create foreign keys (relationships) section -------------------------------------------------
  432.  
  433. ALTER TABLE Wynagrodzenia ADD CONSTRAINT Pracownik_otrzymuje FOREIGN KEY (Id_pracownika) REFERENCES Pracownicy (Id_pracownika)
  434. /
  435.  
  436.  
  437.  
  438. ALTER TABLE Grafiki ADD CONSTRAINT Pracownik_posiada FOREIGN KEY (Id_pracownika) REFERENCES Pracownicy (Id_pracownika)
  439. /
  440.  
  441.  
  442.  
  443. ALTER TABLE Klatki ADD CONSTRAINT Schronisko_posiada FOREIGN KEY (Id_Schroniska) REFERENCES Schroniska (Id_Schroniska)
  444. /
  445.  
  446.  
  447.  
  448. ALTER TABLE Pracownicy ADD CONSTRAINT Schronisko_zatrudnia FOREIGN KEY (Id_Schroniska) REFERENCES Schroniska (Id_Schroniska)
  449. /
  450.  
  451.  
  452.  
  453. ALTER TABLE Zwierzeta ADD CONSTRAINT Schronisko_utrzymuje FOREIGN KEY (Id_Schroniska) REFERENCES Schroniska (Id_Schroniska)
  454. /
  455.  
  456.  
  457.  
  458. ALTER TABLE Uslugi ADD CONSTRAINT Schronisko_dostarcza FOREIGN KEY (Id_Schroniska) REFERENCES Schroniska (Id_Schroniska)
  459. /
  460.  
  461.  
  462.  
  463. ALTER TABLE Klienci ADD CONSTRAINT Schronisko_ma FOREIGN KEY (Id_Schroniska) REFERENCES Schroniska (Id_Schroniska)
  464. /
  465.  
  466.  
  467.  
  468. ALTER TABLE Badania ADD CONSTRAINT Zwierze_jest_badane FOREIGN KEY (Id_zwierzecia) REFERENCES Zwierzeta (Id_Zwierzecia)
  469. /
  470.  
  471.  
  472.  
  473. ALTER TABLE Szkolenia ADD CONSTRAINT Pracownik_odbywa FOREIGN KEY (Id_pracownika) REFERENCES Pracownicy (Id_pracownika)
  474. /
  475.  
  476.  
  477.  
  478. ALTER TABLE Wlasciciele ADD CONSTRAINT Ma_wlasciciela FOREIGN KEY (Id_Schroniska) REFERENCES Schroniska (Id_Schroniska)
  479. /
  480.  
  481.  
  482.  
  483. ALTER TABLE Pracownicy ADD CONSTRAINT Ma_stanowisko FOREIGN KEY (Id_stanowiska) REFERENCES Stanowiska (Id_Stanowiska)
  484. /
  485.  
  486.  
  487.  
  488. ALTER TABLE Rasy ADD CONSTRAINT Ma_rase FOREIGN KEY (Id_Gatunku) REFERENCES Gatunki (Id_Gatunku)
  489. /
  490.  
  491.  
  492.  
  493. ALTER TABLE Zwierzeta ADD CONSTRAINT Jest_rasy FOREIGN KEY (Id Rasa) REFERENCES Rasy (Id_Rasa)
  494. /
  495.  
  496.  
  497.  
  498. ALTER TABLE Zwierzeta ADD CONSTRAINT Jest_gatunku FOREIGN KEY (Id_Gatunku) REFERENCES Gatunki (Id_Gatunku)
  499. /
  500.  
  501.  
  502.  
  503. ALTER TABLE Zwierzeta ADD CONSTRAINT Jest_przypisane FOREIGN KEY (Id_klatki) REFERENCES Klatki (Id_Klatki)
  504. /
  505.  
  506.  
  507.  
  508. ALTER TABLE Zakupy_uslug ADD CONSTRAINT Klient_kupuje FOREIGN KEY (Id_Klienta) REFERENCES Klienci (Id_Klienta)
  509. /
  510.  
  511.  
  512.  
  513. ALTER TABLE Zakupy_uslug ADD CONSTRAINT Jest_oferowna FOREIGN KEY (Id_Uslugi) REFERENCES Uslugi (Id_Uslugi)
  514. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement