400 7. SYSTEMOWE ASPEKTY JĘZYKA SQL

d)    Usuwanie z przykładu 5.29.

e)    Aktualizacja z przykładu 5.31.

f)    Więzy krotkowe z rys. 6.4.

g)    Ascrcja z przykładu 6.10.

^Ćwiczenie 7.4.2. Utworzyć diagram grant po wykonaniu czynności 4, 5 i 6 ciągu, który został przedstawiony na rys. 7.19. Należy założyć, że właścicielem relacji z prawami p jest użytkownik A.

Numer

czynności

Kio

Czynność

1

A

GRANT p TO B WITH GRANT OPTION

2

A

GRANT p TO C

3

B

GRANT p TO D WITH GRANT OPTION

4

D

GRANT p TO B, C, E WITH GRANT OPTION

5

B

REVOKE p FROM D CASCADE

6

A

REVOKE p FROM C CASCADE

RYSUNEK 7.19

Ciąg czynności do ćwiczenia 7.4.2

Ćwiczenie 7.4.3. Utworzyć diagram grant po wykonaniu czynności 5 i 6 ciągu, który został przedstawiony na ry s. 7.20. Należy założyć, że właścicielem relacji z prawami p jest użytkownika.

Numer

czynności

Kio

Czynność

1

A

GRANT p TO B, E WITH GRANT OPTION

2

B

GRANT p TO C WITH GRANT OPTION

3

C

GRANT p TO D WITH GRANT OPTION

4

E

GRANT p TO C

5

E

GRANT p 70 D WITH GRANT OPTION

6

A

REVOKE GRANT OPTION FOR p FROM B CASCADE

RYSUNEK 7.20

Ciąg czynności do ćw iczenia 7.4.3

IĆwiczenic 7.4.4. Należy' utworzyć diagram grant powstały w wyniku przetworzenia następującego ciągu instrukcji, przy założeniu, ze właścicielem relacji z prawami jest użytkownik A.

Nr czynności

Kto

Czynność

1

A

GRANTp TO B WITH GRANT OPTION

2

B

GRANT pTO B WITH GRANT OPTION

3

A

REYOKE p FOR FROM B CASCADE

7.5. Podsumowanie

♦    Osadzanie SQL (embedded SQL): Zamiast korzystać z interfejsu zapytań do uruchamiania zapytań i wprowadzania zmian w języku SQL, często jest efektywniej napisać program w standardowym języku programowania i wstawdć do niego instrukcje SQL.

♦    Niedopasowanie falowe (impedance mismalch): Model danych $QL rożni się zasadniczo od modeli danych w zwykłych językach programowania. Dlatego do komunikacji między instrukcjami SQL a programem zewnętrznym trzeba korzystać z tzw. zmiennych dzielonych, w których można przekazywać wartości składowych krotek.

♦    Kursory (cursors): Kursor jest zmienną SQL, która wskazuje krotkę w relacji. Kursory są dodatkowym mechanizmem SQL, który umożliwia połączenie języka podstawowego i SQL. a stosuje się je w połączeniu ze zmiennymi dzielonymi, do których zapisuje się wartości z krotki, wskazywanej w danej chwili przez kursor.

♦    Dynamiczny SQL {dynamie SQL): Zamiast wstaw iać fragmenty SQL do programu podstawowego może on generować teksty, które są interpretowane jako instrukcje SQL i wykonywane przez system SQL.

♦    Sterowanie współbieżnością (concicrrency control): W systemie SQL istnieją dwa mechanizmy, które pozwalają unikać konfliktów związanych z jednoczesnym przetwarzaniem: transakcje oraz ograniczenia w stosowaniu kursorów. Ograniczenia kursorów polegają na deklarowaniu kursora jako „niewrażliwego”, co oznacza, że zmiany dokonywane w relacji nie są widoczne.

♦    Transakcje. (transactions): Programista może grupować instrukcje w jednostki zwane transakcjami, które się zatw ierdza lub cofa (unieważnia). W tym drugim przypadku cofa się wszystkie zmiany powstałe w bazie danych.

♦    Poziomy izolacji (isolation levels)\ Transakcje w systemie SQL można określać na jednym z czterech poziomów' izolacji, które w kolejności od najbardziej do najmniej restrykcyjnego określa się jako: „sekwencyjny” (transakcja musi się wykonać zawsze w całości, zanim inna transakcja się zacznie lub po kompletnym zakończeniu innej transakcji), „odczyt powtarzalny” (każda krotka, która pojawiła się w wyniku zapytania, będzie pojawiała się w kolejnych odpowiedziach), „odczyt zatwierdzony” (tylko krotki powstałe w wyniku zatwierdzenia transakcji są dostępne dla innych transakcji) oraz „odczyt niczatwicrdzo-ny” (nie ma żadnych ograniczeń na dostęp do danych).

♦    Kursory i transakcje tyjko do odczytu (read-only cursors and transactions): Zarówno kursory, jak i transakcje można zadeklarować jako tylko do odczytu. Dzięki temu można uzyskać pewność, że kursor lub transakcja nie zmienią stanu bazy danych, a jednocześnie stanowi to informację dla systemu SQL o tym, że ten obiekt nie spowoduje naru-