Wykład: ZSBDwyk03.ppt

advertisement
Wykład: ZSBDwyk01.ppt ............................................................................................. 3
1.1.Kim jest administrator bazy danych? .................................................................... 3
1.2. Jakie znasz typy administratorów? ...................................................................... 3
1.3. Podstawowe obowiązki administratora. ................................................................ 3
1.4. Fizyczne składniki bazy danych Oracle ................................................................. 3
1.5. Logiczne obiekty bazy danych Oracle ................................................................... 3
1.6. Wbudowaniu użytkownicy bazy Oracle ................................................................. 4
1.7. Co to jest przestrzeń tabel? ................................................................................ 4
1.8. Jakie znasz podstawowe wbudowane przestrzenie tabel Oracle ............................... 4
1.9. Działanie zakresów tabel .................................................................................... 4
1.10. Podaj składnię lub przykładowe polecenie definiujące przestrzeń tabel ................... 4
1.11. Podaj przykładowe parametry używane do definiowania przestrzeni tabel ............... 4
1.12. Podaj składnię lub przykładowy polecenie definiujące przestrzeń tabel ................... 5
1.13. Czym jest obszar SGA(System Global Area) ........................................................ 5
1.14. Podaj składnię lub przykładowe polecenie tworzące użytkownika, podaj parametry
które mogą być użyte przy tworzeniu ......................................................................... 5
1.15. Czym jest „Rola”, do czego służy oraz co powoduje dodanie lub usunięcie roli ......... 5
1.16. Podaj składnię lub przykładowe polecenie tworzące „rolę”, podaj parametry które
mogą być użyte przy tworzeniu ................................................................................. 5
1.17. Podaj składnię lub przykładowe polecenie nadające uprawnienia roli, nadające
uprawnienia do obiektu oraz nadawanie uprawnień systemowych .................................. 6
1.18. Podaj składnię lub przykładowe polecenie odbierające uprawnienia użytkownikowi,
nadające uprawnienia do obiektu ............................................................................... 6
1.19. Podaj przykłady uprawnień systemowych ........................................................... 6
1.20. Podaj przykłady obiektów do których mogą być nadane uprawnienia oraz
przykładowe przywileje (w zależności od obiektu) ........................................................ 6
1.21. Czym jest profil i jakie są jego ustawienia. ......................................................... 6
1.22. Czym są dynamiczne perspektywy ciągów .......................................................... 7
1.23. Czym jest Listener i jakie są jego ustawienia? ..................................................... 7
Wykład: ZSBDwyk02.ppt ............................................................................................. 8
2.1. Jakie znasz główne komendy języka DML? ............................................................ 8
2.2. Czym są dane wycofania i jakie są ich cele? .......................................................... 8
2.3. Czym jest audyt bazy danych i jakie są jego rodzaje? ............................................ 8
2.4. Wymień dwie opcje automatycznego odzyskiwania danych i kiedy się je stosuje? ...... 8
2.5. Jakie znasz strategie, typy oraz sposoby back-upów .............................................. 8
Wykład: ZSBDwyk03.ppt ........................................................................................... 10
3.1. PL/SQL - co to jest? ......................................................................................... 10
3.2. Typy bloków. Opisać strukturę bloku anonimowego i podać przykład ..................... 10
3.3. %TYPE - do czego służy, co nam daje? .............................................................. 11
3.4. Widoczność zmiennych. Nadawanie etykiet blokom zewnętrznym .......................... 11
3.5. Opisz zasady stosowania polecenia SELECT w PL/SQL .......................................... 11
3.6. Wymień rodzaje instrukcji warunkowych i podaj przykłady ................................... 11
3.6. Wymień i opisz rodzaje pętli i sposoby kontrolowania ich wykonywania. Podaj
przykłady .............................................................................................................. 12
3.7. Czym są rekordy? Definiowanie rekordu przy użyciu %ROWTYPE. Przykłady ........... 13
3.8. Tabele INDEX BY i związane z nimi funkcje. Przykłady ......................................... 14
3.9. Po co stosuje się kursory? Używanie kursorów z poleceniem FETCH i FOR. Przykłady 15
Wykład: ZSBDwyk04.ppt ........................................................................................... 18
4.1. Czym są wyjątki? Kontrola wyjątków. Przykłady .................................................. 18
4.2. Różnice między nazwanymi a nienazwanymi bloki ............................................... 19
4.3. Porównanie procedur i funkcji ........................................................................... 19
4.3. Opisać sposób deklarowania procedur i sposoby ich wywoływania. Przykłady .......... 19
4.4. Opisać sposób deklarowania funkcji i sposób ich wywoływani. Przykłady ................ 20
Wykład: ZSBDwyk05.ppt ........................................................................................... 22
5.1. Czym są pakiety. Składowe pakietu. .................................................................. 22
5.2. Tworzenie pakietów - składnia. Przykład ............................................................ 22
5.3. Wymienić sposoby wywoływania elementów pakietu ............................................ 23
5.4. Opisać przeciążanie podprogramów. Przykład ..................................................... 23
5.5. Czym są wyzwalacze? ...................................................................................... 23
5.6. Wyzwalacze DML ............................................................................................. 24
5.7. Opisać budowę wyzwalacza. Podać przykład ....................................................... 24
5.8. W jakich sytuacjach wyzwalacz zostanie uruchomiony raz a kiedy wiele razy .......... 24
5.9. Podać przykład wyzwalacza wierszowego ........................................................... 24
Wykład: ZSBDwyk06.ppt ........................................................................................... 26
6.1. Podaj przykładowe zastosowanie Obiektowych baz danych i czym się te dziedziny
charakteryzują? ..................................................................................................... 26
6.2. Jakie założenia modelu obiektowego zostały wykorzystane w OBD? ....................... 26
6.3. Jakie założenia baz danych zostały wykorzystane w OBD? .................................... 26
6.4. Powody stosowania OBD .................................................................................. 26
6.5. Podaj cztery składniki standardu ODMG 3.0 ........................................................ 26
6.6. Opisz model ODMG 3.0 .................................................................................... 26
6.7. Scharakteryzuj język ODL ................................................................................ 27
6.8. Podaj składnię lub przykładowe polecenie tworzące klasę w OBD ........................... 27
6.9. Podaj składnię lub przykładowe polecenie tworzące atrybuty klas w OBD ............... 27
6.10. Podaj składnię lub przykładowe polecenie tworzące relacje klas w OBD ................ 27
6.11. Podaj składnię lub przykładowe polecenie tworzące atrybuty klas w OBD .............. 27
6.12. Scharakteryzuj język QDL. .............................................................................. 28
6.13. Zachowanie trwałości danych w OBD ............................................................... 28
6.14. Zachowanie trwałości danych w OBD ............................................................... 28
Wykład: ZSBDwyk07.ppt ........................................................................................... 29
7.1. Jakie elementy dodano do RDBMS w obiektowo relacyjnych bazach danych? .......... 29
7.2. Podać składnie definiowania typu obiektów. Przykład ........................................... 29
7.3. Podać przykład definicji obiektu z metodami ....................................................... 29
7.4. Czym są i do czego służą konstruktory? ............................................................. 29
7.5. Podać przykład dziedziczenia ............................................................................ 30
7.6. Czym są typy i metody abstrakcyjne.................................................................. 30
7.7. Podać przykład nadpisywania metod .................................................................. 30
7.8. Opisać operowanie na tabelach obiektów ............................................................ 31
7.9. Czym są tabele heterogeniczne ......................................................................... 31
7.10. Czym jest typ REF ......................................................................................... 31
7.11. Podać przykład użycia REF .............................................................................. 31
7.12 Podać przykład zawierający związki dwustronne ................................................. 31
7.13. Omówić tworzenie zapytań ............................................................................. 32
7.14. Omówić modyfikowanie i usuwanie typów ......................................................... 32
Wykład: ZSBDwyk01.ppt
1.1.Kim jest administrator bazy danych?
Administrator – osoba odpowiedzialna za środowiskowy aspekt bazy danych
1.2. Jakie znasz typy administratorów?
Systemowi i operacyjni – monitorują wszystkie egzemplarze bazy danych oraz serwery
(dodają użytkowników, schematy, przestrzenie tabel, itd.)
Architektury – zapewniają optymalną konstrukcję bazy danych
Danych – zapewniają integralność danych oraz uporządkowanie danych
1.3. Podstawowe obowiązki administratora.
Instalacja i aktualizacja oprogramowania np. sprawdzanie czy najnowsza wersja bazy
danych jest zgodna z działającymi aplikacjami, sprawdzanie prawidłowego funkcjonowania
nowego oprogramowania, testowanie nowego oprogramowania w bazach danych i
aplikacjach, pilnowanie licencji.
Czynności związane z bazami danych, np. dostosowanie miejsca na dysku do wymagań,
tworzenie i okresowe testowanie planów archiwizowania, odtwarzania bazy danych,
monitorowanie wydajności bazy danych, monitorowanie fragmentacji tabel.
Zagadnienia systemowe, np. weryfikacja poprawności procesu archiwizacji, czynności
porządkowe, współpraca z administratorem systemu, koordynowanie aktualizacji
oprogramowania systemowego.
Zagadnienia bezpieczeństwa, np. zarządzanie kontami i hasłami użytkowników, przydzielanie
przywilejów (zarządzanie rolami), zarządzanie procedurami kontrolnymi (dostęp do
obiektów)
1.4. Fizyczne składniki bazy danych Oracle






Pliki danych (dbf) – rzeczywiste dane z bazy
Pliki parametrów (ora) – parametry instalacyjne
Pliki sterujące (ctl) – odwzorowanie plików fizycznych na logiczne
Pliki dzienników powtórzeń (rdo) – odnoszą się do wycofywania transakcji
Dzienniki alarmów i śledzenia – informacje o „kondycji” bazy danych (zapisywane zdarzenia, błędy
systemowe)
Pliki kopii zapasowych
1.5. Logiczne obiekty bazy danych Oracle








Przestrzenie tabel – zawiera tabele, ułatwia nadawanie przywilejów
Tabele
Indeksy – przyśpieszają dostęp do bazy
Wyzwalacze – uruchomiane w wyniku jakiegoś zdarzenia
Perspektywy – wybór odpowiednich informacji
Migawki – uchwycenie danych w określonym momencie
Segmenty wycofania – zawierają poprzednie stany bazy danych
Segmenty tymczasowe – gdy istnieje konieczność np. sortowania dużych tabel (order by,
group by, etc)




Role – zbiór przywilejów dostosowanych dla grupy użytkowników (podstawowe
RESOURCE, CONNECT)
Pakiety, procedury i funkcje
Sekwencje –generatory unikatowych liczb używane do jednoznacznej identyfikacji
wierszy tabeli
Przywileje
1.6. Wbudowaniu użytkownicy bazy Oracle
SYS – największe uprawnienia, właściciel wszystkich obiektów wewnętrznych (powinien być
jedynym użytkownikiem mający prawa do przestrzeni tabel SYSTEM)
SYSTEM – podstawowe konto, z niego tworzonych jest większość obiektów (przestrzeń tabel
TOOLS)
HR – użytkownik testowy z podstawowymi uprawnieniami
1.7. Co to jest przestrzeń tabel?
1.8. Jakie znasz podstawowe wbudowane przestrzenie tabel Oracle
SYSTEM – zawiera słownik bazy danych oraz wszystkie składowane jednostki PL/SQL
SYSAUX – elementy opcjonalne
EXAMPLE – zawiera przykładowe elementy bazy danych
USERS – miejsce na obiekty użytkowników
TEMP – przestrzeń elementów tymczasowych
UNDO – przestrzeń tabel wycofywania
1.9. Działanie zakresów tabel
Pctfree – ile wolnego miejsca ma zostać na aktualizacje w zakresie
Pctused – procent zajętości poniżej którego można ponownie dodać wiersze do bloku
Wiersze dodawane do zakresu do momentu osiągnięcia zajętości 100% - pctfree, następnie
przejście do kolejnego bloku
Po usunięciu wierszy – do danego bloku mogą być dodane nowe gdy zajętość osiągnie
poniżej pctused
1.10. Podaj składnię lub przykładowe polecenie definiujące przestrzeń tabel
CREATE TABLESPACE nazwa datafile ‘ścieżka do pliku’ + parametry
Create tablespace MYTAB datafile ‘c:\app\oralcle11g\oradata\orcl\mytab01.dbf’ size 2M;
SELECT * FROM DBA_TABLESPACES;
1.11. Podaj przykładowe parametry używane do definiowania przestrzeni tabel
SIZE – obszar przydzielony plikowi
REUSE – gdy chcemy użyć pliku który już istnieje
AUTOEXTEND – możliwość automatycznego zwiększania rozmiaru pliku: gdy włączone na ON
dodatkowe parametry: NEXT – o ile ma się zwiększyć, MAXSIZE: maksymalny rozmiar
LOGGING/NOLOGGING – czy prowadzone dzienniki powtórzeń
DEFAULT STORAGE – ilość miejsca przydzielana obiektowi jeśli nie została wcześniej
określona
ONLINE/OFFLINE – początkowy stan przestrzeni
PERMANENT/TEMPORARY – czy zawiera dane, czy segmenty tymczasowe
1.12. Podaj składnię lub przykładowy polecenie definiujące przestrzeń tabel
alter tablespace MYTAB offline;
drop tablespace MYTAB;
1.13. Czym jest obszar SGA(System Global Area)
SGA - Obszar pamięci z bezpośrednim dostępem użytkownika (np. ostatnio przetwarzane
dane, ładowane skrypty)
1.14. Podaj składnię lub przykładowe polecenie tworzące użytkownika, podaj
parametry które mogą być użyte przy tworzeniu
CREATE USER nazwa identified by hasło [parametry]
Możliwe parametry:








Externally – identyfikacja za pomocą SO
Default tablespace – miejsce gdzie będą tworzone obiekty bazy
Temporary tablespace – do operacji sortowania
Quota ilość miejsca on tablespace – ilość miejsca dostępnego dla danego użytkownika w jakiejś
przestrzeni tabel
Profile – nazwa profilu użytkownika
default Role – rola domyślna (all, all roles except, none)
password expire – termin wygaśnięcia hasła
Account locked/unlocked – czy konto powinno być dostępne
1.15. Czym jest „Rola”, do czego służy oraz co powoduje dodanie lub usunięcie
roli
Rola zbiór przywilejów – przydzielanych dowolnej liczbie użytkowników, ułatwia sposób
zarządzania grupami użytkowników, jej dodanie/usunięcie
powoduje to samo dla
użytkowników posiadających tą rolę
1.16. Podaj składnię lub przykładowe polecenie tworzące „rolę”, podaj parametry
które mogą być użyte przy tworzeniu
CREATE ROLE nazwaRoli [parametry];
CREATE ROLE mojaRola identified by nowe_hasło;
Możliwe parametry:



Not identified – bez hasła (domyślnie)
Identified by – użycie roli wymaga hasła
Identified Externally
1.17. Podaj składnię lub przykładowe polecenie nadające uprawnienia roli,
nadające uprawnienia do obiektu oraz nadawanie uprawnień systemowych
Nadawanie uprawnień roli:
GRANT nazwa1roli, nazwa2roli TO nazwaUzytkownika1, nazwauz2;
GRANT create table TO HR;
Nadawanie uprawnień do obiektu:
GRANT nazwaUprawnienia ON nazwaObiektu TO nazwaUzytkownika;
GRANT select, update, delete on HR.DEPARTMENT TO User WITH GRANT OPTION;
Nadawanie uprawnień systemowych
GRANT nazwaUprawnienia TO nazwaUzytkownika;
GRANT restricted session TO admin;
1.18. Podaj składnię lub przykładowe polecenie odbierające uprawnienia
użytkownikowi, nadające uprawnienia do obiektu
Odbieranie uprawnień użytkownikowi:
REVOKE SysUpraw FROM user;
REVOKE create table FROM jeff;
Odbieranie uprawnień do obiektu:
REVOKE ObjUpraw ON Obiekt FROM user;
REVOKE select, delete ON employees FROM wazny;
1.19. Podaj przykłady uprawnień systemowych
STARTUP, SHUTDOWN – możliwość uruchamiania i zatrzymywania instancji
DROP ANY object – możliwość usuwania podanego typu obiektu również
użytkowników
CREATE, MANAGE, ALTER, DROP TABLESPACE
GRANT ANY OBJECT PRIVILEGE – możliwość nadania przywilejów obiektowych
ALTER DATABASE, ALTER SYSTEM – pozwala zmieniać bazę
innych
1.20. Podaj przykłady obiektów do których mogą być nadane uprawnienia oraz
przykładowe przywileje (w zależności od obiektu)
Przykładowe obiekty
Tabele, perspektywy, sekwencje, migawki, funkcje, procedury
Możliwe przywileje (w zależności od obiektu)
SELECT, ALTER, DELETE, INSERT, REFERENCES, UPDATE, EXECUTE
1.21. Czym jest profil i jakie są jego ustawienia.
Nakładają limity na użytkownika
Użytkownik przypisany jest do jednego profilu
Ustawienia profilu:
Ustawienia hasła
Długość połączenia
Długość procesu bezczynności
Wykorzystanie Procesora (całość lub na jedną komendę)
Liczba sesji tego samego użytkownika
1.22. Czym są dynamiczne perspektywy ciągów
Informacje dotyczące:
Obecnej sesji
Stanu plików
Poziom postępu wykonywanych zadań
Blokad
Statusu Backup-ów
Wykorzystania i alokacji pamięci
Parametrów systemowe i sesji
Wykonywania zapytań SQL
1.23. Czym jest Listener i jakie są jego ustawienia?
Bramka dostępu do instancji bazy danych dla użytkowników z zewnątrz
Listener może obsługiwać wiele instancji bazy danych i wielu użytkowników
Ustawienia Listenera:
Host – nazwa lub numer IP
Numer portu – standardowo 1521 – można zmienić
Protokół – standardowo TCP/IP
Nazwa instancji
Wykład: ZSBDwyk02.ppt
2.1. Jakie znasz główne komendy języka DML?
Główne komendy DML:
INSERT
UPDATE
DELETE
MERGE – z dwóch tabel tworzy jedną
2.2. Czym są dane wycofania i jakie są ich cele?
Kopia danych przed modyfikacją
Dodawane dla każdej transakcji, która zmienia dane
Utrzymywanie co najmniej do końca przeprowadzania transakcji
Główne cele danych wycofania:
Wycofywanie transakcji
Odzyskiwanie danych z awarii transakcji
Odtworzenie zapytań, tabel, transakcji
2.3. Czym jest audyt bazy danych i jakie są jego rodzaje?
Oznacza zbieranie i gromadzenie informacji na temat działań w systemie – może obniżać
wydajność systemu
Typy audytu:




Obligatoryjny (np. logowanie Adminów)
Standardowy – wybór opcji i przywilejów które mają być monitorowane (ustawiaony za pomocą
AUDIT_TRIAL)
Bazujący na wartościach – związany z przekazywanymi wartościami z insert, update, delete;
zaimplementowany za pomocą wyzwalaczy
Drobnoziarnisty – gromadzi komendy SQL
2.4. Wymień dwie opcje automatycznego odzyskiwania danych i kiedy się je
stosuje?
Gdy dane podczas zamykania instancji źle zapisane
Uruchomiane podczas włączenia bazy danych
Dwie możliwe operacje:
Rolling forward – dane wracają do stanu przed awarią
Rolling back – niezatwierdzone zmiany wracają do stanu przed zmianami
2.5. Jakie znasz strategie, typy oraz sposoby back-upów
Strategia backup-u:
Cała baza danych
Tylko wybrane elementy
Typ backup-u:
Wszystkie bloki danych
Tylko informacje o zmianach od wcześniejszych backup-ów
Kumulatywny – wszystkie zmiany od pierwszego backup-u
Różnicowy – tylko zmiany od ostatniego backup-u
Sposób backupu
Online
Offline
Wykład: ZSBDwyk03.ppt
3.1. PL/SQL - co to jest?



rozszerzenie SQL-a do języka proceduralnego;
standardowy język Oracle dostępu do danych w relacyjnych bazach;
ułatwia wykonywanie powtarzających się operacji jak również operacji opartych o
określone warunki.
Podstawowe elementy PL/SQL:
 kod zorganizowany w wykonywalne bloki;
 zawiera elementy języka proceduralnego:
o zmienne, stałe typy danych;
o instrukcje warunkowe, pętle;
o bloki danych używanie wiele razy – procedury, funkcje, pakiety;
o obsługa wyjątków.
Zalety PL/SQL:
 integracja elementów proceduralnych z SQL-em;
 zwiększona wydajność;
 możliwość podziału kodu na moduły;
 integracja z narzędziami Oracle;
 obsługa wyjątków.
3.2. Typy bloków. Opisać strukturę bloku anonimowego i podać przykład



blok anonimowy;
procedura;
funkcja.
Elementy bloku anonimowego:
DECLARE - opcjonalny - zawiera deklarację zmiennych;
BEGIN - wymagany -zawiera instrukcje SQL i PL/SQL;
EXCEPTION - opcjonalny – zawiera obsługę wyjątków;
END; - wymagany - kończy blok.
Przykład bloku anonimowego:
DECLARE
imieStudenta VARCHAR(30);
BEGIN
SELECT imie
INTO imieStudenta
FROM studenci
WHERE nrIndeksu = 054321;
DBMS_OUTPUT.PUT_LINE('Imię studenta o numerze indeksu 054321: '||
imieStudenta);
EXCEPTION
WHEN TOO_MANY_ROWS THEN
DBMS_OUTPUT.PUT_LINE('Wystąpił błąd! Zwrócono więcej niż jeden wiersz.');
END;
3.3. %TYPE - do czego służy, co nam daje?


pozwala zdefiniować typ zmiennej na podstawie zmiennej już wcześniej
zadeklarowanej lub kolumny z tabeli;
ułatwia uniknięcia błędu polegającego na złym typie danych (jeżeli zmianie ulegnie
typ danych elementu, do którego odnosi się nasza zmienna to i ona zmieni typ).
Przykład deklaracji:
imieStudenta studenci.imie%TYPE;
nrIndeksu NUMBER(5);
nrIndeksu2 nrIndeksu%TYPE;
3.4. Widoczność zmiennych. Nadawanie etykiet blokom zewnętrznym


gdy zmienne mają tę samą nazwę to widoczna będzie zmienna z bloku
wewnętrznego;
aby dostać się do zmiennej zewnętrznej należy nadać blokowi zewnętrznemu etykietę
(BEGIN <<nazwa_etykiety>> (...) END nazwa_etykiety;)
Przykład:
BEGIN <<zew>>
DECLARE
imie VARCHAR(20):='Tomasz';
BEGIN
DECLARE
imie VARCHAR(20):='Michal';
BEGIN
DBMS_OUTPUT.PUT_LINE(zew.imie); /*wyświetli: Tomasz */
END;
END;
END zew;
3.5. Opisz zasady stosowania polecenia SELECT w PL/SQL


zapytanie musi zwrócić dokładnie jeden wiersz;
musi zostać użyte słówko INTO, po którym występują zmienne, do których zostanie
wczytany rezultat zapytania (liczba i typy zmiennych muszą się zgadzać z liczbą i
typami kolumn zwróconymi przez zapytanie).
Przykład:
DECLARE
imieStudenta studenci.imie%TYPE;
nazwiskoStudenta studenci.nazwisko%TYPE;
BEGIN
SELECT imie, nazwisko
INTO imieStudenta, nazwiskoStudenta
FROM studenci
WHERE nrIndeksu = 054321;
END;
3.6. Wymień rodzaje instrukcji warunkowych i podaj przykłady


if
case
Przykład 1:
DECLARE
sprzedaz NUMBER(6);
premia NUMBER(3);
BEGIN
IF sprzedaz > 100 THEN premia:=500;
ELSEIF sprzedaz > 80 THEN premia:=350;
ELSE premia = 200;
END IF;
END;
Przykład 2:
DECLARE
ocena NUMBER(1):=5;
ocenaSlownie VARCHAR2(20);
BEGIN
ocenaSlownie := CASE ocena
WHEN 5 THEN 'bardzo dobry'
WHEN 4 THEN 'dobry'
WHEN 3 THEN 'dostateczny'
WHEN 2 THEN 'niedostateczny'
ELSE 'nie ma takiej oceny'
END;
DBMS_OUTPUT.PUT_LINE(ocenaSlownie);
END;
Przykład 3:
DECLARE
ocena NUMBER(1):=5;
ocenaSlownie VARCHAR2(20);
BEGIN
ocenaSlownie := CASE
WHEN ocena=5 THEN 'bardzo dobry'
WHEN ocena=4 THEN 'dobry'
WHEN ocena=3 THEN 'dostateczny'
WHEN ocena IN(2,1,0) THEN 'niedostateczny'
ELSE 'nie ma takiej oceny'
END;
DBMS_OUTPUT.PUT_LINE(ocenaSlownie);
END;
3.6. Wymień i opisz rodzaje pętli i sposoby kontrolowania ich wykonywania.
Podaj przykłady



LOOP - wykonuje się do póki warunek nie jest spełniony;
WHILE - wykonuje się do póki warunek jest spełniony;
FOR - przejście po określonym zakresie licznika (gdy użyjemy REVERSE przejście
nastąpi od górnej granicy do dolnej, licznika nie musimy deklarować).
Kontrolowanie wykonywania pętli:
 CONTINUE - wymusza porzucenie obecnej iteracji w pętli i rozpoczęcie nowej;
 EXIT - wymusza opuszczenie obecnej pętli i przejście do kolejnej instrukcji.
Przykład 1:
DECLARE
suma NUMBER(4):=1;
i NUMBER(3):=1;
BEGIN
LOOP
suma:=2*suma;
EXIT WHEN i > 5;
i:=i+1;
END LOOP;
DBMS_OUTPUT.PUT_LINE(suma);
END;
Przykład 2:
DECLARE
x NUMBER(4):=20;
BEGIN
WHILE x>0 LOOP
x:=x-1;
DBMS_OUTPUT.PUT_LINE(x);
END LOOP;
END;
Przykład 3:
DECLARE
numer NUMBER(4):=1000;
BEGIN
FOR i IN REVERSE 1..10
LOOP
DBMS_OUTPUT.PUT_LINE(numer+i);
END LOOP;
END;
Przykład 4:
DECLARE
i NUMBER(4):=0;
BEGIN
WHILE TRUE LOOP
i:=i+1;
IF MOD(i,2)=0 THEN CONTINUE;
END IF;
IF i>=10 THEN EXIT;
END IF;
DBMS_OUTPUT.PUT_LINE(i);
END LOOP;
END;
3.7. Czym są rekordy? Definiowanie rekordu przy użyciu %ROWTYPE. Przykłady



zawierają dane logicznie ze sobą powiązane np. wiersz bądź część wiersza tabeli;
mogą zawierać pola o różnych typach danych;
muszą mieć co najmniej jedno pole.
%ROWTYPE:
 przed %ROWTYPE należy dodać nazwę tabeli, do której ma się odwoływać zmienna;
 odwołuje się do wszystkich kolumn jednej tabeli;
 nazwy kolumn oraz typy danych w poszczególnych kolumnach przekazane są do
zmiennej;
 gdy zmienia się typ danych lub nazwy w tabeli to automatycznie zmianie ulega
zmienna z %ROWTYPE – nie trzeba pilnować typów.
Przykład 1:
TYPE ocenaStudenta IS RECORD(
ocena NUMBER(1),
opis oceny.opis%TYPE);
Przykład 2:
Tabela oceny(id, opis, waga)
DECLARE
ocena oceny%ROWTYPE;
BEGIN
SELECT *
INTO ocena
FROM oceny
WHERE id=4;
DBMS_OUTPUT.PUT_LINE(ocena.id||' '||ocena.opis||' '||ocena.waga);
END;
3.8. Tabele INDEX BY i związane z nimi funkcje. Przykłady




składają się z dwóch pól – identyfikatora (liczba lub ciąg znaków) oraz wartości;
gromadzą dane o tym samym typie;
mają nieograniczoną wielkość tzn. ogranicza je zakres wartości identyfikatora;
odpowiadają tabelom z „normalnych” języków programowania.
Definiowanie:
TYPE nazwa IS TABLE OF
typkolumny INDEX BY
PLS_INTEGER|BINARY_INTEGER|VARCHAR2;
Funkcje:
 EXISTS – sprawdza czy istnieje dana komórka w tabeli (np. ocena(1).EXISTS zwraca prawdę albo fałsz);
 COUNT – zwraca liczbę elementów tabeli (np. dbms_output.put_line(imiona.COUNT);
);
 FIRST, LAST – zwracają pierwszą/ostatnią wartość z tabeli, gdy tabela jest pusta
zwracany jest NULL;
 PRIOR(n), NEXT(n) – zwracają poprzedni/kolejny indeks z tabeli – porównując do n;
 DELETE – usuwa elementy z tabeli:
o bez argumentu – usuwa wszystko;
o z argumentem n – usuwa n-ty element;
o z argumentami m,n – usuwa wszystkie elementy od m do n.
Przykład 1:
DECLARE
TYPE idOcena IS TABLE OF
oceny.id%TYPE
INDEX BY PLS_INTEGER;
ocena idOcena;
BEGIN
ocena(1):=3;
DBMS_OUTPUT.PUT_LINE(ocena(1));
END;
Przykład 2:
DECLARE
TYPE idOcena IS TABLE OF
oceny%ROWTYPE
INDEX BY PLS_INTEGER;
ocena idOcena;
BEGIN
FOR i IN 1..7
LOOP
SELECT *
INTO ocena(i)
FROM oceny
WHERE id=i;
END LOOP;
FOR i IN ocena.FIRST..ocena.LAST
LOOP
DBMS_OUTPUT.PUT_LINE(ocena(i).id||' '||ocena(i).opis||' '||ocena(i).waga);
END LOOP;
END;
3.9. Po co stosuje się kursory? Używanie kursorów z poleceniem FETCH i FOR.
Przykłady


definiuje się je do poleceń SELECT, które zwracają wiele wierszy do przetworzenia
danych;
dane można przetwarzać wiersz po wierszu.
Definiowanie:
CURSOR nazwa IS
zapytanie_SQL_SELECT;
Otwieranie kursora:
 aby była możliwość dostępu do danych w kursorze należy użyć polecenia – OPEN
nazwa_kursora;
 polecenie alokuje dynamicznie pamięć dla danych z otwieranego kursora;
 sczytywanie są odpowiednie typy i nazwy kolumn dla kursora;
 wiersze nie są przekazywane do zmiennych kursora – dopiero w momencie
uruchomienia polecenia FETCH dane są sczytywane.
FETCH:
 pobiera z kursora jeden wiersz danych i przesuwa się do następnego wiersza;
 sposób użycia: FETCH nazwaKursora INTO zmienne;
o po INTO liczba zmiennych i typy muszą odpowiadać liczbie i typom kolumn
pobieranych z kursora;
o
kolejność występowania zmiennych musi odpowiadać kolejności kolumn
zdefiniowanych w kursorze.
CLOSE:
 zamyka dostęp do kursora;
 zwalnia pamięć zajmowaną przez kursor;
 sposób użycia: CLOSE nazwaKursora;
FOR dla kursora:
 składnia:
FOR zmienna IN nazwakursora
LOOP
instrukcje;
END LOOP;
 'zmienna' – rekord sczytujący kolejne wiersze kursora;
 otwarciem, FETCH i zamknięciem kursora zajmuje się pętla.
Atrybuty kursora:
 %ISOPEN – zwraca prawdę gdy kursor jest otwarty;
 %NOTFOUND – zwraca prawdę gdy zmienna nie zawiera danych;
 %FOUND – zwraca prawdę gdy zmienna zawiera dane;
 %ROWCOUNT – zwraca liczbę wierszy wyciągniętych poprzez kursor do momentu
wywołania atrybutu.
Kursor – parametry:
 aby do kursora przekazać jakieś parametry należy użyć następującej składni:
CURSOR nazwa(parametr typ, …) IS
SELECT …;
(...)
OPEN nazwa(wartosc parametru);
Przykład 1:
DECLARE
CURSOR kursorek IS
SELECT opis, waga FROM oceny;
ocena kursorek%ROWTYPE;
BEGIN
OPEN kursorek;
LOOP
FETCH kursorek INTO ocena;
EXIT WHEN kursorek%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(ocena.opis||' '||ocena.waga);
END LOOP;
DBMS_OUTPUT.PUT_LINE(kursorek%ROWCOUNT);
CLOSE kursorek;
END;
Przykład 2:
DECLARE
CURSOR kursorek IS
SELECT opis, waga FROM oceny;
ocena kursorek%ROWTYPE;
BEGIN
FOR ocena IN kursorek
LOOP
DBMS_OUTPUT.PUT_LINE(ocena.opis||' '||ocena.waga);
END LOOP;
END;
Przykład 3:
DECLARE
CURSOR kursorek(idOceny NUMBER) IS
SELECT opis, waga FROM oceny WHERE id=idOceny;
ocena kursorek%ROWTYPE;
BEGIN
OPEN kursorek(2);
LOOP
FETCH kursorek INTO ocena;
EXIT WHEN kursorek%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(ocena.opis||' '||ocena.waga);
END LOOP;
CLOSE kursorek;
OPEN kursorek(3);
LOOP
FETCH kursorek INTO ocena;
EXIT WHEN kursorek%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(ocena.opis||' '||ocena.waga);
END LOOP;
CLOSE kursorek;
END;
Wykład: ZSBDwyk04.ppt
4.1. Czym są wyjątki? Kontrola wyjątków. Przykłady



wyjątki – błędy pojawiające się podczas uruchomienia bloku;
w momencie wystąpienia wyjątku blok kończy działanie – wyjątek pozawala na
wykonanie ostatnich działań przed końcem wykonania bloku;
dwie opcje wywołania wyjątku:
o predefiniowane w Oracle (np. NO_DATA_FOUND) ;
o wywoływane przez użytkownika za pomocą RAISE nazwa, gdzie nazwa
zdefiniowana jako wyjątek z dodaną obsługą.
Schemat tworzenia obsługi wyjątków:
BEGIN
(…)
EXCEPTION
WHEN wyjatek1 [OR wyjatek2 …] THEN
instrukcje;
WHEN wyjatek3 [OR wyjatek4…] THEN
instrukcje;
WHEN OTHERS THEN
instrukcje;
END;
Przykład 1:
DECLARE
opis VARCHAR2(20);
BEGIN
SELECT opis
INTO opis
FROM oceny
WHERE id = 1 OR id = 2;
DBMS_OUTPUT.PUT_LINE(opis);
EXCEPTION
WHEN TOO_MANY_ROWS THEN
DBMS_OUTPUT.PUT_LINE('Zwrócono zbyt dużo wierszy. Zmień warunek
WHERE.');
END;
Przykład 2:
DECLARE
wyjatek EXCEPTION;
BEGIN
UPDATE oceny
SET opis='Koło z ZSBD'
WHERE id = 11;
IF SQL%NOTFOUND THEN RAISE wyjatek;
END IF;
EXCEPTION
WHEN wyjatek THEN
DBMS_OUTPUT.PUT_LINE('Nie ma oceny o podanym id.');
END;
4.2. Różnice między nazwanymi a nienazwanymi bloki
Nienazwane
Nazwane
Kompilowane za każdym razem
Kompilowane raz
Brak możliwości zapisania w bazie danych
Zapisywane w bazie danych
Brak możliwości używania przez inne
aplikacje
Możliwość korzystania przez inne aplikacje
Nie zwracają wartości
Funkcje zwracają wartość określonego typu,
procedury mogą zwracać 0 lub więcej
wartości
Nie można przekazywać parametrów do bloku Można przekazywać parametry do bloku
4.3. Porównanie procedur i funkcji
Procedury
Funkcje
Wykonywane jako instrukcje PL/SQL
Wywoływane jako część jakiegoś
wyrażenia
Nie zawierają RETURN w deklaracji
Muszą zawierać RETURN wraz z typem
danych w deklaracji
Może przekazać na zewnątrz wartości parametrów
(zastosowanie OUT, IN OUT)
Musi zwracać dokładnie jedną wartość
Może użyć RETURN
Musi posiadać przynajmniej jeden
RETURN w kodzie funkcji
4.3. Opisać sposób deklarowania procedur i sposoby ich wywoływania. Przykłady

składnia:
CREATE [OR REPLACE] PROCEDURE nazwa(parametr [tryb] typ_danych [DEFAULT
wartość], …) AS|IS
deklaracja zmiennych lokalnych;
BEGIN
instrukcje;
END;
o 'tryb' może przyjąć wartości:
 IN – parametry wejściowe (ustawiane domyślnie);
 OUT – parametry wyjściowe;
 IN OUT – parametry działające w obie strony;
o DEFAULT – przyjmowana wartość, w przypadku nie podania parametru.
Wywoływanie procedury:
 w bloku PL/SQL - jako nazwa procedury, wraz z parametrami, np.
BEGIN
nazwaProcedury(wartoscParametru);
END;
 z linii komend - EXECUTE nazwaProcedury(wartośćParametru);
Przykład 1:
create or replace
PROCEDURE DODAJSTUDENTA(album number, imie VARCHAR2, nazwisko VARCHAR2)
AS
BEGIN
INSERT INTO studenci(album, imie, nazwisko)
VALUES(album,imie,nazwisko);
dbms_output.put_line('Dodano studenta: '||imie||' '||nazwisko||' o numerze indeksu:
'||album);
END DODAJSTUDENTA;
Przykład 2:
create or replace
PROCEDURE STUDENT(nrAlbumu IN NUMBER DEFAULT 54900) AS
imie VARCHAR2(20);
nazwisko VARCHAR2(20);
BEGIN
SELECT imie, nazwisko
INTO imie, nazwisko
FROM studenci
WHERE album=nrAlbumu;
DBMS_OUTPUT.PUT_LINE(imie||' '||nazwisko);
END STUDENT;
Przykład 3:
create or replace
PROCEDURE dodaj48 (telefon IN OUT varchar2) IS
BEGIN
telefon := '+48' || telefon;
END dodaj48;
wywołanie procedury 'dodaj48':
DECLARE
tel VARCHAR2(20):='997';
BEGIN
dodaj48(tel);
DBMS_OUTPUT.PUT_LINE(tel);
END;
4.4. Opisać sposób deklarowania funkcji i sposób ich wywoływani. Przykłady

składnia:
CREATE [OR REPLACE] FUNCTION nazwa(parametr typ_danych, …)
RETURN typDanych IS
zmienneLokalne;
BEGIN
(…)
RETURN wartośćZgodnaZtypDanych;
(…)
END;
Wywoływanie funkcji:
 linia komend:
o EXECUTE DBMS_OUTPUT.PUT_LINE(maksik(20,30));
o VARIABLE wieksza NUMBER;


EXECUTE :wieksza :=maksik(100,200);
blok anonimowy:
DECLARE
wieksza NUMBER(4);
BEGIN
wieksza:=maksik(30,50);
END;
instrukcja SQL:
SELECT job_id, maksik(min_salary, max_salary) FROM jobs;
Przykład 1:
create or replace
FUNCTION maksik(a NUMBER, b NUMBER)
RETURN NUMBER IS
BEGIN
IF a>b THEN RETURN a;
ELSE RETURN b;
END IF;
END maksik;
użycie funkcji:
BEGIN
DBMS_OUTPUT.PUT_LINE(maksik(3,4));
END;
Wykład: ZSBDwyk05.ppt
5.1. Czym są pakiety. Składowe pakietu.



obiekt logiczny schematu bazy danych grupujący logicznie powiązane elementy
PL/SQL – typy, zmienne, podprogramy (procedury, funkcje);
pozwala wiele elementów załadować na raz;
skład pakietu:
o specyfikacja - zawiera deklaracje typów, zmiennych, stałych, kursorów
podprogramów, do których można się odwoływać z zewnątrz pakietu
(zadeklarowane elementy są publiczne);
o zawartość/ciało - zawiera instrukcje dla kursorów i podprogramów
zadeklarowanych w specyfikacji oraz może definiować dodatkowe elementy
niewidoczne na zewnątrz.
5.2. Tworzenie pakietów - składnia. Przykład
CREATE [OR REPLACE] PACKAGE nazwa AS|IS
deklaracja typów publicznych;
deklaracja zmiennych;
specyfikacja podprogramów;
END [nazwa];
CREATE [OR REPLACE] PACKAGE BODY nazwa AS|IS
odpowiednie deklaracje, tworzenie zawartości podprogramów;
Uwagi:
 zmienne domyślnie inicjowane są na NULL;
 wszystkie zadeklarowane elementy widoczne są dla użytkowników mających prawa
dostępu do pakietu.
Przykład 1:
CREATE OR REPLACE PACKAGE pracownicy IS
numer NUMBER:= 111;
CURSOR nazwisko IS
SELECT last_name FROM employees;
PROCEDURE nazwisko (id number);
FUNCTION zarobki (id number) RETURN NUMBER;
END pracownicy;
CREATE PACKAGE BODY Pracownicy IS
jakaszmienna VARCHAR2(2);
PROCEDURE nazwisko (id number) IS
name employees.last_name%TYPE;
BEGIN
SELECT last_name
INTO name
FROM employees
WHERE employee_id = id;
DBMS_OUTPUT.PUT_LINE(last_name);
END nazwisko;
(…)
END Pracownicy;
Przykład 2 (pakiet bez zawartości):
CREATE PACKAGE stale IS
km2mile CONSTANT NUMBER := 1.6093;
mile2km CONSTANT NUMBER := 0.6214;
jard2metr CONSTANT NUMBER := 0.9144;
metr2jard CONSTANT NUMBER := 1.0936;
END stale;
CREATE OR REPLACE FUNCTION zamiana(km NUMBER) RETURN NUMBER IS
BEGIN
RETURN (km*stale.km2mile);
END;
5.3. Wymienić sposoby wywoływania elementów pakietu


z linii
o
o
o
komend:
EXECUTE nazwapakietu.nazwaElementu;
EXECUTE Pracownicy.nazwisko(100);
gdy ze schematu innego użytkownika:
 EXECUTE HR.Pracownicy.nazwisko(100);
wewnątrz bloku - tak samo jak wywołanie normalnych elementów tylko poprzedzone
nazwą pakietu, do którego należą; gdy pakiet pochodzi z innego schematu
dodatkowo na początku umieszczamy nazwę schematu.
5.4. Opisać przeciążanie podprogramów. Przykład



możliwość zadeklarowania procedury/funkcji z tą samą nazwą więcej niż raz;
konieczność rozróżnienia przeciążanych podprogramów za pomocą parametrów (ich
liczby, rodzin typów lub kolejności);
możliwość nadpisania lokalnych podprogramów z pakietu.
Nie



można przeciążać:
gdy parametry są w tej samej rodzinie typów (np. NUMBER i DECIMAL);
gdy są podtypami tej samej rodziny (VARCHAR i STRING są podtypami VARCHAR2);
gdy funkcje różnią się tylko zwracanym typem.
Przykład:
CREATE OR REPLACE PACKAGE dept IS
PROCEDURE add_dept(id NUMBER, name VARCHAR2 :='edu', location VARCHAR);
PROCEDURE add_dept(name VARCHAR2);
END dept;
5.5. Czym są wyzwalacze?


bloki składowane w bazie, które są uruchomiane w momencie wystąpienia jakiegoś
zdarzenia;
wyzwalacze definiowane są na perspektywie, tabeli, schemacie użytkownika bądź na
całej bazie
Możliwości uruchomienia wyzwalacza:
 wystąpienie DML (INSERT, UPDATE, DELETE);
 wystąpienie DDL (CREATE, ALTER, DROP);
 wystąpienie operacji na bazie danych takich jak SERVERERROR, LOGON, LOGOFF,
SHUTDOWN, STURTUP.
5.6. Wyzwalacze DML



możliwe instrukcje wywołujące wyzwalacz:
o INSERT
o UPDATE [OF kolumna]
o DELETE
może być więcej niż jedna instrukcja
o INSERT OR DELETE
o INSERT OR UPDATE OR DELETE
zawartość wyzwalacza określa jakie akcje zostaną podjęte w momencie użycia
wyzwalacza (może być blokiem, odwołaniem do procedur).
5.7. Opisać budowę wyzwalacza. Podać przykład
CREATE TRIGGER nazwa
BEFORE | AFTER | INSTEAD OF
INSERT | UPDATE | DELETE
ON nazwaObiektu
[REFERENCING OLD AS old /NEW AS new]
[FOR EACH ROW
WHEN (condition)]
[DECLARE]
BEGIN
(…)
END;
Przykład:
CREATE OR REPLACE TRIGGER godziny
BEFORE INSERT ON employees
BEGIN
IF (TO_CHAR(SYSDATE,'DY') IN ('SAT','SUN')) OR
(TO_CHAR(SYSDATE,'HH24:MI') NOT BETWEEN '08:00' AND '18:00') THEN
RAISE_APPLICATION_ERROR(-20500,'nie można nic wstawić przecież nie
pracujesz');
END IF;
END;
5.8. W jakich sytuacjach wyzwalacz zostanie uruchomiony raz a kiedy wiele razy


gdy zapytanie operuje na jednym wierszu – trigger zostanie odpalony raz (obojętnie
czy jest zdefiniowany z opcją każdego wiersza czy bez opcji), np.
INSERT INTO departments(department_id) VALUES (3);
gdy zapytanie dotyczy wielu wierszy: z opcją FOR EACH ROW wyzwalacz zostanie
odpalony wiele razy, bez opcji – tylko raz, np.
UPDATE employees SET salary=salary*1.2 WHERE department_id=50;
5.9. Podać przykład wyzwalacza wierszowego
CREATE TRIGGER widelki
BEFORE INSERT OR UPDATE OF salary
ON employees
FOR EACH ROW
BEGIN
IF NOT (:NEW.job_id IN ('AD_PRES','AD_VP')) AND :NEW.SALARY >15000 THEN
RAISE APPLICATION_ERROR(-20202, 'za dużo chcesz zarabiać');
END IF;
END;
Wykład: ZSBDwyk06.ppt
6.1. Podaj przykładowe zastosowanie Obiektowych baz danych i czym się te
dziedziny charakteryzują?
Dziedziny zastosowań
Telekomunikacja (złożona infrastruktura)
Informacja przestrzenna
Multimedialne bazy danych (produkcja – Ford, Boening, Simens)
Charakterystyka dziedzin
Złożone typy danych
Złożone struktury
Zależności hierarchiczne
6.2. Jakie założenia modelu obiektowego zostały wykorzystane w OBD?
Dane wykorzystują założenia modelu obiektowego
Klasy
Dziedziczenie
Metody
Przeciążanie metod
Referencje do obiektów itd.
6.3. Jakie założenia baz danych zostały wykorzystane w OBD?
Zapewnione założenia baz danych
Trwałość danych
Integralność danych
Współbieżne wykonywanie transakcji
Interakcyjne uzyskiwanie informacji z bazy
Odzyskiwanie danych w wyniku awarii
Kontrola dostępu uprawnionych użytkowników
6.4. Powody stosowania OBD
Brak podziału aplikacja – baza
Bogatszy model danych – więcej można określić w samym modelu
Możliwość rozszerzania modelu danych (definiowanie typów przez użytkownika)
Łatwiejsze modelowanie hierarchii
6.5. Podaj cztery składniki standardu ODMG 3.0
Cztery składniki:




Opis modelu
Definicja danych – ODL
Język zapytań – OQL
Rozszerzenia Javy, Smalltalka, C++ do przetwarzania trwałych obiektów bazy danych – OML
6.6. Opisz model ODMG 3.0
Struktura danych


Obiekty, literały
Typy obiektów – atomowe, kolekcje (krotka, zbiór, wielozbiór, lista, tablica, słownik)

Możliwe związki binarne1:1, 1:n, m:n poprzez referencje
Wielodostęp, transakcje


Transakcja jako jednostka programowa przeprowadzająca z bazę ze stanu spójnego w inny stan
spójny
Wielodostęp realizowany przez blokady (odczyt, zapis)
Integralność danych


Unikalności obiektów – Poprzez OID
Referencyjna – poprzez referencje w obiektach
6.7. Scharakteryzuj język ODL
Służy do definicji danych
Definiuje klasy
Funkcjonalność klasy definiowana poprzez atrybuty związki i metody
Atrybuty – nazwa + typ
Typy:


Proste – liczbowe, tekstowe, daty
Złożone: krotki – struct, zbioru – set, wielozbioru – multiset, listy – list, tablicy – array, słownika –
dictionary, odwołujące się do innej klasy
Związki – zawiera nazwę, typ i odwołanie do związku zwrotnego
Metody – zawierają typ zwracanej wartości, nazwę oraz listę parametrów przekazywanych
do metody, dodatkowo może wystąpić lista wyjątków
Rodzaje i typy parametrów


In, out, inout
Typy dowolne – tak jak typy danych
6.8. Podaj składnię lub przykładowe polecenie tworzące klasę w OBD
class nazwa_klasy [extends nadklasa][:interfejs]
[(extent ekstensja)]{ … };
class Pracownik extends Osoba { …};
6.9. Podaj składnię lub przykładowe polecenie tworzące atrybuty klas w OBD
attribute
attribute
attribute
attribute
dziedzina nazwa_atrybutu;
string Imie;
Address adres;
set<Telefon> numery_telefonu;
6.10. Podaj składnię lub przykładowe polecenie tworzące relacje klas w OBD
relationship powiązana_klasa nazwa_relacji
inverse powiązana_klasa::nazwa_relacji_w_pow_klasie
relationship Nauczyciel teacher
inverse Nauczyciel::uczniowie;
relationship set<Uczeń> uczniowie
inverse Uczeń::nauczyciel;
6.11. Podaj składnię lub przykładowe polecenie tworzące atrybuty klas w OBD
typ nazwa(parametry)
raises (listaWyjątków);
void podajNumer(out string kierunkowy, out string numer)
raises (nieMAtakiegoNUMERU);
6.12. Scharakteryzuj język QDL.
Wzorowany na SQL
Obejmuje tylko zapytania
Ogólna składnia – SELECT FROM WHERE – bardziej rozbudowane atrybuty
Wyrażenia ścieżkowe – możliwość odwołania się do obiektów poprzez relację pomiędzy
obiektami
Operacje łączenia


poprzez związki między obiektami
ustalane przez użytkownika
Polimorfizm i dynamiczne wiązanie
6.13. Zachowanie trwałości danych w OBD
Koniczność składowania danych przez dłuższy czas (nie tylko podczas działania aplikacji)
Rozróżnienie pomiędzy danymi trwałymi a działającymi lokalnie w programie (nietrwałe)
Trwałość przypisana do obiektów a nie do całej klasy
Obiekty mogą być zmieniane z trwałych na nietrwałe i na odwrót
Przetwarzanie obiektów trwałych i nietrwałych nie różni się
Dwa typy obiektów trwałych
Utrwalone
Odwołujące się do obiektów trwałych
6.14. Zachowanie trwałości danych w OBD
Unikatowość zapewniona przed OID
Referencyjna zapewniona przez związki pomiędzy obiektami
Integralność użytkownika
dotycząca danych jednostkowych, np. nazwisko niepuste
właściwe zależności w danej klasie, np. data urodzenia nie większa niż data zgonu
przy modyfikacji danych – uwzględnienie znikających obiektów
Specyficzna dla modelu obiektowego
możliwość przechodzenia z jednej klasy do innej
możliwość przynależności do wielu klas, klasy rozłączne
ograniczenia dotyczące podklas
redefinicja metod, atrybutów – można zabronić
możliwość dodania nowych metod względnie atrybutów
Wykład: ZSBDwyk07.ppt
7.1. Jakie elementy dodano do RDBMS w obiektowo relacyjnych bazach danych?
Główne elementy dodane do RDBMS:
 procedury, funkcje;
 możliwość definicji nowych również złożonych typów danych;
 definicja obiektowych i referencyjnych typów danych;
 dziedziczenie, polimorfizm.
7.2. Podać składnie definiowania typu obiektów. Przykład
Składnia:
create type NazwaTypu as object (definicja danych);
Przykłady:
CREATE TYPE punkt AS OBJECT (
X float,
Y float);
CREATE TYPE odcinek AS OBJECT(
P1 punkt,
P2 punkt);
CREATE TYPE tabela IS TABLE OF punkt;
CREATE TYPE wielokat AS OBJECT(
zbiorPunktow tabela);
7.3. Podać przykład definicji obiektu z metodami
CREATE TYPE odcinek (p1 punkt, p2 punkt,
MEMBER PROCEDURE nowyKoncowy(p punkt),
MEMBER FUNCTION dlugosc RETURN FLOAT);
CREATE TYPE BODY odcinek
MEMBER PROCEDURE nowyKoncowy(p punkt) IS
BEGIN
p2:=p;
END nowyKoncowy;
MEMBER FUNCTION dlugosc RETURN FLOAT IS
BEGIN
RETURN sqrt(power(self.p1.x-self.p2.x,2)+power(self.p1.y-self.p2.y,2));
END dlugosc;
END;
7.4. Czym są i do czego służą konstruktory?






funkcje deklarowanie w specyfikacji typu – CONSTRUCTOR FUNCTION;
nazwa funkcji taka sama jak nazwa typu;
służą do określenia w jaki sposób tworzone są obiekty danego typu;
parametry przekazywane tak jak w normalnych funkcjach;
funkcjonalność implementowana w ciele typu;
jako typ zwracany jest: RETURN SELF AS RESULT.
Przykład:
CREATE TYPE kula AS OBJECT ( …,
CONSTRUCTOR FUNCTION kula (promien number) RETURN SELF AS RESULT,…);
7.5. Podać przykład dziedziczenia
CREATE TYPE osoba AS OBJECT ( imie varchar2(20),
nazwisko varchar2(20), dataUrodzenia date,
MEMBER FUNCTION wiek RETURN number) not final;
CREATE TYPE student UNDER osoba ( numerIndeksu char(6), rokStudiow number);
7.6. Czym są typy i metody abstrakcyjne
Typy:
 nie można na ich podstawie tworzyć tabel;
 not instantiable – po definicji całego typu.
Metody:
 tylko definicja nagłówka – bez ciała;
 musi zostać nadpisana w podklasie;
 not instantiable – przed słowem member.
7.7. Podać przykład nadpisywania metod
CREATE OR REPLACE TYPE bryla AS OBJECT(
Typ VARCHAR(20),
NOT INSTANTIABLE MEMBER PROCEDURE skaluj (n number),
NOT INSTANTIABLE MEMBER FUNCTION powierzchnia RETURN NUMBER,
NOT INSTANTIABLE MEMBER FUNCTION objetosc RETURN NUMBER)
NOT INSTANTIABLE NOT FINAL;
CREATE OR REPLACE TYPE kula UNDER bryla(
x FLOAT, y FLOAT, z FLOAT, r FLOAT,
OVERRIDING MEMBER PROCEDURE skaluj (n number),
OVERRIDING MEMBER FUNCTION powierzchnia RETURN NUMBER,
OVERRIDING MEMBER FUNCTION objetosc RETURN NUMBER);
CREATE OR REPLACE TYPE BODY kula AS
OVERRIDING MEMBER PROCEDURE skaluj (n number) IS
BEGIN
SELF.r := self.r *n;
END;
OVERRIDING MEMBER FUNCTION powierzchnia RETURN NUMBER IS
BEGIN
RETURN 4*3.14 * self.r *self.r;
END;
OVERRIDING MEMBER FUNCTION objetosc RETURN NUMBER IS
BEGIN
RETURN 4/3*3.14*power(self.r,3);
END;
END;
7.8. Opisać operowanie na tabelach obiektów




tworzenie tabeli obiektów:
Składnia:
CREATE TABLE nazwaTabeli OF nazwaTypuObiektu;
Przykład:
CREATE TABLE kule OF kula;
wstawianie obiektów do tabeli:
Przykłady:
INSERT INTO kule VALUES(‘kulka’,1,2,3,9);
INSERT INTO kule VALUES(kula(‘pilka’,1,1,1,2));
INSERT INTO odcinki VALUES (new odcinek(new punkt(1,1), new punkt(2,2)));
każdy obiekt otrzymuje identyfikator, który można odczytać za pomocą ref(obiekt);
odczyt wartości: value(obiekt), bądź poszczególne pola, metody: obiekt.pole,
obiekt.metoda.
7.9. Czym są tabele heterogeniczne
Zawierają dane o różnych typach (np. tabela na podstawie typu bryły – zawiera kule i
inne).
Przykład:
CREATE TABLE bryly OF bryla;
INSERT INTO bryly VALUES(new kula(1,1,1,2));
INSERT INTO bryly VALUES(new szescian(3));
INSERT INTO bryly VALUES(new prostopadloscian(2,3,4));
7.10. Czym jest typ REF




umożliwia zapisywanie wskaźników do obiektów wierszy;
jest stosowany do określenia związku pomiędzy obiektami;
wartości typu REF – identyfikatory obiektów powiązanych;
związki REF jednokierunkowe (inaczej niż w obiektowych).
7.11. Podać przykład użycia REF
CREATE TYPE nauczyciel AS OBJECT(
imie VARCHAR2(20), nazwisko VARCHAR2(20));
CREATE TYPE przedmiot AS OBJECT(
nazwa VARCHAR2(20),
prowadzacy REF nauczyciel);
CREATE TABLE profki OF nauczyciel;
CREATE TABLE przedmioty OF przedmiot;
Wstawianie do tabeli z referencją:
INSERT INTO profki VALUES ('Stefan','Batory');
INSERT INTO przedmioty SELECT 'bazy danych', ref(p) FROM profki p WHERE
imie='Stefan';
7.12 Podać przykład zawierający związki dwustronne
CREATE TYPE nauczyciel;
CREATE TYPE lista AS TABLE OF uczen;
CREATE TYPE klasa AS OBJECT (
nazwa VARCHAR2(30),
wychowawca REF nauczyciel,
uczniowie lista);
CREATE TYPE nauczyciel AS OBJECT (
nazwisko VARCHAR2(30), wychowuje REF klasa);
7.13. Omówić tworzenie zapytań





aby pobrać wszystkie elementy tabeli należy użyć gwiazdki, np.
SELECT * FROM kule;
odwołanie do poszczególnych kolumn – poprzez ustawienie aliasu do tabeli i
odwołanie przez alias;
specjalne wartości obiektów:
o ref(o) – identyfikator obiektu;
o value(o) – wartość obiektu;
Przykład:
SELECT value(k), ref(k) FROM kule k;
gdy wybieramy element z nadklasy – pokazuje nam wszystko z podklas, np.:
SELECT * FROM bryly;
SELECT value(b) FROM bryly b;
o ograniczenie do podklasy – „IS OF”, np.
SELECT value(b) FROM bryly b WHERE value(b) IS OF (kula);
odwołanie do metod – alias.nazwaMetody, np.
SELECT b.powierzchnia(), b.objetosc() FROM bryly b;
Uwaga: wyniki są pokazane dla wszystkich podklas.
7.14. Omówić modyfikowanie i usuwanie typów


modyfikowanie: ALTER TYPE nazwa opcje;
o ADD MEMBER FUNCTION|PROCEDURE – dodanie funkcji, procedury;
o ADD ATTRIBUTE – dodanie atrybutu (może być więcej niż jeden);
o MODIFY ELEMENT TYPE – zmiana definicji elementu;
usuwanie typu:
o można usunąć tylko, gdy do niczego się nie odwołuje, np.
DROP TYPE nazwaTypu;
o gdy typy odwołują się cyklicznie - opcja FORCE;
Download