Advertisement
Guest User

przykladowa

a guest
Jan 24th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 11.35 KB | None | 0 0
  1. DROP TABLE Pacjenty  CASCADE CONSTRAINTS;
  2. DROP TABLE Lekarze  CASCADE CONSTRAINTS;
  3. DROP TABLE Spec CASCADE CONSTRAINTS;
  4. DROP TABLE Lek_spec CASCADE CONSTRAINTS;
  5. DROP TABLE Badania CASCADE CONSTRAINTS;
  6. DROP TABLE Lekarstwa CASCADE CONSTRAINTS;
  7. DROP TABLE Choroby CASCADE CONSTRAINTS;
  8. DROP TABLE Karta_Pacjenta CASCADE CONSTRAINTS;
  9. DROP TABLE Sale CASCADE CONSTRAINTS;
  10. DROP TABLE Termin_wizytu CASCADE CONSTRAINTS;
  11. DROP TABLE x CASCADE CONSTRAINTS;
  12.  
  13. CREATE TABLE x(b DATE);
  14.  
  15.  
  16. CREATE TABLE Pacjenty (
  17. Id_pacjenta NUMBER(2) CONSTRAINT pacj_pk PRIMARY KEY,
  18. Imie VARCHAR2(25) NOT NULL,
  19. Nazwisko VARCHAR2(30) NOT NULL,
  20. Wiek NUMBER NOT NULL CONSTRAINT Wiek CHECK((Wiek>=0) AND (Wiek<=125)),
  21. Gender VARCHAR2(10) NOT NULL,
  22. Miasto VARCHAR2(20) NOT NULL,
  23. Ulica VARCHAR2(20) NOT NULL,
  24. Dom VARCHAR2(10) NOT NULL,
  25. Pesel CHAR(11) NOT NULL CONSTRAINT pacj_uni UNIQUE
  26. );
  27.  
  28. CREATE TABLE Lekarze (
  29. Id_lekarza NUMBER CONSTRAINT lek_pk PRIMARY KEY,
  30. Imie VARCHAR2(25) NOT NULL,
  31. Nazwisko VARCHAR2(30) NOT NULL,
  32. Miasto VARCHAR2(20) NOT NULL,
  33. Ulica VARCHAR2(30) NOT NULL,
  34. Dom VARCHAR2(10) NOT NULL,
  35. Pesel CHAR(11) NOT NULL CONSTRAINT lek_uni UNIQUE
  36. );
  37.  
  38. CREATE TABLE Spec (
  39. Id_spec NUMBER CONSTRAINT spec_pk PRIMARY KEY,
  40. Specj VARCHAR2(50) NOT NULL
  41. );
  42.  
  43. CREATE TABLE Lek_spec (
  44. Id_lekarza NUMBER NOT NULL,
  45. Id_spec NUMBER NOT NULL,
  46. CONSTRAINT tab_to_lek FOREIGN KEY (Id_lekarza) REFERENCES Lekarze(Id_lekarza),
  47. CONSTRAINT tab_to_spec FOREIGN KEY (Id_spec) REFERENCES Spec(Id_spec)
  48. );
  49.  
  50. CREATE TABLE Badania (
  51. Id_badania NUMBER CONSTRAINT bad_pk PRIMARY KEY,
  52. Badanie VARCHAR2(50) NOT NULL
  53. );
  54.  
  55. CREATE TABLE Lekarstwa (
  56. Id_lekarstw NUMBER CONSTRAINT lekarstwa_pk PRIMARY KEY,
  57. Lekarstwo VARCHAR2(50) NOT NULL
  58. );
  59.  
  60. CREATE TABLE Choroby (
  61. Id_Choroby NUMBER CONSTRAINT Choroby_pk PRIMARY KEY,
  62. Choroba VARCHAR2(50) NOT NULL
  63. );
  64.  
  65. CREATE TABLE Karta_Pacjenta (
  66. Id_karta NUMBER CONSTRAINT karta_pk PRIMARY KEY,
  67. Id_pacjenta NUMBER NOT NULL,
  68. Id_badania NUMBER NOT NULL,
  69. Id_lekarstw NUMBER,
  70. Id_Choroby NUMBER NOT NULL,
  71. Objawy VARCHAR(55),
  72. CONSTRAINT Kar_pac FOREIGN KEY (Id_pacjenta) REFERENCES Pacjenty(Id_pacjenta),
  73. CONSTRAINT Kar_badnia FOREIGN KEY (Id_badania) REFERENCES Badania(Id_badania),
  74. CONSTRAINT Kar_lekarstw FOREIGN KEY (Id_lekarstw) REFERENCES Lekarstwa(Id_lekarstw),
  75. CONSTRAINT Kar_choroby FOREIGN KEY (Id_Choroby) REFERENCES Choroby(Id_Choroby)
  76. );
  77.  
  78. CREATE TABLE Sale (
  79. Id_Sale NUMBER CONSTRAINT sala_pk PRIMARY KEY,
  80. Numer_s NUMBER NOT NULL,
  81. Widzial VARCHAR(100)
  82. );
  83.  
  84. CREATE TABLE Termin_wizytu(
  85. Id_ternimu  NUMBER CONSTRAINT termin_pk PRIMARY KEY,
  86. Id_lekarza NUMBER NOT NULL,
  87. Id_karta NUMBER NOT NULL,
  88. Id_pacjenta NUMBER NOT NULL,
  89. Id_Sale NUMBER NOT NULL,
  90. data_t DATE NOT NULL,
  91. CONSTRAINT ter_lek FOREIGN KEY (Id_lekarza) REFERENCES Lekarze(Id_lekarza),
  92. CONSTRAINT ter_karta FOREIGN KEY (Id_pacjenta) REFERENCES Karta_Pacjenta(Id_karta),
  93. CONSTRAINT ter_pac FOREIGN KEY (Id_pacjenta) REFERENCES Pacjenty(Id_pacjenta),
  94. CONSTRAINT ter_sale FOREIGN KEY (Id_Sale) REFERENCES Sale(Id_Sale)
  95. );
  96.  
  97.  
  98. DELETE FROM Spec;
  99. DELETE FROM Lekarze;
  100. DELETE FROM Lek_spec;
  101. DELETE FROM Pacjenty;
  102. DELETE FROM Badania;
  103. DELETE FROM Lekarstwa;
  104. DELETE FROM Choroby;
  105. DELETE FROM Karta_Pacjenta;
  106. DELETE FROM Sale;
  107. DELETE FROM Termin_wizytu;
  108. DELETE FROM x;
  109.  
  110. INSERT INTO x VALUES(SYSDATE);
  111.  
  112. INSERT INTO Spec VALUES(1,'Anestezjologia i intensywna terapia');
  113. INSERT INTO Spec VALUES(2,'Audiologia i foniatria');
  114. INSERT INTO Spec VALUES(3,'Chirurgia og?lna');
  115. INSERT INTO Spec VALUES(4,'Dermatologia i wenerologia');
  116. INSERT INTO Spec VALUES(5,'Diagnostyka laboratoryjna');
  117. INSERT INTO Spec VALUES(6,'Epidemiologia');
  118. INSERT INTO Spec VALUES(7,'Genetyka kliniczna');
  119. INSERT INTO Spec VALUES(8,'Kardiologia');
  120. INSERT INTO Spec VALUES(9,'Mikrobiologia lekarska');
  121. INSERT INTO Spec VALUES(10,'Neonatologia');
  122. INSERT INTO Spec VALUES(11,'Neurologia');
  123. INSERT INTO Spec VALUES(12,'Pediatria');
  124. INSERT INTO Spec VALUES(13,'Psychiatria');
  125. INSERT INTO Spec VALUES(14,'Psychiatria dzieci i m?odzie?y');
  126. INSERT INTO Spec VALUES(15,'Urologia');
  127.  
  128. --seq--------------------------------------------------------
  129.  
  130.  
  131. DROP SEQUENCE lekarzy_sec;
  132. DROP SEQUENCE Lek_spec_sec;
  133. DROP SEQUENCE bad_sec;
  134. DROP SEQUENCE chor_sec;
  135. DROP SEQUENCE lekarstwa_sec;
  136. DROP SEQUENCE pac_sec;
  137. DROP SEQUENCE karta_sec;
  138. DROP SEQUENCE sala_sec;
  139. DROP SEQUENCE termin_sec;
  140.  
  141. CREATE SEQUENCE lekarzy_sec;
  142. CREATE SEQUENCE Lek_spec_sec;
  143. CREATE SEQUENCE bad_sec;
  144. CREATE SEQUENCE chor_sec;
  145. CREATE SEQUENCE lekarstwa_sec;
  146. CREATE SEQUENCE pac_sec;
  147. CREATE SEQUENCE karta_sec;
  148. CREATE SEQUENCE sala_sec;
  149. CREATE SEQUENCE termin_sec;
  150.  
  151.  
  152.  
  153.  
  154. --add badania
  155. CREATE OR REPLACE PROCEDURE add_badania (bad Badania.Badanie%TYPE)
  156. AS
  157. BEGIN
  158. INSERT INTO Badania VALUES( bad_sec.NEXTVAL,bad);
  159. END;
  160. /
  161.  
  162. EXECUTE add_badania('Morfologia krwi');
  163. EXECUTE add_badania('Retikulocyty');
  164. EXECUTE add_badania('Fibrynogen');
  165. EXECUTE add_badania('Badanie ogólne moczu');
  166. EXECUTE add_badania('Białko w moczu z dobowej zbiórki');
  167. EXECUTE add_badania('Badanie kału na resztki pokarmowe');
  168. EXECUTE add_badania('Test na obecność lamblii');
  169. EXECUTE add_badania('Narkotyki w moczu');
  170. EXECUTE add_badania('Grupa krwi');
  171. EXECUTE add_badania('Test do wykrywania mononukleozy (wirus EVB)');
  172. EXECUTE add_badania('Badanie bakteriologiczne (wszystkie materiały)');
  173. EXECUTE add_badania('Badanie jałowości Sporal S lub A');
  174. EXECUTE add_badania('Kwas moczowy');
  175. EXECUTE add_badania('Alkohol we krwi');
  176. EXECUTE add_badania('Glukoza');
  177.  
  178. --add chorobe
  179. CREATE OR REPLACE PROCEDURE add_choroba (chor Choroby.Choroba%TYPE)
  180. AS
  181. BEGIN
  182. INSERT INTO Choroby  VALUES( chor_sec.NEXTVAL,chor);
  183. END;
  184. /
  185.  
  186. EXECUTE add_choroba('awd');
  187.  
  188.  
  189. --add lek
  190. CREATE OR REPLACE PROCEDURE add_lekarstwa (lekarstwo Lekarstwa.Lekarstwo%TYPE)
  191. AS
  192. BEGIN
  193. INSERT INTO Lekarstwa  VALUES( lekarstwa_sec.NEXTVAL,lekarstwo);
  194. END;
  195. /
  196. --add sale
  197. CREATE OR REPLACE PROCEDURE add_sale (sala Sale.Numer_s%TYPE, widz  Sale.Widzial%TYPE )
  198. AS
  199. BEGIN
  200. INSERT INTO Sale  VALUES( sala_sec.NEXTVAL,sala, widz );
  201. END;
  202. /
  203.  
  204. EXECUTE add_sale(10,'A');
  205. EXECUTE add_sale(12,'A');
  206. EXECUTE add_sale(13,'A');
  207. EXECUTE add_sale(10,'B');
  208.  
  209. EXECUTE add_lekarstwa('qwe');
  210.  
  211. CREATE OR REPLACE PROCEDURE add_lekarza (imie Lekarze.Imie%TYPE,nazw Lekarze.Nazwisko%TYPE,
  212. miasto Lekarze.Miasto%TYPE,street Lekarze.Ulica%TYPE, House Lekarze.DOM%TYPE, pesel Lekarze.Pesel%TYPE,
  213. special NUMBER)
  214. AS
  215. BEGIN
  216. INSERT INTO Lekarze VALUES(lekarzy_sec.NEXTVAL,imie,nazw,miasto,street,House,pesel);
  217. INSERT INTO Lek_spec VALUES(lekarzy_sec.currval,special);
  218. END;
  219. /
  220.  
  221.  
  222. EXECUTE   DBMS_SCHEDULER.DROP_JOB('data_job',TRUE);
  223. BEGIN
  224.   DBMS_SCHEDULER.create_job (
  225.     job_name        => 'data_job',
  226.     job_type        => 'PLSQL_BLOCK',
  227.     job_action      => 'UPDATE x SET d = SYSDATE;',
  228.     start_date      => SYSTIMESTAMP,
  229.     repeat_interval => 'freq=daily',
  230.     end_date        => NULL,
  231.     enabled         => TRUE,
  232.     comments        => 'Time checl'
  233.   );
  234. END;
  235. /
  236.  
  237. CREATE OR REPLACE PROCEDURE add_pacjent (imie Pacjenty.Imie%TYPE,nazw Pacjenty.Nazwisko%TYPE, wiek Pacjenty.Wiek%TYPE,gen Pacjenty.Gender%TYPE,  
  238. miasto Pacjenty.Miasto%TYPE,street Pacjenty.Ulica%TYPE, House Pacjenty.DOM%TYPE, pesel Pacjenty.Pesel%TYPE,
  239. choroba NUMBER,bad NUMBER,objawy STRING)
  240. AS
  241. BEGIN
  242. INSERT INTO Pacjenty VALUES(pac_sec.NEXTVAL,imie,nazw,wiek,gen,miasto,street,House,pesel);
  243. INSERT INTO Karta_Pacjenta VALUES(karta_sec.NEXTVAL,pac_sec.currval,bad,choroba,choroba,objawy);
  244. END;
  245. /
  246. --add termin
  247. CREATE OR REPLACE PROCEDURE add_termin(lekarz NUMBER,karta NUMBER, pacj NUMBER,  sala NUMBER,dat VARCHAR)
  248. AS
  249. BEGIN
  250. INSERT INTO Termin_wizytu VALUES(termin_sec.NEXTVAL,lekarz,karta,pacj,sala,to_date(dat,'yyyy/mm/dd:hh:mi:ssam'));
  251. END;
  252. /
  253. EXECUTE add_pacjent ('MISHA','Chur',41,'Male','Kielce','1000lecia','17a','13239612412',1,4,'SOPLi');
  254.  
  255. EXECUTE add_lekarza ('Bogdan','Moskin','Kielce','1000lecia','17a','13234612412',6);
  256.  
  257. EXECUTE add_termin(1,1,1,2,'2017/05/31:12:00:00AM');
  258.  
  259. CREATE OR REPLACE PROCEDURE add_lekaRZ_scec(lekarz NUMBER,spec NUMBER)
  260. AS
  261. BEGIN
  262. INSERT INTO Lek_spec VALUES(lekarz,spec);
  263. END;
  264. /
  265. CREATE OR REPLACE PROCEDURE add_kart_onPac(pac NUMBER,choroba NUMBER,bad NUMBER,o STRING)
  266. AS
  267. BEGIN
  268. INSERT INTO Karta_Pacjenta VALUES(karta_sec.NEXTVAL,pac,bad,choroba,choroba,o);
  269. END;
  270. /
  271.  
  272. EXECUTE add_kart_onPac(1,1,6,'th');
  273.  
  274. EXECUTE add_lekaRZ_scec(1,4);
  275. EXECUTE add_lekaRZ_scec(1,7);
  276.  
  277. CREATE OR REPLACE VIEW Lekarze_view AS SELECT O.Imie,O.Nazwisko,O.Miasto,O.Ulica,O.Dom,O.Pesel, S.Specj
  278. FROM Lekarze O
  279. JOIN Lek_spec L
  280. ON O.Id_lekarza = L.Id_lekarza
  281. JOIN Spec S
  282. ON S.Id_spec = L.Id_spec;
  283.  
  284. CREATE OR REPLACE VIEW Pac_view AS SELECT
  285. p.Imie, p.Nazwisko, p.Wiek, p.Gender, p.Miasto, p.Ulica,p.Dom,
  286. p.Pesel
  287. FROM Pacjenty P;
  288.  
  289. CREATE OR REPLACE VIEW Pac_c_view AS SELECT
  290. p.Id_pacjenta,p.Imie, p.Nazwisko,B.BADANIE, C.CHOROBA,L.LEKARSTWO
  291. FROM Pacjenty P
  292. JOIN Karta_Pacjenta K
  293. ON P.Id_pacjenta = K.Id_pacjenta
  294. JOIN Badania B
  295. ON B.ID_BADANIA = K.ID_BADANIA
  296. JOIN Choroby C
  297. ON C.ID_CHOROBY = K.ID_CHOROBY
  298. JOIN Lekarstwa L
  299. ON L.ID_LEKARSTW = K.ID_LEKARSTW;
  300.  
  301.  
  302.  
  303. CREATE OR REPLACE TRIGGER dataTr AFTER UPDATE ON x
  304. DECLARE
  305. CURSOR XB IS SELECT * FROM x;
  306. CURSOR q IS SELECT * FROM Termin_wizytu;
  307. tmp XB%ROWTYPE;
  308. BEGIN
  309. OPEN q;
  310. OPEN XB;
  311. FETCH XB INTO tmp;
  312. FOR w IN q Loop
  313. IF w.data_t = tmp.b THEN
  314.   DELETE FROM Termin_wizytu WHERE data_t = tmp.b;
  315. END IF;
  316.  
  317. END LOOP;
  318. END dataTr;
  319. /
  320.  
  321.  
  322. SELECT * FROM Lekarze_view;
  323. SELECT * FROM Pac_view;
  324. SELECT * FROM Pac_c_view;
  325.  
  326.  
  327. ------------------------------------------------------------------------
  328. INSERT INTO Choroby VALUES(1,'Angina');
  329. INSERT INTO Choroby VALUES(2,'Borelioza z Lyme');
  330. INSERT INTO Choroby VALUES(3,'Chlamydioza');
  331. INSERT INTO Choroby VALUES(4,'Choroba Huntingtona');
  332. INSERT INTO Choroby VALUES(5,'Choroba Parkinsona');
  333. INSERT INTO Choroby VALUES(6,'Cukrzyca typu 1');
  334. INSERT INTO Choroby VALUES(7,'Depresja');
  335. INSERT INTO Choroby VALUES(8,'Eozynofilie płucne');
  336. INSERT INTO Choroby VALUES(9,'Fibromialgia');
  337. INSERT INTO Choroby VALUES(10,'Gorączka trzydniowa');
  338. INSERT INTO Choroby VALUES(11,'Gruźlica przełyku');
  339. INSERT INTO Choroby VALUES(12,'Grypa');
  340. INSERT INTO Choroby VALUES(13,'Grzybica skóry');
  341. INSERT INTO Choroby VALUES(14,'Hemochromatoza');
  342. INSERT INTO Choroby VALUES(15,'Hemoroidy');
  343. INSERT INTO Choroby VALUES(16,'Jaskra');
  344. INSERT INTO Choroby VALUES(17,'Kamica nerkowa');
  345. INSERT INTO Choroby VALUES(18,'Łuszczyca');
  346. INSERT INTO Choroby VALUES(19,'Migrena');
  347. INSERT INTO Choroby VALUES(20,'Odra');
  348.  
  349. -----------------------------------------------------------------------------
  350. INSERT INTO Lekarstwa VALUES(1,'Acatar');
  351. INSERT INTO Lekarstwa VALUES(2,'Acodin');
  352. INSERT INTO Lekarstwa VALUES(3,'Bactrim');
  353. INSERT INTO Lekarstwa VALUES(4,'Baikaderm');
  354. INSERT INTO Lekarstwa VALUES(5,'Calcipiryna');
  355. INSERT INTO Lekarstwa VALUES(6,'Dasselta');
  356. INSERT INTO Lekarstwa VALUES(7,'Egistrozol');
  357. INSERT INTO Lekarstwa VALUES(8,'Etadron');
  358. INSERT INTO Lekarstwa VALUES(9,'Forcid');
  359. INSERT INTO Lekarstwa VALUES(10,'Hydrochlorothiazidum');
  360. INSERT INTO Lekarstwa VALUES(11,'Montespir');
  361. INSERT INTO Lekarstwa VALUES(12,'Morfeo');
  362. INSERT INTO Lekarstwa VALUES(13,'Padolten');
  363. INSERT INTO Lekarstwa VALUES(14,'Palin');
  364. INSERT INTO Lekarstwa VALUES(15,'Rhinophenazol');
  365. INSERT INTO Lekarstwa VALUES(16,'Rhodiola');
  366. INSERT INTO Lekarstwa VALUES(17,'Talion');
  367. INSERT INTO Lekarstwa VALUES(18,'Talvosilen');
  368. INSERT INTO Lekarstwa VALUES(19,'Zavedos');
  369. INSERT INTO Lekarstwa VALUES(20,'Zomig');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement