Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Databázové systémy 2 Cvičení č. 8 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice.

Podobné prezentace


Prezentace na téma: "Databázové systémy 2 Cvičení č. 8 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice."— Transkript prezentace:

1 Databázové systémy 2 Cvičení č. 8 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice

2 Obsah cvičení -Triggery nad tabulkami. -Triggery nad pohledy („Insted of triggery“). -Sekvence. -Regulární výrazy. -Výjimky. Databázové systémy 2 – cvičení 8 2

3 Sekvence • Sekvence podle pravidel dokáže generovat požadovaná čísla. • Sekvence generují jedinečná čísla v rámci všech transakcí v databázi. • Výhodné využití pro umělé primární klíče. • Často se ve užívají v kombinaci s triggerem. CREATE SEQUENCE [schema.]name [START WITH integer] [INCREMENT BY integer] [MAXVALUE integer|NOMAXVALUE] [MINVALUE integer|NOMINVALUE] [CYCLE|NOCYCLE] [CACHE integer|NOCACHE] [ORDER|NOORDER] Databázové systémy 2 – cvičení 8 3

4 Sekvence • Příklad vytvoření sekvence: CREATE SEQUENCE CV8_MY_ID_SEQ START WITH 1 INCREMENT BY 1; • Příklad použití sekvence v triggeru: create or replace TRIGGER GET_NEW_ID BEFORE INSERT ON MY_TABLE FOR EACH ROW BEGIN SELECT cv8_lide_seq.NEXTVAL INTO :new.id FROM dual; END; Databázové systémy 2 – cvičení 8 4

5 Vlastnosti triggerů VlastnostChování INSERTINGTRUE, jestliže se jedná o příkaz INSERT, jinak FALSE UPDATINGTRUE, jestliže se jedná o příkaz UPDATE, jinak FALSE DELETINGTRUE, jestliže se jedná o příkaz DELETE, jinak FALSE Databázové systémy 2 – cvičení 8 5 • Uvnitř triggeru můžeme používat tři logické funkce (INSERTING, UPDATING, DELETING), které umožní identifikovat, který příkaz inicioval spuštění triggeru.

6 • Příklad využití: Databázové systémy 2 – cvičení 8 6 Vlastnosti triggerů

7 Regulární výrazy • Regulární výraz je řetězec popisující celou množinu řetězců. • Využití:  Vyhledávaní textu (testovaní shody, zjištění pozice).  Manipulace s textem (záměna textu, extrakce). • Regularní výrazy v Oracle DB: • Funkce: • REGEXP_LIKE • REGEXP_REPLACE • REGEXP_SUBSTR • REGEXP_COUNT • REGEXP_INSTR • Význam jednotlivých funkcí naleznete na: • Databázové systémy 2 – cvičení 8 7

8 Regulární výrazy • Využití v rámci databáze: – Vyhledávaní podle vzoru. SELECT first_name, last_name FROM employees WHERE REGEXP_LIKE (first_name, '^Ste(v|ph)en$'); – Formátování výstupu. SELECT names "names", REGEXP_REPLACE(names, '^(\S+)\s(\S+)\s(\S+)$', '\3, \1 \2') AS "names after regexp" FROM famous_people; -Check constraint. CONSTRAINT c_contacts_pnf CHECK (REGEXP_LIKE (p_number, '^\(\d{3}\) \d{3}-\d{4}$')) Databázové systémy 2 – cvičení 8 8

9 Regulární výrazy • REGEXP_LIKE – Obdobná funkce jako LIKE. REGEXP_LIKE místo jednoduchého vzoru (%hledany_text%) využívá vyhledávání na základě vzoru zapsaného jako regulární výraz. – Syntaxe: • REGEXP_LIKE(zdrojovy_text, vzor) – zdrojovy_text - text, ve kterém hledáme – vzor – regulární výraz, který se aplikuje na zdrojový text. – Tabulka zástupných znaků pro regulární výraz: • Databázové systémy 2 – cvičení 8 9

10 Regulární výrazy • Příklady práce s regulárními výrazy v Oracle DB: – – – Databázové systémy 2 – cvičení 8 10

11 Příklady • Vytvořte všechny tabulky z přiloženého skriptu. (Skript naleznete na serveru projektu LEARN). • Vytvořte sekvenci CV8_LIDE_SEQ. • Vytvořenou sekvenci využijte v triggeru nad tabulkou CV8_LIDE. Trigger se bude jmenovat CV8_LIDE_ID a jeho úkolem bude automaticky doplňovat ID u nově vkládaných záznamů. Databázové systémy 2 – cvičení 8 11

12 • Dále nad tabulkou vytvořte trigger CV8_LIDE_SMAZAT. Trigger zajistí zkopírování mazaného záznamu do tabulky CV8_LIDE_SMAZANI. Záznam nezapomeňte opatřit datem, kdy ke smazaní daného záznamu došlo (atribut datum_smazani). Databázové systémy 2 – cvičení 8 12 Příklady

13 • Stále nad tabulkou CV8_LIDE vytvořte trigger CV8_LIDE_VALIDACE. Trigger bude aktivován při vkládání a aktualizaci záznamů. Trigger zajistí: • V případě, že jméno a příjmení nebudou zadány s velkým prvním písmenem, trigger provede opravu. • Do tabulky je možné vložit jen osoby, starší 15 let. Pokud se někdo pokusí vložit osobu mladší 15 let, trigger musí vyvolat výjimku s textem: „Osoba je mladší 15 let“. • Trigger vyvolá výjimku s textem „Měnit ID v tabulce cv8_lide je zakázané! “ v případě, že se někdo pokusí změnit hodnotu ve sloupci ID. Databázové systémy 2 – cvičení 8 13 Příklady

14 • Pokračování CV8_LIDE_VALIDACE: • Trigger bude obsluhovat atribut validni, který bude udávat, zda daná osoba z tabulky má korektně vyplněny všechny informace. Za korektní vyplnění se považuje: – Délka telefonního čísla je nejméně 9 znaků. – Adresa má nejméně 10 znaků. – obsahuje validní ovou adresu. (využijte regulární výraz) – Rodné číslo je ve správném formátu. ( platne-ic-a-rodne-cislo) platne-ic-a-rodne-cislo • V případě, že údaje budou korektně vyplněny, nastaví trigger atribut validní na 1, jinak 0. Databázové systémy 2 – cvičení 8 14 Příklady

15 • Nad tabulkou CV8_ZAJMY vytvořte trigger CV8_ZAJMY_SMAZAT. • Trigger dovolí vymazat záznam z tabulky CV8_ZAJMY jen v případě, že daný zájem sdílí maximálně dva lidé. V takovém případě trigger zajistí smazaní záznamů i z tabulky CV8_LIDE_ZAJMY. • Jinak vyvolá výjimku s textem „Daný zájem sdílí více než 2 osoby “. V tomto případě mazaní z tabulek neproběhne. Databázové systémy 2 – cvičení 8 15 Příklady

16 • Dále nad tabulkou CV8_ZAJMY vytvořte trigger CV8_ZAJMY_DML, který se bude zapisovat informace o DML operacích nad tabulkou CV8_ZAJMY. Každá DML operace bude zaznamenána do tabulky CV8_LOG_TABLE. Evidujte následující informace: Databázové systémy 2 – cvičení 8 16 Příklady

17 • Nad tabulkou CV8_ZAJMY vytvořte trigger CV8_ZAJMY_UPDATE, který zajistí, že změna ID v tabulce CV8_ZAJMY se promítne i do tabulky CV8_LIDE_ZAJMY. Databázové systémy 2 – cvičení 8 17 Příklady

18 • Nad tabulkou CV8_LIDE_ZAJMY vytvořte trigger CV8_LIDE_ZAJMY_DML s naprosto stejnou logikou jako CV8_ZAJMY_DML. Databázové systémy 2 – cvičení 8 18

19 • Vytvořte pohled CV8_LIDE_ZAJMY_VIEW(ID_LID NUMBER, JMENO VARCHAR2, PRIJMENI VARCHAR2, ID_ZAJ NUMBER, ZAJEM VARCHAR2). Pohled by měl poskytovat následující výstup: Databázové systémy 2 – cvičení 8 19 Příklady

20 • Nad pohledem CV8_LIDE_ZAJMY_VIEW vytvořte trigger CV8_LIDE_ZAJMY_VIEW_TRG, který umožní měnit atributy jmeno, prijmeni a zajem. Ke změně hodnot atributů musí dojít v samotných zdrojových tabulkách. Databázové systémy 2 – cvičení 8 20 Příklady

21 Cvičení 8 – kontrola Všechny databázové objekty z tohoto cvičení vytvořte se svém schématu. Pro splnění cvičení je nutné, aby všechny objekty byly správně vytvořeny a funkční do půlnoci dne před následujícím cvičením. Databázové systémy 2 – cvičení 8 21


Stáhnout ppt "Databázové systémy 2 Cvičení č. 8 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice."

Podobné prezentace


Reklamy Google