Advertisement
Guest User

Untitled

a guest
Dec 11th, 2019
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.45 KB | None | 0 0
  1. /*
  2. Created: 12/11/2019
  3. Modified: 12/11/2019
  4. Model: Logical model
  5. Database: Oracle 19c
  6. */
  7.  
  8.  
  9. -- Create sequences section -------------------------------------------------
  10.  
  11. CREATE SEQUENCE "FirmySeq"
  12. INCREMENT BY 1
  13. START WITH 1
  14. NOMAXVALUE
  15. NOMINVALUE
  16. CACHE 20
  17. /
  18.  
  19. CREATE SEQUENCE "AdresySeq"
  20. INCREMENT BY 1
  21. START WITH 1
  22. NOMAXVALUE
  23. NOMINVALUE
  24. CACHE 20
  25. /
  26.  
  27. CREATE SEQUENCE "JezykiProgramowaniaSeq"
  28. INCREMENT BY 1
  29. START WITH 1
  30. NOMAXVALUE
  31. NOMINVALUE
  32. CACHE 20
  33. /
  34.  
  35. CREATE SEQUENCE "KlienciSeq"
  36. INCREMENT BY 1
  37. START WITH 1
  38. NOMAXVALUE
  39. NOMINVALUE
  40. CACHE 20
  41. /
  42.  
  43. CREATE SEQUENCE "PanstwaSeq"
  44. INCREMENT BY 1
  45. START WITH 1
  46. NOMAXVALUE
  47. NOMINVALUE
  48. CACHE 20
  49. /
  50.  
  51. CREATE SEQUENCE "PracownicySeq"
  52. INCREMENT BY 1
  53. START WITH 1
  54. NOMAXVALUE
  55. NOMINVALUE
  56. CACHE 20
  57. /
  58.  
  59. CREATE SEQUENCE "ProducenciSeq"
  60. INCREMENT BY 1
  61. START WITH 1
  62. NOMAXVALUE
  63. NOMINVALUE
  64. CACHE 20
  65. /
  66.  
  67. CREATE SEQUENCE "ProjektySeq"
  68. INCREMENT BY 1
  69. START WITH 1
  70. NOMAXVALUE
  71. NOMINVALUE
  72. CACHE 20
  73. /
  74.  
  75. CREATE SEQUENCE "StanowiskaSeq"
  76. INCREMENT BY 1
  77. START WITH 1
  78. NOMAXVALUE
  79. NOMINVALUE
  80. CACHE 20
  81. /
  82.  
  83. CREATE SEQUENCE "UrzadzeniaSeq"
  84. INCREMENT BY 1
  85. START WITH 1
  86. NOMAXVALUE
  87. NOMINVALUE
  88. CACHE 20
  89. /
  90.  
  91. CREATE SEQUENCE "WynagrodzeniaSeq"
  92. INCREMENT BY 1
  93. START WITH 1
  94. NOMAXVALUE
  95. NOMINVALUE
  96. CACHE 20
  97. /
  98.  
  99. CREATE SEQUENCE "ZespolySeq"
  100. INCREMENT BY 1
  101. START WITH 1
  102. NOMAXVALUE
  103. NOMINVALUE
  104. CACHE 20
  105. /
  106.  
  107. -- Create tables section -------------------------------------------------
  108.  
  109. -- Table Firmy
  110.  
  111. CREATE TABLE "Firmy"(
  112. "Id_firmy" Integer NOT NULL,
  113. "Nazwa" Varchar2(30 ) NOT NULL,
  114. "Numer_kontaktowy" Varchar2(12 ) NOT NULL,
  115. "Id_adresu" Integer NOT NULL
  116. )
  117. /
  118.  
  119. -- Create indexes for table Firmy
  120.  
  121. CREATE INDEX "IX_Firma_ma_adres" ON "Firmy" ("Id_adresu")
  122. /
  123.  
  124. -- Add keys for table Firmy
  125.  
  126. ALTER TABLE "Firmy" ADD CONSTRAINT "Id_firmy" PRIMARY KEY ("Id_firmy")
  127. /
  128.  
  129. -- Create triggers for table Firmy
  130.  
  131. CREATE TRIGGER "FirmyT1"
  132. BEFORE INSERT
  133. ON "Firmy"
  134. BEGIN
  135. select FirmySeq.nextval into :new.Id_firmy from dual;
  136. END;
  137. /
  138.  
  139. -- Table Pracownicy
  140.  
  141. CREATE TABLE "Pracownicy"(
  142. "Id_pracownika" Integer NOT NULL,
  143. "Imie" Varchar2(30 ) NOT NULL,
  144. "Nazwisko" Varchar2(30 ) NOT NULL,
  145. "Data_urodzenia" Date NOT NULL,
  146. "Numer_konta" Char(26 ) NOT NULL,
  147. "Numer_kontaktowy" Varchar2(12 ) NOT NULL,
  148. "PESEL" Char(11 ),
  149. "Numer_dokumentu" Varchar2(20 ),
  150. "Id_firmy" Integer NOT NULL,
  151. "Id_adresu" Integer NOT NULL,
  152. "Id_stanowiska" Integer NOT NULL,
  153. "Id_zespolu" Integer NOT NULL,
  154. "Id_panstwa" Integer NOT NULL
  155. )
  156. /
  157.  
  158. -- Create indexes for table Pracownicy
  159.  
  160. CREATE INDEX "IX_Firma_zatrudnia" ON "Pracownicy" ("Id_firmy")
  161. /
  162.  
  163. CREATE INDEX "IX_Pracownik_posiada" ON "Pracownicy" ("Id_adresu")
  164. /
  165.  
  166. CREATE INDEX "IX_Pracownik_jest_zatrudniony" ON "Pracownicy" ("Id_stanowiska")
  167. /
  168.  
  169. CREATE INDEX "IX_Pracownik_nalezy" ON "Pracownicy" ("Id_zespolu")
  170. /
  171.  
  172. CREATE INDEX "IX_Jest_narodowosci" ON "Pracownicy" ("Id_panstwa")
  173. /
  174.  
  175. -- Add keys for table Pracownicy
  176.  
  177. ALTER TABLE "Pracownicy" ADD CONSTRAINT "Id_pracownika" PRIMARY KEY ("Id_pracownika")
  178. /
  179.  
  180. -- Create triggers for table Pracownicy
  181.  
  182. CREATE TRIGGER "PracownicyT1"
  183. BEFORE INSERT
  184. ON "Pracownicy"
  185. BEGIN
  186. select PracownicySeq.nextval into :new.Id_pracownika from dual;
  187. END;
  188. /
  189.  
  190. -- Table Projekty
  191.  
  192. CREATE TABLE "Projekty"(
  193. "Id_projektu" Integer NOT NULL,
  194. "Nazwa" Varchar2(30 ) NOT NULL,
  195. "Opis" Varchar2(600 ),
  196. "Id_firmy" Integer NOT NULL,
  197. "Id_klienta" Integer NOT NULL
  198. )
  199. /
  200.  
  201. -- Create indexes for table Projekty
  202.  
  203. CREATE INDEX "IX_Klient_kupuje" ON "Projekty" ("Id_klienta")
  204. /
  205.  
  206. CREATE INDEX "IX_Firma_realizuje" ON "Projekty" ("Id_firmy")
  207. /
  208.  
  209. -- Add keys for table Projekty
  210.  
  211. ALTER TABLE "Projekty" ADD CONSTRAINT "Id_projektu" PRIMARY KEY ("Id_projektu")
  212. /
  213.  
  214. -- Create triggers for table Projekty
  215.  
  216. CREATE TRIGGER "ProjektyT1"
  217. BEFORE INSERT
  218. ON "Projekty"
  219. BEGIN
  220. select ProjektySeq.nextval into :new.Id_projektu from dual;
  221. END;
  222. /
  223.  
  224. -- Table Urzadzenia
  225.  
  226. CREATE TABLE "Urzadzenia"(
  227. "Id_urzadzenia" Integer NOT NULL,
  228. "Numer_inwentaryzacyjny" Varchar2(20 ),
  229. "Typ_urzadzenia" Char(30 ) NOT NULL
  230. CHECK (Typ_urzadzenia IN ('Laptop', 'Telefon', 'Tablet','Inne')),
  231. "Id_firmy" Integer NOT NULL,
  232. "Id_producenta" Integer NOT NULL
  233. )
  234. /
  235.  
  236. -- Create indexes for table Urzadzenia
  237.  
  238. CREATE INDEX "IX_Firma_posiada_urzadzenia" ON "Urzadzenia" ("Id_firmy")
  239. /
  240.  
  241. CREATE INDEX "IX_Urzadzenie_posiada" ON "Urzadzenia" ("Id_producenta")
  242. /
  243.  
  244. -- Add keys for table Urzadzenia
  245.  
  246. ALTER TABLE "Urzadzenia" ADD CONSTRAINT "Id_urzadzenia" PRIMARY KEY ("Id_urzadzenia")
  247. /
  248.  
  249. -- Create triggers for table Urzadzenia
  250.  
  251. CREATE TRIGGER "UrzadzeniaT1"
  252. BEFORE INSERT
  253. ON "Urzadzenia"
  254. BEGIN
  255. select UrzadzeniaSeq.nextval into :new.Id_urzadzenia from dual;
  256. END;
  257. /
  258.  
  259. -- Table Adresy
  260.  
  261. CREATE TABLE "Adresy"(
  262. "Id_adresu" Integer NOT NULL,
  263. "Miejscowosc" Varchar2(30 ) NOT NULL,
  264. "Kod_pocztowy" Char(6 ) NOT NULL,
  265. "Ulica" Varchar2(30 ) NOT NULL,
  266. "Numer_budynku" Varchar2(5 ) NOT NULL,
  267. "Numer_mieszkania" Varchar2(5 ),
  268. "Id_panstwa" Integer NOT NULL
  269. )
  270. /
  271.  
  272. -- Create indexes for table Adresy
  273.  
  274. CREATE INDEX "IX_Adres_w" ON "Adresy" ("Id_panstwa")
  275. /
  276.  
  277. -- Add keys for table Adresy
  278.  
  279. ALTER TABLE "Adresy" ADD CONSTRAINT "Id_adresu" PRIMARY KEY ("Id_adresu")
  280. /
  281.  
  282. -- Create triggers for table Adresy
  283.  
  284. CREATE TRIGGER "AdresyT1"
  285. BEFORE INSERT
  286. ON "Adresy"
  287. BEGIN
  288. select AdresySeq.nextval into :new.Id_adresu from dual;
  289. END;
  290. /
  291.  
  292. -- Table Stanowiska
  293.  
  294. CREATE TABLE "Stanowiska"(
  295. "Id_stanowiska" Integer NOT NULL,
  296. "Nazwa" Varchar2(30 ) NOT NULL,
  297. "Opis" Varchar2(600 )
  298. )
  299. /
  300.  
  301. -- Add keys for table Stanowiska
  302.  
  303. ALTER TABLE "Stanowiska" ADD CONSTRAINT "Id_stanowiska" PRIMARY KEY ("Id_stanowiska")
  304. /
  305.  
  306. -- Create triggers for table Stanowiska
  307.  
  308. CREATE TRIGGER "StanowiskaT1"
  309. BEFORE INSERT
  310. ON "Stanowiska"
  311. BEGIN
  312. select StanowiskaSeq.nextval into :new.Id_stanowiska from dual;
  313. END;
  314. /
  315.  
  316. -- Table Wynagrodzenia
  317.  
  318. CREATE TABLE "Wynagrodzenia"(
  319. "Id_wynagrodzenia" Integer NOT NULL,
  320. "Data" Date NOT NULL,
  321. "Wysokosc_wynagrodzenia" Number(10,2) NOT NULL,
  322. "Dodatek" Number(10,2),
  323. "Id_pracownika" Integer NOT NULL
  324. )
  325. /
  326.  
  327. -- Create indexes for table Wynagrodzenia
  328.  
  329. CREATE INDEX "IX_Jest_wyplacane" ON "Wynagrodzenia" ("Id_pracownika")
  330. /
  331.  
  332. -- Add keys for table Wynagrodzenia
  333.  
  334. ALTER TABLE "Wynagrodzenia" ADD CONSTRAINT "Id_wynagrodzenia" PRIMARY KEY ("Id_wynagrodzenia")
  335. /
  336.  
  337. -- Create triggers for table Wynagrodzenia
  338.  
  339. CREATE TRIGGER "WynagrodzeniaT1"
  340. BEFORE INSERT
  341. ON "Wynagrodzenia"
  342. BEGIN
  343. select WynagrodzeniaSeq.nextval into :new.Id_wynagrodzenia from dual;
  344. END;
  345. /
  346.  
  347. -- Table Jezyki_programowania
  348.  
  349. CREATE TABLE "Jezyki_programowania"(
  350. "Id_jezyka_programowania" Integer NOT NULL,
  351. "Nazwa" Varchar2(15 ) NOT NULL,
  352. "Opis" Varchar2(600 )
  353. )
  354. /
  355.  
  356. -- Add keys for table Jezyki_programowania
  357.  
  358. ALTER TABLE "Jezyki_programowania" ADD CONSTRAINT "Id_jezyka_programowania" PRIMARY KEY ("Id_jezyka_programowania")
  359. /
  360.  
  361. -- Create triggers for table Jezyki_programowania
  362.  
  363. CREATE TRIGGER "JezykiProgramowaniaT1"
  364. BEFORE INSERT
  365. ON "Jezyki_programowania"
  366. BEGIN
  367. select JezykiProgramowaniaSeq.nextval into :new.Id_jezyka_programowania from dual;
  368. END;
  369. /
  370.  
  371. -- Table Zespoly
  372.  
  373. CREATE TABLE "Zespoly"(
  374. "Id_zespolu" Integer NOT NULL,
  375. "Nazwa" Varchar2(30 ) NOT NULL,
  376. "Id_firmy" Integer NOT NULL
  377. )
  378. /
  379.  
  380. -- Create indexes for table Zespoly
  381.  
  382. CREATE INDEX "IX_Firma_koordynuje" ON "Zespoly" ("Id_firmy")
  383. /
  384.  
  385. -- Add keys for table Zespoly
  386.  
  387. ALTER TABLE "Zespoly" ADD CONSTRAINT "Id_zespolu" PRIMARY KEY ("Id_zespolu")
  388. /
  389.  
  390. -- Create triggers for table Zespoly
  391.  
  392. CREATE TRIGGER "ZespolyT1"
  393. BEFORE INSERT
  394. ON "Zespoly"
  395. BEGIN
  396. select ZespolySeq.nextval into :new.Id_zespolu from dual;
  397. END;
  398. /
  399.  
  400. -- Table Panstwa
  401.  
  402. CREATE TABLE "Panstwa"(
  403. "Id_panstwa" Integer NOT NULL,
  404. "Nazwa" Varchar2(30 ) NOT NULL,
  405. "Skrot" Char(2 ) NOT NULL
  406. )
  407. /
  408.  
  409. -- Add keys for table Panstwa
  410.  
  411. ALTER TABLE "Panstwa" ADD CONSTRAINT "Id_panstwa" PRIMARY KEY ("Id_panstwa")
  412. /
  413.  
  414. -- Create triggers for table Panstwa
  415.  
  416. CREATE TRIGGER "PanstwaT1"
  417. BEFORE INSERT
  418. ON "Panstwa"
  419. BEGIN
  420. select PanstwaSeq.nextval into :new.Id_panstwa from dual;
  421. END;
  422. /
  423.  
  424. -- Table Klienci
  425.  
  426. CREATE TABLE "Klienci"(
  427. "Id_klienta" Integer NOT NULL,
  428. "Nazwa" Varchar2(30 ) NOT NULL,
  429. "Numer_kontaktowy" Varchar2(12 ) NOT NULL,
  430. "NIP" Varchar2(10 ),
  431. "Adres_email" Varchar2(50 ),
  432. "Id_firmy" Integer NOT NULL,
  433. "Id_adresu" Integer NOT NULL
  434. )
  435. /
  436.  
  437. -- Create indexes for table Klienci
  438.  
  439. CREATE INDEX "IX_Firma_ma_klienta" ON "Klienci" ("Id_firmy")
  440. /
  441.  
  442. CREATE INDEX "IX_Klient_ma_adres" ON "Klienci" ("Id_adresu")
  443. /
  444.  
  445. -- Add keys for table Klienci
  446.  
  447. ALTER TABLE "Klienci" ADD CONSTRAINT "Id_klienta" PRIMARY KEY ("Id_klienta")
  448. /
  449.  
  450. -- Create triggers for table Klienci
  451.  
  452. CREATE TRIGGER "KlienciT1"
  453. BEFORE INSERT
  454. ON "Klienci"
  455. BEGIN
  456. select KlienciSeq.nextval into :new.Id_klienta from dual;
  457. END;
  458. /
  459.  
  460. -- Table Producenci
  461.  
  462. CREATE TABLE "Producenci"(
  463. "Id_producenta" Integer NOT NULL,
  464. "Nazwa" Varchar2(20 ) NOT NULL,
  465. "Opis" Varchar2(255 )
  466. )
  467. /
  468.  
  469. -- Add keys for table Producenci
  470.  
  471. ALTER TABLE "Producenci" ADD CONSTRAINT "Id_producenta" PRIMARY KEY ("Id_producenta")
  472. /
  473.  
  474. -- Create triggers for table Producenci
  475.  
  476. CREATE TRIGGER "ProducenciT1"
  477. BEFORE INSERT
  478. ON "Producenci"
  479. BEGIN
  480. select ProducenciSeq.nextval into :new.Id_producenta from dual;
  481. END;
  482. /
  483.  
  484. -- Table Pracownicy_Projekty
  485.  
  486. CREATE TABLE "Pracownicy_Projekty"(
  487. "Id_pracownika" Integer NOT NULL,
  488. "Id_projektu" Integer NOT NULL,
  489. "Data_od" Date NOT NULL,
  490. "Data_do" Date
  491. )
  492. /
  493.  
  494. -- Table Pracownicy_Jezyki_programowania
  495.  
  496. CREATE TABLE "Pracownicy_Jezyki_programowania"(
  497. "Id_pracownika" Integer NOT NULL,
  498. "Id_jezyka_programowania" Integer NOT NULL,
  499. "Stopien_zaawansowania" Char(30 ) NOT NULL
  500. CHECK (Stopien_zaawansowania in ('Podstawowy', 'Sredni', 'Zaawansowany', 'Inny'))
  501. )
  502. /
  503.  
  504. -- Table Projekty_Jezyki_programowania
  505.  
  506. CREATE TABLE "Projekty_Jezyki_programowania"(
  507. "Id_projektu" Integer NOT NULL,
  508. "Id_jezyka_programowania" Integer NOT NULL
  509. )
  510. /
  511.  
  512. -- Table Pracownicy_Urzadzenia
  513.  
  514. CREATE TABLE "Pracownicy_Urzadzenia"(
  515. "Id_pracownika" Integer NOT NULL,
  516. "Id_urzadzenia" Integer NOT NULL
  517. )
  518. /
  519.  
  520. -- Table Projekty_Zespoly
  521.  
  522. CREATE TABLE "Projekty_Zespoly"(
  523. "Id_projektu" Integer NOT NULL,
  524. "Id_zespolu" Integer NOT NULL,
  525. "Data_od" Date NOT NULL,
  526. "Data_do" Date
  527. )
  528. /
  529.  
  530.  
  531. -- Create foreign keys (relationships) section -------------------------------------------------
  532.  
  533. ALTER TABLE "Pracownicy" ADD CONSTRAINT "Firma_zatrudnia" FOREIGN KEY ("Id_firmy") REFERENCES "Firmy" ("Id_firmy")
  534. /
  535.  
  536.  
  537.  
  538. ALTER TABLE "Pracownicy" ADD CONSTRAINT "Pracownik_posiada" FOREIGN KEY ("Id_adresu") REFERENCES "Adresy" ("Id_adresu")
  539. /
  540.  
  541.  
  542.  
  543. ALTER TABLE "Pracownicy" ADD CONSTRAINT "Pracownik_jest_zatrudniony" FOREIGN KEY ("Id_stanowiska") REFERENCES "Stanowiska" ("Id_stanowiska")
  544. /
  545.  
  546.  
  547.  
  548. ALTER TABLE "Urzadzenia" ADD CONSTRAINT "Firma_posiada_urzadzenia" FOREIGN KEY ("Id_firmy") REFERENCES "Firmy" ("Id_firmy")
  549. /
  550.  
  551.  
  552.  
  553. ALTER TABLE "Zespoly" ADD CONSTRAINT "Firma_koordynuje" FOREIGN KEY ("Id_firmy") REFERENCES "Firmy" ("Id_firmy")
  554. /
  555.  
  556.  
  557.  
  558. ALTER TABLE "Pracownicy" ADD CONSTRAINT "Pracownik_nalezy" FOREIGN KEY ("Id_zespolu") REFERENCES "Zespoly" ("Id_zespolu")
  559. /
  560.  
  561.  
  562.  
  563. ALTER TABLE "Adresy" ADD CONSTRAINT "Adres_w" FOREIGN KEY ("Id_panstwa") REFERENCES "Panstwa" ("Id_panstwa")
  564. /
  565.  
  566.  
  567.  
  568. ALTER TABLE "Projekty" ADD CONSTRAINT "Klient_kupuje" FOREIGN KEY ("Id_klienta") REFERENCES "Klienci" ("Id_klienta")
  569. /
  570.  
  571.  
  572.  
  573. ALTER TABLE "Urzadzenia" ADD CONSTRAINT "Urzadzenie_posiada" FOREIGN KEY ("Id_producenta") REFERENCES "Producenci" ("Id_producenta")
  574. /
  575.  
  576.  
  577.  
  578. ALTER TABLE "Firmy" ADD CONSTRAINT "Firma_ma_adres" FOREIGN KEY ("Id_adresu") REFERENCES "Adresy" ("Id_adresu")
  579. /
  580.  
  581.  
  582.  
  583. ALTER TABLE "Pracownicy" ADD CONSTRAINT "Jest_narodowosci" FOREIGN KEY ("Id_panstwa") REFERENCES "Panstwa" ("Id_panstwa")
  584. /
  585.  
  586.  
  587.  
  588. ALTER TABLE "Wynagrodzenia" ADD CONSTRAINT "Jest_wyplacane" FOREIGN KEY ("Id_pracownika") REFERENCES "Pracownicy" ("Id_pracownika")
  589. /
  590.  
  591.  
  592.  
  593. ALTER TABLE "Klienci" ADD CONSTRAINT "Firma_ma_klienta" FOREIGN KEY ("Id_firmy") REFERENCES "Firmy" ("Id_firmy")
  594. /
  595.  
  596.  
  597.  
  598. ALTER TABLE "Klienci" ADD CONSTRAINT "Klient_ma_adres" FOREIGN KEY ("Id_adresu") REFERENCES "Adresy" ("Id_adresu")
  599. /
  600.  
  601.  
  602.  
  603. ALTER TABLE "Projekty" ADD CONSTRAINT "Firma_realizuje" FOREIGN KEY ("Id_firmy") REFERENCES "Firmy" ("Id_firmy")
  604. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement