Advertisement
Guest User

Untitled

a guest
Jun 2nd, 2018
365
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 9.74 KB | None | 0 0
  1. CREATE TABLE Kontakt (
  2.     id_kontaktu NUMBER(4,0) PRIMARY KEY,
  3.     kraj VARCHAR2(30) NOT NULL,
  4.     miesto VARCHAR2(30) NOT NULL,
  5.     ulica VARCHAR2(30) NOT NULL,
  6.     mieszkanie VARCHAR2(10) NOT NULL,
  7.     email VARCHAR2(50),
  8.     telefon NUMBER(9,0) NOT NULL);
  9.    
  10. CREATE TABLE Dane_osobowe (
  11.     id_osoby NUMBER(4,0) PRIMARY KEY,
  12.     imie VARCHAR2(30) NOT NULL,
  13.     nazwisko VARCHAR2(30) NOT NULL,
  14.     id_kontaktu NUMBER(4,0) NOT NULL UNIQUE REFERENCES Kontakt(id_kontaktu));
  15.    
  16. CREATE TABLE Pracownicy (
  17.     id_pracownika NUMBER(2,0) PRIMARY KEY,
  18.     id_osoby NUMBER(4,0) NOT NULL UNIQUE REFERENCES Dane_osobowe(id_osoby),
  19.     stanowisko VARCHAR2(30) NOT NULL,
  20.     pensja NUMBER(7,2) NOT NULL CHECK (pensja > 0));
  21.    
  22. CREATE TABLE Autorzy (
  23.     id_autora NUMBER(3,0) PRIMARY KEY,
  24.     id_osoby NUMBER(4,0) NOT NULL UNIQUE REFERENCES Dane_osobowe(id_osoby),
  25.     wydawnictwo VARCHAR2(40));
  26.    
  27. CREATE TABLE Komiksy (
  28.     id_komiksu NUMBER(4,0) PRIMARY KEY,
  29.     tutul VARCHAR2(100) NOT NULL,
  30.     nr_tomu NUMBER(2,0) NOT NULL,
  31.     id_autora NUMBER(3,0) NOT NULL REFERENCES Autorzy(id_autora),
  32.     data_wydania DATE NOT NULL,
  33.     ilosc_stron NUMBER(4,0) NOT NULL CHECK (ilosc_stron > 0),
  34.     cena NUMBER(5,2) NOT NULL CHECK (cena > 0));
  35.    
  36. CREATE TABLE Sklepy (
  37.     id_sklepu NUMBER(3,0) PRIMARY KEY,
  38.     nazwa VARCHAR2(40) NOT NULL,
  39.     id_kontaktu NUMBER(4,0) NOT NULL UNIQUE REFERENCES Kontakt(id_kontaktu));
  40.    
  41. CREATE TABLE Zamowienia (
  42.     id_zamowienia NUMBER(6,0) PRIMARY KEY,
  43.     nr_zamowienia NUMBER(6,0) NOT NULL,
  44.     data_zamowienia DATE NOT NULL,
  45.     id_sklepu NUMBER(3,0) REFERENCES Sklepy(id_sklepu),
  46.     id_komiksu NUMBER(4,0) NOT NULL REFERENCES Komiksy(id_komiksu),
  47.     ilosc NUMBER(4,0) NOT NULL,
  48.     typ CHAR(1) NOT NULL);
  49.  
  50. -- Logi tabeli komiksy
  51. CREATE TABLE Logi_komiksy (
  52.     id_operacji NUMBER(10) PRIMARY KEY,
  53.     typ_operacji VARCHAR2(6),
  54.     uzytkownik VARCHAR2(20),
  55.     czas_operacji DATE,
  56.     id_komiksu NUMBER(4,0) DEFAULT NULL,
  57.     tytul VARCHAR2(100) DEFAULT NULL,
  58.     nr_tomu NUMBER(2,0) DEFAULT NULL,
  59.     id_autora NUMBER(3,0) DEFAULT NULL,
  60.     data_wydania DATE DEFAULT NULL,
  61.     ilosc_stron NUMBER(4,0) DEFAULT NULL,
  62.     cena NUMBER(5,2) DEFAULT NULL);
  63.  
  64. -- TRIGERY
  65.  
  66. CREATE OR REPLACE TRIGGER Komiks_Audit AFTER INSERT OR DELETE OR UPDATE ON Komiksy
  67.     FOR EACH ROW
  68.     DECLARE
  69.     my Komiks_Audit%ROWTYPE;
  70.     BEGIN
  71.         IF inserting THEN my.typ_operacji := 'insert';
  72.         ELSIF updating THEN my.typ_operacji := 'update';
  73.         ELSE my.typ_operacji := 'delete';
  74.         END IF;
  75.        
  76.         my.uzytkownik := USER;
  77.         my.czas_operacji := SYSDATE;
  78.         my.id_operacji := log_seq.NEXTVAL;
  79.        
  80.         CASE my.typ_operacji
  81.         WHEN 'insert' THEN
  82.             my.id_komiksu := :NEW.id_komiksu;
  83.             my.tytul := :NEW.tytul;
  84.             my.nr_tomu := :NEW.nr_tomu;
  85.             my.id_autora := :NEW.id_autora;
  86.             my.data_wydania := :NEW.data_wydania;
  87.             my.ilosc_stron := :NEW.ilosc_stron;
  88.             my.cena := :NEW.cena;
  89.         ELSE
  90.             my.id_komiksu := :OLD.id_komiksu;
  91.             my.tytul := :OLD.tytul;
  92.             my.nr_tomu := :OLD.nr_tomu;
  93.             my.id_autora := :OLD.id_autora;
  94.             my.data_wydania := :OLD.data_wydania;
  95.             my.ilosc_stron := :OLD.ilosc_stron;
  96.             my.cena := :OLD.cena;
  97.         END CASE;
  98.            
  99.         INSERT INTO Logi_komiksy VALUES my;
  100.     END;
  101.    
  102. /*    
  103. drop TRIGGER Komiks_audit;
  104. drop table Logi_komiksy;
  105. */
  106. /*
  107. CREATE TRIGGER aftter_kontakt_update AFTER UPDATE ON Kontakt
  108.     FOR EACH ROW
  109.     BEGIN
  110.     INSERT INTO Logi_komiksy
  111.     VALUES(log_seq.nextval, 'update', SYSDATE, :NEW.id_komiksu, :NEW.tytul, :NEW.nr_tomu, :NEW.id_autora, NEW.data_wydania,
  112.         :NEW.ilosc_stron, :NEW.cena);
  113.     END;
  114. */
  115. --drop TRIGGER aftter_kontakt_update;
  116.  
  117.  
  118. CREATE SEQUENCE log_seq START WITH 1
  119.     INCREMENT BY 1
  120.     MINVALUE 1
  121.     MAXVALUE 9999999999;
  122.  
  123. CREATE SEQUENCE kontakt_seq START WITH 1
  124.     INCREMENT BY 1
  125.     MINVALUE 1
  126.     MAXVALUE 9999;
  127.  
  128. CREATE SEQUENCE osoba_seq START WITH 1
  129.     INCREMENT BY 1
  130.     MINVALUE 1
  131.     MAXVALUE 9999;
  132.  
  133. CREATE SEQUENCE pracownik_seq START WITH 1
  134.     INCREMENT BY 1
  135.     MINVALUE 1
  136.     MAXVALUE 99;
  137.  
  138. CREATE SEQUENCE autor_seq START WITH 1
  139.     INCREMENT BY 1
  140.     MINVALUE 1
  141.     MAXVALUE 999;
  142.  
  143. CREATE SEQUENCE komiks_seq START WITH 1
  144.     INCREMENT BY 1
  145.     MINVALUE 1
  146.     MAXVALUE 999;
  147.  
  148. CREATE SEQUENCE sklep_seq START WITH 1
  149.     INCREMENT BY 1
  150.     MINVALUE 1
  151.     MAXVALUE 999;
  152.    
  153. CREATE SEQUENCE zamowienie_seq START WITH 1
  154.     INCREMENT BY 1
  155.     MINVALUE 1
  156.     MAXVALUE 999999;
  157.  
  158. /*
  159. DROP SEQUENCE log_seq;
  160. DROP SEQUENCE kontakt_seq;
  161. DROP SEQUENCE osoba_seq;
  162. DROP SEQUENCE sklep_seq;
  163. DROP SEQUENCE zamowienie_seq;
  164. DROP SEQUENCE autor_seq;
  165. DROP SEQUENCE pracownik_seq;
  166. DROP SEQUENCE komiks_seq;
  167.  
  168.  
  169. DROP TABLE Zamowienia;
  170. DROP TABLE Sklepy;
  171. DROP TABLE Komiksy;
  172. DROP TABLE Autorzy;
  173. DROP TABLE Pracownicy;
  174. DROP TABLE Dane_osobowe;
  175. DROP TABLE Kontakt;
  176. DROP TABLE Logi_komiksy;
  177. */
  178.  
  179.  
  180. INSERT INTO Kontakt VALUES(kontakt_seq.NEXTVAL, 'Rosja', 'Moskwa', 'Columbiadamm', '10/9', 'moskwa@gmail.com', 123456789);
  181. INSERT INTO Kontakt VALUES(kontakt_seq.NEXTVAL, 'Niemlcy', 'Berlin', 'Volkhonka', '12/19', 'berlin@gmail.com', 486486214);
  182. INSERT INTO Kontakt VALUES(kontakt_seq.NEXTVAL, 'Polska', 'Wroclaw', 'Grabiszynska', '2/22', 'wroclaw@gmail.com', 154788625);
  183. INSERT INTO Kontakt VALUES(kontakt_seq.NEXTVAL, 'Ukraina', 'Kijow', 'Malevycha', '14', 'kijow@gmail.com', 125478963);
  184. INSERT INTO Kontakt VALUES(kontakt_seq.NEXTVAL, 'Japonia', 'Tokyo', 'Takeshita', '15/8', 'tokyo@gmail.com', 589632147);
  185. INSERT INTO Kontakt VALUES(kontakt_seq.NEXTVAL, 'Ameryka', 'Waszyngton', 'Belmont', '1/1', 'waszyngton@gmail.com', 125478965);
  186. INSERT INTO Kontakt VALUES(kontakt_seq.NEXTVAL, 'Polska', 'Warszawa', 'Piekna', '6', 'warszawa@gmail.com', 123654782);
  187. INSERT INTO Kontakt VALUES(kontakt_seq.NEXTVAL, 'Polska', 'Poznan', 'Wspolna', '86/5', 'poznan@gmail.com', 456895632);
  188. INSERT INTO Kontakt VALUES(kontakt_seq.NEXTVAL, 'Polska', 'Lodz', 'Piotrkowska', '120/29', 'lodz@gmail.com', 154782556);
  189. INSERT INTO Kontakt VALUES(kontakt_seq.NEXTVAL, 'Polska', 'Krakow', 'Wielicka', '141/3', 'krakow@gmail.com', 123578496);
  190. INSERT INTO Kontakt VALUES(kontakt_seq.NEXTVAL, 'Polska', 'Gniezno', 'Wieka', '11/3', 'Gniezno@gmail.com', 541258963);
  191. INSERT INTO Kontakt VALUES(kontakt_seq.NEXTVAL, 'Polska', 'Bytom', 'Niepodleglosci', '10', NULL, 547865952);
  192. INSERT INTO Kontakt VALUES(kontakt_seq.NEXTVAL, 'Polska', 'Koszalin', 'Spojna', '155/5', NULL, 125433695);
  193. INSERT INTO Kontakt VALUES(kontakt_seq.NEXTVAL, 'Polska', 'Radom', 'Przyjazni', '13/6', 'radom@gmail.com', 125566332);
  194. INSERT INTO Kontakt VALUES(kontakt_seq.NEXTVAL, 'Polska', 'Sosnowiec', 'Krucza', '100', NULL, 554477888);
  195.  
  196. INSERT INTO DANE_OSOBOWE VALUES(osoba_seq.NEXTVAL, 'Pawel', 'Komorowski', 1);
  197. INSERT INTO DANE_OSOBOWE VALUES(osoba_seq.NEXTVAL, 'Paulina', 'Olewicz', 2);
  198. INSERT INTO DANE_OSOBOWE VALUES(osoba_seq.NEXTVAL, 'Jan', 'Kowalski', 3);
  199. INSERT INTO DANE_OSOBOWE VALUES(osoba_seq.NEXTVAL, 'Maria', 'Nowacki', 4);
  200. INSERT INTO DANE_OSOBOWE VALUES(osoba_seq.NEXTVAL, 'Ewelina', 'Wojcik', 5);
  201. INSERT INTO DANE_OSOBOWE VALUES(osoba_seq.NEXTVAL, 'Konrad', 'Klamra', 6);
  202. INSERT INTO DANE_OSOBOWE VALUES(osoba_seq.NEXTVAL, 'Jakub', 'Puch', 7);
  203. INSERT INTO DANE_OSOBOWE VALUES(osoba_seq.NEXTVAL, 'Weronika', 'Slon', 8);
  204. INSERT INTO DANE_OSOBOWE VALUES(osoba_seq.NEXTVAL, 'Grazyna', 'Plew', 9);
  205. INSERT INTO DANE_OSOBOWE VALUES(osoba_seq.NEXTVAL, 'Zdzislaw', 'Rochon', 10);
  206.  
  207. INSERT INTO Autorzy VALUES(autor_seq.NEXTVAL, 1, 'PWN');
  208. INSERT INTO Autorzy VALUES(autor_seq.NEXTVAL, 2, 'Marvel');
  209. INSERT INTO Autorzy VALUES(autor_seq.NEXTVAL, 3, 'JPF');
  210. INSERT INTO Autorzy VALUES(autor_seq.NEXTVAL, 4, 'COMICS');
  211. INSERT INTO Autorzy VALUES(autor_seq.NEXTVAL, 5, NULL);
  212.  
  213. INSERT INTO Pracownicy VALUES(pracownik_seq.NEXTVAL, 6, 'Wlasciciel', 5000);
  214. INSERT INTO Pracownicy VALUES(pracownik_seq.NEXTVAL, 7, 'Pracownik biurowy', 3000);
  215. INSERT INTO Pracownicy VALUES(pracownik_seq.NEXTVAL, 8, 'Magazynier', 3500);
  216. INSERT INTO Pracownicy VALUES(pracownik_seq.NEXTVAL, 9, 'Sprzatacz', 2500);
  217. INSERT INTO Pracownicy VALUES(pracownik_seq.NEXTVAL, 10, 'Tlumacz', 6000);
  218.  
  219. INSERT INTO Sklepy VALUES(sklep_seq.NEXTVAL, 'Empik', 11);
  220. INSERT INTO Sklepy VALUES(sklep_seq.NEXTVAL, 'KomiksLand', 12);
  221. INSERT INTO Sklepy VALUES(sklep_seq.NEXTVAL, 'Yatta', 13);
  222. INSERT INTO Sklepy VALUES(sklep_seq.NEXTVAL, 'Superkomiksy', 14);
  223. INSERT INTO Sklepy VALUES(sklep_seq.NEXTVAL, 'Mala Ksiegarnia', 15);
  224.  
  225. INSERT INTO Komiksy VALUES(komiks_seq.NEXTVAL, 'Spiderman', 1, 1, TO_DATE('1990/05/29','YYYY/MM/DD'), 50, 100);
  226. INSERT INTO Komiksy VALUES(komiks_seq.NEXTVAL, 'Spiderman', 2, 1, TO_DATE('1990/07/20','YYYY/MM/DD'), 45, 100);
  227. INSERT INTO Komiksy VALUES(komiks_seq.NEXTVAL, 'Przygody Yeti', 1, 2, TO_DATE('2000/10/02','YYYY/MM/DD'), 100, 50);
  228. INSERT INTO Komiksy VALUES(komiks_seq.NEXTVAL, 'Chinskie bajki', 1, 3, TO_DATE('2018/05/01','YYYY/MM/DD'), 20, 10);
  229. INSERT INTO Komiksy VALUES(komiks_seq.NEXTVAL, 'Magiczna podroz', 1, 4, TO_DATE('2017/06/04','YYYY/MM/DD'), 200, 60);
  230. INSERT INTO Komiksy VALUES(komiks_seq.NEXTVAL, 'Pokemony', 1, 5, TO_DATE('1999/01/23','YYYY/MM/DD'), 40, 80);
  231.  
  232. INSERT INTO Zamowienia VALUES(zamowienie_seq.NEXTVAL, 1, TO_DATE('2018/01/10', 'YYYY/MM/DD'), 1, 1, 20, 'S');
  233. INSERT INTO Zamowienia VALUES(zamowienie_seq.NEXTVAL, 2, TO_DATE('2018/01/10', 'YYYY/MM/DD'), 1, 2, 20, 'S');
  234. INSERT INTO Zamowienia VALUES(zamowienie_seq.NEXTVAL, 3, TO_DATE('2018/01/20', 'YYYY/MM/DD'), NULL, 3, 30, 'D');
  235. INSERT INTO Zamowienia VALUES(zamowienie_seq.NEXTVAL, 4, TO_DATE('2018/01/29', 'YYYY/MM/DD'), 3, 4, 10, 'S');
  236. INSERT INTO Zamowienia VALUES(zamowienie_seq.NEXTVAL, 5, TO_DATE('2018/02/02', 'YYYY/MM/DD'), 4, 5, 1, 'S');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement