-- Generated by Oracle SQL Developer Data Modeler 4.1.3.901 -- at: 2017-05-23 16:42:17 CEST -- site: Oracle Database 11g -- type: Oracle Database 11g prompt #---------------------# prompt #- Pomocne procedury -# prompt #---------------------# create or replace procedure SMAZ_VSECHNY_TABULKY AS -- pokud v logu bude uvedeno, ze nektery objekt nebyl zrusen, protoze na nej jiny jeste existujici objekt stavi, spust proceduru opakovane, dokud se nezrusi vse begin for iRec in (select distinct OBJECT_TYPE, OBJECT_NAME, 'drop '||OBJECT_TYPE||' "'||OBJECT_NAME||'"'|| case OBJECT_TYPE when 'TABLE' then ' cascade constraints purge' else ' ' end as PRIKAZ from USER_OBJECTS where OBJECT_NAME not in ('SMAZ_VSECHNY_TABULKY', 'VYPNI_CIZI_KLICE', 'ZAPNI_CIZI_KLICE', 'VYMAZ_DATA_VSECH_TABULEK') ) loop begin dbms_output.put_line('Prikaz: '||irec.prikaz); execute immediate iRec.prikaz; exception when others then dbms_output.put_line('NEPOVEDLO SE!'); end; end loop; end; / create or replace procedure VYPNI_CIZI_KLICE as begin for cur in (select CONSTRAINT_NAME, TABLE_NAME from USER_CONSTRAINTS where CONSTRAINT_TYPE = 'R' ) loop execute immediate 'alter table '||cur.TABLE_NAME||' modify constraint "'||cur.CONSTRAINT_NAME||'" DISABLE'; end loop; end VYPNI_CIZI_KLICE; / create or replace procedure ZAPNI_CIZI_KLICE as begin for cur in (select CONSTRAINT_NAME, TABLE_NAME from USER_CONSTRAINTS where CONSTRAINT_TYPE = 'R' ) loop execute immediate 'alter table '||cur.TABLE_NAME||' modify constraint "'||cur.CONSTRAINT_NAME||'" enable validate'; end loop; end ZAPNI_CIZI_KLICE; / create or replace procedure VYMAZ_DATA_VSECH_TABULEK is begin -- Vymazat data vsech tabulek VYPNI_CIZI_KLICE; for v_rec in (select distinct TABLE_NAME from USER_TABLES) loop execute immediate 'truncate table '||v_rec.TABLE_NAME||' drop storage'; end loop; ZAPNI_CIZI_KLICE; -- Nastavit vsechny sekvence od 1 for v_rec in (select distinct SEQUENCE_NAME from USER_SEQUENCES) loop execute immediate 'alter sequence '||v_rec.SEQUENCE_NAME||' restart start with 1'; end loop; end VYMAZ_DATA_VSECH_TABULEK; / prompt #------------------------# prompt #- Zrusit stare tabulky -# prompt #------------------------# exec SMAZ_VSECHNY_TABULKY; prompt #-------------------------# prompt #- Vytvorit nove tabulky -# prompt #-------------------------# CREATE TABLE ADRESA ( ADRESA_KEY INTEGER NOT NULL , STAT_KEY INTEGER NOT NULL , ULICE VARCHAR2 (100 CHAR) , CISLO VARCHAR2 (30 CHAR) NOT NULL , MESTO VARCHAR2 (100 CHAR) NOT NULL , PSC VARCHAR2 (30 CHAR) ) LOGGING ; COMMENT ON TABLE ADRESA IS 'Tabulka se seznamem adres, ktere se mohou pouzit pro pobocku nebo jako adresu zakaznika' ; COMMENT ON COLUMN ADRESA.ADRESA_KEY IS 'Primarni klic tabulky' ; COMMENT ON COLUMN ADRESA.STAT_KEY IS 'Cizi klic - odkaz na tabulku STAT - ve kterem state se adresa nachazi' ; COMMENT ON COLUMN ADRESA.ULICE IS 'Ulice (bez cisla)' ; COMMENT ON COLUMN ADRESA.CISLO IS 'Cislo popisne/orientacni/evidencni' ; COMMENT ON COLUMN ADRESA.MESTO IS 'Mesto, ve kterem se adresa nachazi' ; COMMENT ON COLUMN ADRESA.PSC IS 'Postovni smerovaci cislo' ; ALTER TABLE ADRESA ADD CONSTRAINT PK_ADRESA PRIMARY KEY ( ADRESA_KEY ) ; CREATE TABLE OBJEDNAVKA ( OBJEDNAVKA_KEY INTEGER NOT NULL , ZAKAZNIK_KEY INTEGER NOT NULL , ZAMESTNANEC_KEY INTEGER NOT NULL , DATUM DATE NOT NULL , CENA NUMBER (18,2) NOT NULL ) LOGGING ; COMMENT ON TABLE OBJEDNAVKA IS 'Tabulka se seznamem jednotlivych objednavek, kteri klienti provedli.' ; COMMENT ON COLUMN OBJEDNAVKA.OBJEDNAVKA_KEY IS 'Primarni klic tabulky' ; COMMENT ON COLUMN OBJEDNAVKA.ZAKAZNIK_KEY IS 'Cizi klic - odkaz na tabulku ZAKAZNIK - ktery zakaznik si objednava' ; COMMENT ON COLUMN OBJEDNAVKA.ZAMESTNANEC_KEY IS 'Cizi klic - odkaz na tabulku ZAMESTNANEC - ktery zamestnanec objednavku vyrizuje' ; COMMENT ON COLUMN OBJEDNAVKA.DATUM IS 'Datum zalozeni obejdnavky' ; COMMENT ON COLUMN OBJEDNAVKA.CENA IS 'Celkova cena, kterou ma zakaznik zaplatit' ; ALTER TABLE OBJEDNAVKA ADD CONSTRAINT PK_OBJEDNAVKA PRIMARY KEY ( OBJEDNAVKA_KEY ) ; CREATE TABLE PLANETA ( PLANETA_KEY INTEGER NOT NULL , SOUSTAVA_KEY INTEGER NOT NULL , NAZEV VARCHAR2 (100 CHAR) NOT NULL ) LOGGING ; COMMENT ON TABLE PLANETA IS 'Tabulka se seznamem znamych planet' ; COMMENT ON COLUMN PLANETA.PLANETA_KEY IS 'Primarni klic tabulky' ; COMMENT ON COLUMN PLANETA.SOUSTAVA_KEY IS 'Cizi klic - odkaz na tabulku SOUSTAVA - ve ktere soustave se planeta nachazi' ; COMMENT ON COLUMN PLANETA.NAZEV IS 'Nazev/jmeno planety' ; ALTER TABLE PLANETA ADD CONSTRAINT PK_PLANETA PRIMARY KEY ( PLANETA_KEY ) ; CREATE TABLE POBOCKA ( POBOCKA_KEY INTEGER NOT NULL , ADRESA_KEY INTEGER NOT NULL , NAZEV VARCHAR2 (100 CHAR) NOT NULL ) LOGGING ; COMMENT ON TABLE POBOCKA IS 'Seznam pobocek, ktere provozuje firma SFA' ; COMMENT ON COLUMN POBOCKA.POBOCKA_KEY IS 'Primarni klic tabulky' ; COMMENT ON COLUMN POBOCKA.ADRESA_KEY IS 'Cizi klic - odkaz na tabulku ADRESA - na jake adrese pobocka sidli' ; COMMENT ON COLUMN POBOCKA.NAZEV IS 'Pojmenovani pobocky pro snazsi orientaci' ; ALTER TABLE POBOCKA ADD CONSTRAINT PK_POBOCKA PRIMARY KEY ( POBOCKA_KEY ) ; CREATE TABLE POHRBENI ( SLUZBA_KEY INTEGER NOT NULL , GPS_X NUMBER NOT NULL , GPS_Y NUMBER NOT NULL ) LOGGING ; COMMENT ON TABLE POHRBENI IS 'Specializace tabulky SLUZBA - pouziva se pro pripady, kdy je sluzba typu POHRBENI' ; COMMENT ON COLUMN POHRBENI.SLUZBA_KEY IS 'Primarni klic tabulky - prebrano z nadrazene tabulky SLUZBA' ; COMMENT ON COLUMN POHRBENI.GPS_X IS 'X-ova GPS souradnice pro umisteni tela' ; COMMENT ON COLUMN POHRBENI.GPS_Y IS 'Y-ova GPS souradnice pro umisteni tela' ; ALTER TABLE POHRBENI ADD CONSTRAINT PK_POHRBENI PRIMARY KEY ( SLUZBA_KEY ) ; CREATE TABLE SLUZBA ( SLUZBA_KEY INTEGER NOT NULL , SLUZBA_TYP_KEY INTEGER NOT NULL , DATUM_REALIZACE DATE , POZNAMKA VARCHAR2 (4000 CHAR) ) LOGGING ; COMMENT ON TABLE SLUZBA IS 'Tabulka se seznamem sluzeb, ktere byly zakazniky objednane' ; COMMENT ON COLUMN SLUZBA.SLUZBA_KEY IS 'Primarni klic tabulky' ; COMMENT ON COLUMN SLUZBA.SLUZBA_TYP_KEY IS 'Cizi klic - odkaz na tabulku SLUZBA_TYP - jakeho typu je sluzba' ; COMMENT ON COLUMN SLUZBA.DATUM_REALIZACE IS 'Datum, kdy ma byt sluzba realizovana' ; COMMENT ON COLUMN SLUZBA.POZNAMKA IS 'Libovolne poznamky k objednane sluzbe' ; ALTER TABLE SLUZBA ADD CONSTRAINT PK_SLUZBA PRIMARY KEY ( SLUZBA_KEY ) ; CREATE TABLE SLUZBA_OBJEDNAVKA_REL ( SLUZBA_KEY INTEGER NOT NULL , OBJEDNAVKA_KEY INTEGER NOT NULL ) LOGGING ; COMMENT ON TABLE SLUZBA_OBJEDNAVKA_REL IS 'Realizace M:N vazby mezi objednavkou klienta a sluzbou, kterou objednava' ; COMMENT ON COLUMN SLUZBA_OBJEDNAVKA_REL.SLUZBA_KEY IS 'Cizi klic - odkaz na tabulku SLUZBA - jaka sluzba je objednana' ; COMMENT ON COLUMN SLUZBA_OBJEDNAVKA_REL.OBJEDNAVKA_KEY IS 'Cizi klic - odkaz na tabulku OBJEDNAVKA - v jake objednavce sluzba je' ; ALTER TABLE SLUZBA_OBJEDNAVKA_REL ADD CONSTRAINT PK_SLUZBA_OBJEDNAVKA_REL PRIMARY KEY ( SLUZBA_KEY, OBJEDNAVKA_KEY ) ; CREATE TABLE SLUZBA_TYP ( SLUZBA_TYP_KEY INTEGER NOT NULL , ID VARCHAR2 (30 CHAR) NOT NULL , POPIS VARCHAR2 (100 CHAR) NOT NULL ) LOGGING ; COMMENT ON TABLE SLUZBA_TYP IS 'Tabulka se seznamem typu sluzeb, ktere si zakaznik muze objednat. Aktualne firma nabizi Kremaci, Pohrbeni a Vesmirnou cestu. Do budoucna se planuje rozsireni nabidky.' ; COMMENT ON COLUMN SLUZBA_TYP.SLUZBA_TYP_KEY IS 'Primarni klic tabulky' ; COMMENT ON COLUMN SLUZBA_TYP.ID IS 'Identifikator typu sluzby (zkratka)' ; COMMENT ON COLUMN SLUZBA_TYP.POPIS IS 'Popis typu sluzby' ; ALTER TABLE SLUZBA_TYP ADD CONSTRAINT PK_SLUZBA_TYP PRIMARY KEY ( SLUZBA_TYP_KEY ) ; CREATE TABLE SOUSTAVA ( SOUSTAVA_KEY INTEGER NOT NULL , NAZEV VARCHAR2 (100 CHAR) NOT NULL ) LOGGING ; COMMENT ON TABLE SOUSTAVA IS 'Tabulka se seznamem znamych slunecnich soustav' ; COMMENT ON COLUMN SOUSTAVA.SOUSTAVA_KEY IS 'Primarni klic tabulky' ; COMMENT ON COLUMN SOUSTAVA.NAZEV IS 'Nazev/jmeno slunecni soustavy' ; ALTER TABLE SOUSTAVA ADD CONSTRAINT PK_SOUSTAVA PRIMARY KEY ( SOUSTAVA_KEY ) ; CREATE TABLE STAT ( STAT_KEY INTEGER NOT NULL , NAZEV VARCHAR2 (100 CHAR) NOT NULL ) LOGGING ; COMMENT ON TABLE STAT IS 'Tabulka se seznamem vsech statu na svete' ; COMMENT ON COLUMN STAT.STAT_KEY IS 'Primarni klic tabulky' ; COMMENT ON COLUMN STAT.NAZEV IS 'Nazev statu' ; ALTER TABLE STAT ADD CONSTRAINT PK_STAT PRIMARY KEY ( STAT_KEY ) ; CREATE TABLE VESMIRNA_CESTA ( SLUZBA_KEY INTEGER NOT NULL , POCET_LET INTEGER ) LOGGING ; COMMENT ON TABLE VESMIRNA_CESTA IS 'Specializace tabulky SLUZBA - pouziva se pro pripady, kdy je sluzba typu VESMIRNA CESTA' ; COMMENT ON COLUMN VESMIRNA_CESTA.SLUZBA_KEY IS 'Primarni klic tabulky - prebrano z nadrazene tabulky SLUZBA' ; COMMENT ON COLUMN VESMIRNA_CESTA.POCET_LET IS 'Pocet let, po ktere ma vesmirna cesta trvat' ; ALTER TABLE VESMIRNA_CESTA ADD CONSTRAINT PK_VESMIRNA_CESTA PRIMARY KEY ( SLUZBA_KEY ) ; CREATE TABLE VESMIRNA_CESTA_PLANETA_REL ( SLUZBA_KEY INTEGER NOT NULL , PLANETA_KEY INTEGER NOT NULL ) LOGGING ; COMMENT ON TABLE VESMIRNA_CESTA_PLANETA_REL IS 'Realizace M:N vazby mezi tabulkou Planeta a Vesmirna_cesta - kolem kterych planet cesta bude' ; COMMENT ON COLUMN VESMIRNA_CESTA_PLANETA_REL.SLUZBA_KEY IS 'Primarni klic tabulky (slozeny) + cizi klic - odkaz na tabulku SLUZBA' ; COMMENT ON COLUMN VESMIRNA_CESTA_PLANETA_REL.PLANETA_KEY IS 'Primarni klic tabulky (slozeny) + cizi klic - odkaz na tabulku PLANETA' ; ALTER TABLE VESMIRNA_CESTA_PLANETA_REL ADD CONSTRAINT PK_VESMIRNA_CESTA_PLANETA_REL PRIMARY KEY ( SLUZBA_KEY, PLANETA_KEY ) ; CREATE TABLE ZAKAZNIK ( ZAKAZNIK_KEY INTEGER NOT NULL , ADRESA_KEY INTEGER NOT NULL , JMENO VARCHAR2 (100 CHAR) NOT NULL , TELEFON VARCHAR2 (100 CHAR) , EMAIL VARCHAR2 (100 CHAR) , POZNAMKA VARCHAR2 (4000 CHAR) ) LOGGING ; COMMENT ON TABLE ZAKAZNIK IS 'Tabulka se seznamem zakazniku firmy SFA' ; COMMENT ON COLUMN ZAKAZNIK.ZAKAZNIK_KEY IS 'Primarni klic tabulky' ; COMMENT ON COLUMN ZAKAZNIK.ADRESA_KEY IS 'Cizi klic - odkaz na tabulku ADRESA - kde zakaznik bydli' ; COMMENT ON COLUMN ZAKAZNIK.JMENO IS 'Jmeno a prijmeni zakaznika' ; COMMENT ON COLUMN ZAKAZNIK.TELEFON IS 'Telefon na zakaznika' ; COMMENT ON COLUMN ZAKAZNIK.EMAIL IS 'E-mail na zakaznika' ; COMMENT ON COLUMN ZAKAZNIK.POZNAMKA IS 'Libovolny komentar k zakaznikovi' ; ALTER TABLE ZAKAZNIK ADD CONSTRAINT PK_ZAKAZNIK PRIMARY KEY ( ZAKAZNIK_KEY ) ; CREATE TABLE ZAMESTNANEC ( ZAMESTNANEC_KEY INTEGER NOT NULL , POBOCKA_KEY INTEGER NOT NULL , JMENO VARCHAR2 (100 CHAR) NOT NULL , OSOBNI_CISLO VARCHAR2 (30 CHAR) NOT NULL ) LOGGING ; COMMENT ON TABLE ZAMESTNANEC IS 'Tabulka se seznamem vsech zamestnancu firmy SFA' ; COMMENT ON COLUMN ZAMESTNANEC.ZAMESTNANEC_KEY IS 'Primarni klic tabulky' ; COMMENT ON COLUMN ZAMESTNANEC.POBOCKA_KEY IS 'Cizi klic - odkaz na tabulku POBOCKA - ve ktere pobocce zamestnanec pracuje' ; COMMENT ON COLUMN ZAMESTNANEC.JMENO IS 'Jmeno a prijmeni zamestnance' ; COMMENT ON COLUMN ZAMESTNANEC.OSOBNI_CISLO IS 'Interni osobni cislo zamestnance' ; ALTER TABLE ZAMESTNANEC ADD CONSTRAINT PK_ZAMESTNANEC PRIMARY KEY ( ZAMESTNANEC_KEY ) ; ALTER TABLE ZAMESTNANEC ADD CONSTRAINT UX_ZAMESTNANEC_OSOBNI_CISLO UNIQUE ( OSOBNI_CISLO ) ; ALTER TABLE ADRESA ADD CONSTRAINT FK_ADRESA_STAT FOREIGN KEY ( STAT_KEY ) REFERENCES STAT ( STAT_KEY ) NOT DEFERRABLE ; ALTER TABLE OBJEDNAVKA ADD CONSTRAINT FK_OBJEDNAVKA_ZAKAZNIK FOREIGN KEY ( ZAKAZNIK_KEY ) REFERENCES ZAKAZNIK ( ZAKAZNIK_KEY ) NOT DEFERRABLE ; ALTER TABLE OBJEDNAVKA ADD CONSTRAINT FK_OBJEDNAVKA_ZAMESTNANEC FOREIGN KEY ( ZAMESTNANEC_KEY ) REFERENCES ZAMESTNANEC ( ZAMESTNANEC_KEY ) NOT DEFERRABLE ; ALTER TABLE PLANETA ADD CONSTRAINT FK_PLANETA_SOUSTAVA FOREIGN KEY ( SOUSTAVA_KEY ) REFERENCES SOUSTAVA ( SOUSTAVA_KEY ) NOT DEFERRABLE ; ALTER TABLE POBOCKA ADD CONSTRAINT FK_POBOCKA_ADRESA FOREIGN KEY ( ADRESA_KEY ) REFERENCES ADRESA ( ADRESA_KEY ) NOT DEFERRABLE ; ALTER TABLE POHRBENI ADD CONSTRAINT FK_POHRBENI_SLUZBA FOREIGN KEY ( SLUZBA_KEY ) REFERENCES SLUZBA ( SLUZBA_KEY ) NOT DEFERRABLE ; ALTER TABLE SLUZBA_OBJEDNAVKA_REL ADD CONSTRAINT FK_SLUZBAOBJREL_OBJEDNAVKA FOREIGN KEY ( OBJEDNAVKA_KEY ) REFERENCES OBJEDNAVKA ( OBJEDNAVKA_KEY ) NOT DEFERRABLE ; ALTER TABLE SLUZBA_OBJEDNAVKA_REL ADD CONSTRAINT FK_SLUZBAOBJREL_SLUZBA FOREIGN KEY ( SLUZBA_KEY ) REFERENCES SLUZBA ( SLUZBA_KEY ) NOT DEFERRABLE ; ALTER TABLE SLUZBA ADD CONSTRAINT FK_SLUZBA_SLUZBA_TYP FOREIGN KEY ( SLUZBA_TYP_KEY ) REFERENCES SLUZBA_TYP ( SLUZBA_TYP_KEY ) NOT DEFERRABLE ; ALTER TABLE VESMIRNA_CESTA_PLANETA_REL ADD CONSTRAINT FK_VESMCESTAPLANETAREL_CESTA FOREIGN KEY ( SLUZBA_KEY ) REFERENCES VESMIRNA_CESTA ( SLUZBA_KEY ) NOT DEFERRABLE ; ALTER TABLE VESMIRNA_CESTA_PLANETA_REL ADD CONSTRAINT FK_VESMCESTAPLANETAREL_PLANETA FOREIGN KEY ( PLANETA_KEY ) REFERENCES PLANETA ( PLANETA_KEY ) NOT DEFERRABLE ; ALTER TABLE VESMIRNA_CESTA ADD CONSTRAINT FK_VESMIRNA_CESTA_SLUZBA FOREIGN KEY ( SLUZBA_KEY ) REFERENCES SLUZBA ( SLUZBA_KEY ) NOT DEFERRABLE ; ALTER TABLE ZAKAZNIK ADD CONSTRAINT FK_ZAKAZNIK_ADRESA FOREIGN KEY ( ADRESA_KEY ) REFERENCES ADRESA ( ADRESA_KEY ) NOT DEFERRABLE ; ALTER TABLE ZAMESTNANEC ADD CONSTRAINT FK_ZAMESTNANEC_POBOCKA FOREIGN KEY ( POBOCKA_KEY ) REFERENCES POBOCKA ( POBOCKA_KEY ) NOT DEFERRABLE ; CREATE SEQUENCE SEQ_ADRESA_KEY START WITH 1 NOCACHE ORDER ; CREATE SEQUENCE SEQ_OBJEDNAVKA_KEY START WITH 1 NOCACHE ORDER ; CREATE SEQUENCE SEQ_PLANETA_KEY START WITH 1 NOCACHE ORDER ; CREATE SEQUENCE SEQ_POBOCKA_KEY START WITH 1 NOCACHE ORDER ; CREATE SEQUENCE SEQ_SLUZBA_KEY START WITH 1 NOCACHE ORDER ; CREATE SEQUENCE SEQ_SLUZBA_TYP_KEY START WITH 1 NOCACHE ORDER ; CREATE SEQUENCE SEQ_SOUSTAVA_KEY START WITH 1 NOCACHE ORDER ; CREATE SEQUENCE SEQ_STAT_KEY START WITH 1 NOCACHE ORDER ; CREATE SEQUENCE SEQ_ZAKAZNIK_KEY START WITH 1 NOCACHE ORDER ; CREATE SEQUENCE SEQ_ZAMESTNANEC_KEY START WITH 1 NOCACHE ORDER ; prompt #----------# prompt #- HOTOVO -# prompt #----------# -- Oracle SQL Developer Data Modeler Summary Report: -- -- CREATE TABLE 13 -- CREATE INDEX 0 -- ALTER TABLE 27 -- CREATE VIEW 0 -- ALTER VIEW 0 -- CREATE PACKAGE 0 -- CREATE PACKAGE BODY 0 -- CREATE PROCEDURE 4 -- CREATE FUNCTION 0 -- CREATE TRIGGER 0 -- ALTER TRIGGER 0 -- CREATE COLLECTION TYPE 0 -- CREATE STRUCTURED TYPE 0 -- CREATE STRUCTURED TYPE BODY 0 -- CREATE CLUSTER 0 -- CREATE CONTEXT 0 -- CREATE DATABASE 0 -- CREATE DIMENSION 0 -- CREATE DIRECTORY 0 -- CREATE DISK GROUP 0 -- CREATE ROLE 0 -- CREATE ROLLBACK SEGMENT 0 -- CREATE SEQUENCE 10 -- CREATE MATERIALIZED VIEW 0 -- CREATE SYNONYM 0 -- CREATE TABLESPACE 0 -- CREATE USER 0 -- -- DROP TABLESPACE 0 -- DROP DATABASE 0 -- -- REDACTION POLICY 0 -- -- ORDS DROP SCHEMA 0 -- ORDS ENABLE SCHEMA 0 -- ORDS ENABLE OBJECT 0 -- -- ERRORS 0 -- WARNINGS 0