Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilKristina Horáčková
1
Databázové systémy 2 Cvičení č. 5 Fakulta elektrotechniky a informatiky Univerzita Pardubice
2
Obsah cvičení Zadání požadavků na semestrální práci Kontrola fyzického modelu databáze pro e-shop Stručné opakování cvičení 4 Vytváření rolí Objektová oprávnění Transakce Databázové systémy 2 – cvičení 5 2
3
Vytvoření a přidělení rolí CREATE ROLE sklad; Příklad vytvoření role. Pro tento příkaz je nutno mít právo CREATE ROLE, které může přidělit správce. GRANT SELECT, INSERT, UPDATE, DELETE ON prijem TO sklad; GRANT SELECT, INSERT, UPDATE, DELETE ON vydej TO sklad; Přidělení přístupových práv na tabulky PRIJEM a VYDEJ roli SKLAD. GRANT sklad TO uživ1, uživ2, uživ3...; Přidělení role SKLAD uživatelům. SET ROLE sklad; Aktivování role SKLAD a zrušení ostatních přístupových práv. Tento příkaz je možno použít např. při spuštění aplikace. Databázové systémy 2 – cvičení 5 3
4
Přidělení práv všem uživatelům TO PUBLIC.. tj. všem uživatelům GRANT SELECT ON knihy TO PUBLIC; Přidělení přístupových práv na čtení tabulky knihy všem uživatelům. Databázové systémy 2 – cvičení 5 4
5
Transakce - potvrzení Potvrzení transakce (committing) znamená, že změny provedené transakcí se stávají trvalými. Explicitní potvrzení – příkazem COMMIT Implicitní potvrzení – po normálním ukončení nějaké aplikace nebo provedením DDL operace Jakékoli příkazy DDL (např. create table či alter index) způsobí tedy ukončení aktivní transakce a implicitní vytvoření nové transakce. Změny provedené příkazy obsaženými v transakci jsou viditelné pro ostatní uživatele až od okamžiku potvrzení transakce. Databázové systémy 2 – cvičení 5 5
6
Příkazy pro řízení transakcí COMMIT – potvrzení transakce, zafixování stavu. ROLLBACK – odvolání celé transakce, návrat do původního/zafixovaného stavu, odvolat transakci je možné pouze uživatelem, který operaci provedl a jen do okamžiku jejich potvrzení příkazem COMMIT (takto můžeme například obnovit záznamy, které jsme omylem vymazali, protože jsme například zapomněli na podmínku v klauzuli WHERE) Databázové systémy 2 – cvičení 5 6
7
Příkazy pro řízení transakcí Použití návratových bodů: SAVEPOINT - slouží pro označení místa (například po provedení některých operací), kam bychom se v případě potřeby mohli navrátit, slouží pro rozdělení velké transakce na menší části ROLLBACK TO – odvolání transakce, návrat do bodu návratu Příklad: SAVEPOINT plosne_zvyseni_mzdy; UPDATE pracovnici SET mzda=mzda*1.04; SAVEPOINT navyseni_manazeri; UPDATE pracovnici SET mzda=mzda+1000 WHERE pozice LIKE ‘manažer’; ROLLBACK TO navyseni_manazeri; Databázové systémy 2 – cvičení 5 7
8
Cvičení 5 – zadání 1/5 studenti pracují ve svém schématu s tabulkou vozidla. Tabulka se skládá ze sloupců id typu integer a nazev typu varchar2(10). tabulka bude obsahovat data: kolo, babeta, kolbezka, skutr. Úkoly se plní po dvojicích, např. st12345 a st54321. Pro plnění úloh se ve dvojici dohodněte, kdo bude plnit úkoly pro st54321 a kdo pro st12345. uživatel st54321 vytvoří tabulku vozidla a naplní ji třemi řádky insert into vozidla (id,nazev) values (24, 'kolo'); insert into vozidla (id,nazev) values (25, 'babeta'); insert into vozidla (id,nazev) values (26, 'kolobezka'); uživatel st54321 přidělí uživateli st12345 práva (select,insert,update,delete) nad svojí tabulkou vozidla uživatel st12345 vloží do tabulky st54321.vozidla jeden řádek a nepotvrdí transakci insert into st54321.vozidla (id,nazev) values (27, 'skutr'); uživatel st12345 vypíše obsah tabulky uživatel st54321 vypíše obsah tabulky – oba diskutují vzniklý rozdíl uživatel st12345 provede commit a oba opět zobrazí obsah tabulky – diskuse výsledku Databázové systémy 2 – cvičení 5 8
9
Cvičení 5 – zadání 2/5 uživatel st54321 přejmenuje skutr na cross a neprovede potvrzení transakce příkazem commit oba uživatelé se podívají, jaké řádky v tabulce vozidla vidí uživatel st54321 vytvoří novou tabulku vozidla2 se shodnými sloupci oba uživatelé se podívají, jaké řádky v tabulce vozidla vidí a zdůvodní, proč je výsledek shodný uživatel st54321 vloží do tabulky vozidla2 2 řádky insert into vozidla2 (id,nazev) values (34, 'vlak'); insert into vozidla2 (id,nazev) values (35, 'autobus'); oba uživatelé se podívají, jaké řádky v tabulce vozidla2 vidí a zdůvodní výsledek uživatel st54321 nastaví savepoint zachrana a provede následující operace select * from vozidla; update vozidla set nazev = 'cross2' where id=27; update vozidla set nazev = 'cross2' where nazev='kolo'; update vozidla set nazev = 'nafta' where id=25; update vozidla set nazev = 'nafta' where nazev='kolobezka'; select * from vozidla; Databázové systémy 2 – cvičení 5 9
10
Cvičení 5 – zadání 3/5 uživatel st54321 provede odrolování transakce k savepointu zachrana uživatel st54321 zkontroluje obsah tabulky vozidla uživatel st54321 provede dané operace znovu, tentokrát včetně potvrzení transakce savepoint zachrana; select * from vozidla; update vozidla set nazev = 'cross2' where id=27; update vozidla set nazev = 'cross2' where nazev='kolo'; update vozidla set nazev = 'nafta' where id=25; update vozidla set nazev = 'nafta' where nazev='kolobezka'; Commit; Uživatel st54321 zkontroluje obsah tabulky vozidla a provede rollback k savepointu zachrana a znovu zkontroluje obsah tabulky vozidla oba diskutují zjištěný výsledek uživatel st54321 odebere práva nad tabulkou vozidla uživateli st12345 oba uživatelé provedou: update vozidla set nazev = 'olej' where id=27; Databázové systémy 2 – cvičení 5 10
11
Cvičení 5 – zadání 4/5 oba uživatelé se podívají na obsah tabulky vozidla uživatel st54321 odstraní obě cvičné tabulky uživatel st54321 vytvoří tabulku vozidla a naplní ji třemi řádky insert into vozidla (id,nazev) values (24, 'kolo'); insert into vozidla (id,nazev) values (25, 'babeta'); insert into vozidla (id,nazev) values (26, 'kolobezka'); uživatel st54321 přidělí uživateli st12345 práva select,insert,update,delete nad svojí tabulkou vozidla oba uživatelé si zobrazí obsah tabulky vozidla uživatel st54321 provede následující příkazy a nepotvrdí transakci select id from vozidla where nazev='kolobezka'; update vozidla set id=id+10 where nazev='kolobezka'; select id from vozidla where nazev='kolobezka'; uživatel st12345 provede následující select id from st54321.vozidla where nazev='kolobezka'; update st54321.vozidla set id=id-20 where nazev='kolobezka'; oba uživatelé diskutují výsledek Databázové systémy 2 – cvičení 5 11
12
Cvičení 5 – zadání 5/5 uživatel st54321 odroluje transakci oba se podívají na obsah tabulky vozidla a diskutují výsledek uživatel st12345 provede následující select id from st54321.vozidla where nazev='kolobezka'; update st54321.vozidla set id=id-20 where nazev='kolobezka'; select id from st54321.vozidla where nazev='kolobezka'; oba shrnou získané poznatky odstranění cvičných tabulek Databázové systémy 2 – cvičení 5 12
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.