Advertisement
Guest User

Untitled

a guest
Dec 12th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.84 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. CREATE SEQUENCE SchronsikaSeq
  12. INCREMENT BY 1
  13. START WITH 1
  14. NOMAXVALUE
  15. NOMINVALUE
  16. CACHE 20
  17. ;
  18. -- Table Schroniska
  19. CREATE TABLE Schroniska(
  20. Id_Schroniska Integer NOT NULL,
  21. Nazwa Varchar2(30 ) NOT NULL,
  22. Miejscowosc Varchar2(30 ) NOT NULL,
  23. Ulica Varchar2(30 ) NOT NULL,
  24. Nr_Lokalu Varchar2(5 ) NOT NULL
  25. )
  26. ;
  27. -- Add keys for table Schroniska
  28. ALTER TABLE Schroniska ADD CONSTRAINT Unique_Identifier1 PRIMARY KEY (Id_Schroniska);
  29. -- Create triggers for table Schroniska
  30. CREATE TRIGGER SchroniskaT1
  31. BEFORE INSERT
  32. ON Schroniska
  33. FOR EACH ROW
  34. BEGIN
  35. select SchronsikaSeq.nextval into :new.Id_Schroniska from dual;
  36. END
  37. ;
  38. -- Table Pracownicy
  39. CREATE TABLE Pracownicy(
  40. Id_pracownika Integer NOT NULL,
  41. Imie Varchar2(15 ) NOT NULL,
  42. Nazwisko Varchar2(30 ) NOT NULL,
  43. Plec Char(1 )
  44. CHECK (Plec IN ('K','M')),
  45. PESEL Varchar2(11 ) NOT NULL,
  46. Nr_Telefonu Varchar2(9 ) NOT NULL,
  47. Data_zatrudnienia Date NOT NULL,
  48. Id_Schroniska Integer NOT NULL,
  49. Id_stanowiska Integer NOT NULL
  50. )
  51. ;
  52. -- Create indexes for table Pracownicy
  53. CREATE INDEX IX_Schronisko_zatrudnia ON Pracownicy (Id_Schroniska);
  54. CREATE INDEX IX_Relationship2 ON Pracownicy (Id_stanowiska);
  55. -- Add keys for table Pracownicy
  56. ALTER TABLE Pracownicy ADD CONSTRAINT Unique_Identifier2 PRIMARY KEY (Id_pracownika);
  57. -- Table Hycle
  58. CREATE TABLE Hycle(
  59. Id_pracownika Integer NOT NULL,
  60. Prawo_jazdy Varchar2(5 ) NOT NULL,
  61. Data_waznosci_prawa_jazdy Date NOT NULL,
  62. Uprawnienia_do_lapania Char(1 ) NOT NULL
  63. CHECK (Uprawnienia_do_lapania IN ('1','0'))
  64. )
  65. ;
  66. -- Add keys for table Hycle
  67. ALTER TABLE Hycle ADD CONSTRAINT Unique_Identifier3 PRIMARY KEY (Id_pracownika);
  68. -- Table Opiekunowie
  69. CREATE TABLE Opiekunowie(
  70. Id_pracownika Integer NOT NULL,
  71. Przyzwolenie_na_opieke Char(1 ) NOT NULL
  72. CHECK (Przyzwolenie_na_opieke IN ('1','0')),
  73. Stopien_zaawansowania Char(1 )
  74. CHECK (Stopien_zaawansowania IN ('A','B','I'))
  75. )
  76. ;
  77. -- Add keys for table Opiekunowie
  78. ALTER TABLE Opiekunowie ADD CONSTRAINT Unique_Identifier4 PRIMARY KEY (Id_pracownika);
  79. -- Table Weterynarze
  80. CREATE TABLE Weterynarze(
  81. Id_pracownika Integer NOT NULL,
  82. Uprawnienia_do_leczenia Char(1 ) NOT NULL
  83. CHECK (Uprawnienia_do_leczenia IN ('1','0')),
  84. Data_ważnosci_uprawnien Date,
  85. Opis_uprawnien Varchar2(800 )
  86. );
  87. -- Add keys for table Weterynarze
  88. ALTER TABLE Weterynarze ADD CONSTRAINT Unique_Identifier5 PRIMARY KEY (Id_pracownika);
  89. -- Table Wynagrodzenia
  90. CREATE TABLE Wynagrodzenia(
  91. Id_Wynagrodzenia Integer NOT NULL,
  92. Data Date NOT NULL,
  93. Kwota Number(8,2) NOT NULL,
  94. Premia Number(8,2),
  95. Id_pracownika Integer NOT NULL
  96. )
  97. ;
  98. -- Create indexes for table Wynagrodzenia
  99. CREATE INDEX IX_Pracownik_otrzymuje ON Wynagrodzenia (Id_pracownika);
  100. -- Add keys for table Wynagrodzenia
  101. ALTER TABLE Wynagrodzenia ADD CONSTRAINT Unique_Identifier6 PRIMARY KEY (Id_Wynagrodzenia);
  102. -- Table Grafiki
  103. CREATE TABLE Grafiki(
  104. Id_Grafiku Varchar2(5 ) NOT NULL,
  105. Data_od Date NOT NULL,
  106. Data_do Date,
  107. Id_pracownika Integer NOT NULL
  108. );
  109. -- Create indexes for table Grafiki
  110. CREATE INDEX IX_Pracownik_posiada ON Grafiki (Id_pracownika);
  111. -- Add keys for table Grafiki
  112. ALTER TABLE Grafiki ADD CONSTRAINT Unique_Identifier7 PRIMARY KEY (Id_Grafiku);
  113. -- Table Zwierzeta
  114. CREATE TABLE Zwierzeta(
  115. Id_Zwierzecia Integer NOT NULL,
  116. Data_przyjecia Date NOT NULL,
  117. Imie Varchar2(20 ),
  118. Opis Varchar2(800 ),
  119. Id_Schroniska Integer NOT NULL,
  120. Id_Rasa Integer,
  121. Id_Gatunku Integer NOT NULL,
  122. Id_klatki Integer NOT NULL
  123. )
  124. ;
  125. -- Create indexes for table Zwierzeta
  126. CREATE INDEX IX_Schronisko_utrzymuje ON Zwierzeta (Id_Schroniska);
  127. CREATE INDEX IX_Relationship4 ON Zwierzeta (Id_Rasa);
  128. CREATE INDEX IX_Relationship5 ON Zwierzeta (Id_Gatunku);
  129. CREATE INDEX IX_Relationship6 ON Zwierzeta (Id_klatki);
  130. -- Add keys for table Zwierzeta
  131. ALTER TABLE Zwierzeta ADD CONSTRAINT Unique_Identifier8 PRIMARY KEY (Id_Zwierzecia);
  132. -- Table Klatki
  133. CREATE TABLE Klatki(
  134. Id_Klatki Integer NOT NULL,
  135. Rozmiar_klatki Char(1 ) NOT NULL,
  136. Kuweta Char(1 ) NOT NULL
  137. CHECK (Kuweta IN ('1','0')),
  138. Miska Char(1 ) NOT NULL
  139. CHECK (Miska IN ('1','0')),
  140. Legowisko Char(1 ) NOT NULL
  141. CHECK (Legowisko IN ('1','0')),
  142. Id_Schroniska Integer NOT NULL
  143. )
  144. ;
  145. -- Create indexes for table Klatki
  146. CREATE INDEX IX_Schronisko_posiada ON Klatki (Id_Schroniska);
  147. -- Add keys for table Klatki
  148. ALTER TABLE Klatki ADD CONSTRAINT Unique_Identifier9 PRIMARY KEY (Id_Klatki);
  149. -- Table Uslugi
  150. CREATE TABLE Uslugi(
  151. Id_Uslugi Integer NOT NULL,
  152. Nazwa Varchar2(20 ) NOT NULL,
  153. Opis_uslugi Varchar2(800 ),
  154. Charakter_uslugi Char(1 ) NOT NULL
  155. CHECK (Charakter_uslugi IN ('D','P','K')),
  156. Id_Schroniska Integer NOT NULL
  157. );
  158. -- Create indexes for table Uslugi
  159. CREATE INDEX IX_Schronisko_dostarcza ON Uslugi (Id_Schroniska);
  160. -- Add keys for table Uslugi
  161. ALTER TABLE Uslugi ADD CONSTRAINT Unique_Identifier10 PRIMARY KEY (Id_Uslugi);
  162. -- Table Klienci
  163. CREATE TABLE Klienci(
  164. Id_Klienta Integer NOT NULL,
  165. Imie Varchar2(15 ) NOT NULL,
  166. Nazwisko Varchar2(20 ) NOT NULL,
  167. Nr_dowodu Varchar2(30 ) NOT NULL,
  168. Zdolnosc_adopcyjna Char(1 ) NOT NULL
  169. CHECK (Zdolnosc_adopcyjna IN ('1','0')),
  170. Id_Schroniska Integer NOT NULL
  171. )
  172. ;
  173. -- Create indexes for table Klienci
  174. CREATE INDEX IX_Schronisko ON Klienci (Id_Schroniska);
  175. -- Add keys for table Klienci
  176. ALTER TABLE Klienci ADD CONSTRAINT Unique_Identifier11 PRIMARY KEY (Id_Klienta);
  177. -- Table Badania
  178. CREATE TABLE Badania(
  179. Id_Badania Integer NOT NULL,
  180. Data_badania Date NOT NULL,
  181. Data_waznosci Date,
  182. Status_badania Char(1 ) NOT NULL,
  183. Szczegoly_badania Varchar2(800 ),
  184. Id_zwierzecia Integer NOT NULL
  185. )
  186. ;
  187. -- Create indexes for table Badania
  188. CREATE INDEX IX_Zwierze_jest_badane ON Badania (Id_zwierzecia);
  189. -- Add keys for table Badania
  190. ALTER TABLE Badania ADD CONSTRAINT Unique_Identifier12 PRIMARY KEY (Id_Badania);
  191. -- Table Klient1
  192. CREATE TABLE Klient1(
  193. Id_klienta Integer NOT NULL,
  194. Imie Varchar2(20 ),
  195. Nazwisko Varchar2(30 ),
  196. Nr_dowodu Varchar2(30 )
  197. )
  198. ;
  199. -- Add keys for table Klient1
  200. ALTER TABLE Klient1 ADD CONSTRAINT Unique_Identifier13 PRIMARY KEY (Id_klienta);
  201. -- Table Szkolenia
  202. CREATE TABLE Szkolenia(
  203. Id_Szkolenia Integer NOT NULL,
  204. Nazwa_szkolenia Varchar2(30 ) NOT NULL,
  205. Opis_szkolenia Varchar2(800 ),
  206. Data_odbycia_szkolenia Date NOT NULL,
  207. Data_waznosci_szkolenia Date,
  208. Id_pracownika Integer NOT NULL
  209. )
  210. ;
  211. -- Create indexes for table Szkolenia
  212. CREATE INDEX IX_Pracownik_odbywa ON Szkolenia (Id_pracownika);
  213. -- Add keys for table Szkolenia
  214. ALTER TABLE Szkolenia ADD CONSTRAINT Unique_Identifier14 PRIMARY KEY (Id_Szkolenia);
  215. -- Table Wlasciciele
  216. CREATE TABLE Wlasciciele(
  217. Id_Wlasciciel Integer NOT NULL,
  218. Imie Varchar2(15 ) NOT NULL,
  219. Nazwisko Varchar2(30 ) NOT NULL,
  220. Id_Schroniska Integer NOT NULL
  221. )
  222. ;
  223. -- Create indexes for table Wlasciciele
  224. CREATE INDEX IX_Relationship1 ON Wlasciciele (Id_Schroniska);
  225. -- Add keys for table Wlasciciele
  226. ALTER TABLE Wlasciciele ADD CONSTRAINT PK_Wlasciciele PRIMARY KEY (Id_Wlasciciel);
  227. -- Table Stanowiska
  228. CREATE TABLE Stanowiska(
  229. Id_Stanowiska Integer NOT NULL,
  230. Nazwa Varchar2(30 ) NOT NULL,
  231. Opis Varchar2(400 )
  232. );
  233. -- Add keys for table Stanowiska
  234. ALTER TABLE Stanowiska ADD CONSTRAINT PK_Stanowiska PRIMARY KEY (Id_Stanowiska);
  235. -- Table Gatunki
  236. CREATE TABLE Gatunki(
  237. Id_Gatunku Integer NOT NULL,
  238. Nazwa Varchar2(20 ) NOT NULL,
  239. Opis Varchar2(400 )
  240. );
  241. -- Add keys for table Gatunki
  242. ALTER TABLE Gatunki ADD CONSTRAINT PK_Gatunki PRIMARY KEY (Id_Gatunku);
  243. ALTER TABLE Gatunki ADD CONSTRAINT Nazwa UNIQUE (Nazwa);
  244. -- Table Rasy
  245. CREATE TABLE Rasy(
  246. Id_Rasa Integer NOT NULL,
  247. Nazwa Varchar2(30 ) NOT NULL,
  248. Opis Varchar2(400 ),
  249. Id_Gatunku Integer
  250. );
  251. -- Create indexes for table Rasy
  252. CREATE INDEX IX_Relationship3 ON Rasy (Id_Gatunku);
  253. -- Add keys for table Rasy
  254. ALTER TABLE Rasy ADD CONSTRAINT PK_Rasy PRIMARY KEY (Id_Rasa);
  255. -- Table Zakupy_uslug
  256. CREATE TABLE Zakupy_uslug(
  257. Id_Klienta Integer NOT NULL,
  258. Id_Uslugi Integer NOT NULL,
  259. Data Char(20 ) NOT NULL
  260. );
  261. -- Add keys for table Zakupy_uslug
  262. ALTER TABLE Zakupy_uslug ADD CONSTRAINT PK_Zakupy_uslug PRIMARY KEY (Id_Klienta,Id_Uslugi,Data);
  263. -- Trigger for sequence SchronsikaSeq for column Id_Schroniska in table Schroniska ---------
  264. CREATE OR REPLACE TRIGGER ts_Schroniska_SchronsikaSeq BEFORE INSERT
  265. ON Schroniska FOR EACH ROW
  266. BEGIN
  267. :new.Id_Schroniska := SchronsikaSeq.nextval;
  268. END
  269. ;
  270. CREATE OR REPLACE TRIGGER tsu_Schroniska_SchronsikaSeq AFTER UPDATE OF Id_Schroniska
  271. ON Schroniska FOR EACH ROW
  272. BEGIN
  273. RAISE_APPLICATION_ERROR(-20010,'Cannot update column Id_Schroniska in table Schroniska as it uses sequence.');
  274. END
  275. ;
  276. -- Create foreign keys (relationships) section -------------------------------------------------
  277. ALTER TABLE Wynagrodzenia ADD CONSTRAINT Pracownik_otrzymuje FOREIGN KEY (Id_pracownika) REFERENCES Pracownicy (Id_pracownika);
  278. ALTER TABLE Grafiki ADD CONSTRAINT Pracownik_posiada FOREIGN KEY (Id_pracownika) REFERENCES Pracownicy (Id_pracownika);
  279. ALTER TABLE Klatki ADD CONSTRAINT Schronisko_posiada FOREIGN KEY (Id_Schroniska) REFERENCES Schroniska (Id_Schroniska);
  280. ALTER TABLE Pracownicy ADD CONSTRAINT Schronisko_zatrudnia FOREIGN KEY (Id_Schroniska) REFERENCES Schroniska (Id_Schroniska);
  281. ALTER TABLE Zwierzeta ADD CONSTRAINT Schronisko_utrzymuje FOREIGN KEY (Id_Schroniska) REFERENCES Schroniska (Id_Schroniska);
  282. ALTER TABLE Uslugi ADD CONSTRAINT Schronisko_dostarcza FOREIGN KEY (Id_Schroniska) REFERENCES Schroniska (Id_Schroniska);
  283. ALTER TABLE Klienci ADD CONSTRAINT Schronisko_ma FOREIGN KEY (Id_Schroniska) REFERENCES Schroniska (Id_Schroniska);
  284. ALTER TABLE Badania ADD CONSTRAINT Zwierze_jest_badane FOREIGN KEY (Id_zwierzecia) REFERENCES Zwierzeta (Id_Zwierzecia);
  285. ALTER TABLE Szkolenia ADD CONSTRAINT Pracownik_odbywa FOREIGN KEY (Id_pracownika) REFERENCES Pracownicy (Id_pracownika);
  286. ALTER TABLE Wlasciciele ADD CONSTRAINT Ma_wlasciciela FOREIGN KEY (Id_Schroniska) REFERENCES Schroniska (Id_Schroniska);
  287. ALTER TABLE Pracownicy ADD CONSTRAINT Ma_stanowisko FOREIGN KEY (Id_stanowiska) REFERENCES Stanowiska (Id_Stanowiska);
  288. ALTER TABLE Rasy ADD CONSTRAINT Ma_rase FOREIGN KEY (Id_Gatunku) REFERENCES Gatunki (Id_Gatunku);
  289. ALTER TABLE Zwierzeta ADD CONSTRAINT Jest_rasy FOREIGN KEY (Id_Rasa) REFERENCES Rasy (Id_Rasa);
  290. ALTER TABLE Zwierzeta ADD CONSTRAINT Jest_gatunku FOREIGN KEY (Id_Gatunku) REFERENCES Gatunki (Id_Gatunku);
  291. ALTER TABLE Zwierzeta ADD CONSTRAINT Jest_przypisane FOREIGN KEY (Id_klatki) REFERENCES Klatki (Id_Klatki);
  292. ALTER TABLE Zakupy_uslug ADD CONSTRAINT Klient_kupuje FOREIGN KEY (Id_Klienta) REFERENCES Klienci (Id_Klienta);
  293. ALTER TABLE Zakupy_uslug ADD CONSTRAINT Jest_oferowna FOREIGN KEY (Id_Uslugi) REFERENCES Uslugi (Id_Uslugi);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement