Różnie pomiędzy modelem obiektowym a relacyjnym.
Model relacyjny – płaski, dane grupowane są w relacje, które reprezentowane są przez tablice, Relacje zgrupowane są w tzw. schematy bazy danych. Relacją może być tabela zawierająca dane teleadresowe pracowników, zaś schemat może zawierać wszystkie dane dotyczące firmy.
Model obiektowy – bardziej złożony
- naturalne modelowanie encji,
- i relacji pomiędzy nimi
- dobra reprezentacja danych
- szybka nawigacja (np. nie trzeba tak biegać pomiędzy tabelami)
- dokładność modelowania
- bezpieczeństwo – które zapewnia hermetyzacja (a to mamy dzięki obiektowości)
- integracja z językami programowania
- w obiektowym mamy: klasy, obiekty
Nazewnictwo - co jest obiektem, co klasą etc.
Klasy – abstrakcyjna struktura danych, ma interfejs użytkownika, użytkownicy mają interfejs do wykorzystywania
Obiekty – mają atrybuty, reprezentują dane i metody wykorzystywane na rzecz obiektów, wykonują operacje na atrybutach,
Atrybuty – mogą być proste, lub złożone (czyli zdefiniowane przez twórców).
Co to jest OID (Object ID).
ID Obiektu (OID) – jest określony przez System Zarządzania Obiektową Bazą Danych (SZOBD).
CREATE TYPE.... CREATE TABLE
CREATE TYPE Można zdefiniować złożone typy danych i typy kolekcyjne (tabele zagnieżdżone i tablice VARRAY). W poleceniu tworzenia typu można określić:
- typ nadrzędny, od którego dany typ dziedziczy (klauzula UNDER),
- atrybuty typu obiektowego i określenia ich typu,
- Specyfikację dziedziczenia (klauzuje OVERRIDING, FINAL, INSTANTABLE),
- Specyfikację podprogramów (klauzule MEMBER, STATIC),
- specyfikację funkcji MAP oraz ORDER.
CREATE TABLE Można za jego pomocą:
-określić wartości domyślne dla kolumn tabeli
-zdefiniować ograniczenia dla poszczególnych kolumn tabeli,
-określić sposoby identyfikacji obiektów (wierszy tabeli),
-określić sposób przechowywania tabel zagnieżdżonych i tablic VARRAY
CREATE TYPE osoba AS OBJECT
( nazwisko VARCHAR2(30),
telefon VARCHAR2(30) );
CREATE TABLE osoba_tab OF osoba;
CREATE TABLE osoba
( id NUMBER (4),
Os osoba);
Jakie warunki musi spełniać typ tablicowy, by mógł być wykorzystany jako tabela zagnieżdżona?
Musi być jednowymiarowy. Można modelować tablice wielowymiarowe, tworząc tabele zagnieżdżone których elementy są również tabele zagnieżdżone.
Jak wypełnia się tabelę zbudowaną w oparciu o obiekty? Chodzi o wykorzystanie konstruktora.
INSERT INTO klinet_obj_tab VALUES( klient_typ(102,’nowak’,’223243242345’) );
co to jest referencja? I jak jest realizowana? Podaj przykład.
Referencja: to wartość, która zawiera informacje o położeniu innej wartości w pamięci lub nośniku danych.
CREATE TYPE osoba AS OBJCT
( nazwisko VARCHAR2(30), Manager REF osoba );
Jak budujemy strukturę danych, jeśli jest referencja? Chodzi o kolejność budowania typów obiektowych i tabel i ich wypełniania.
DECLARE ZamowienieRef REF TO zamowienie;
SELECT REF (po) INTO ZamowienieRef
FROM zamowienie_tab po
WHERE po.id = 1000376;
Co robią polecenia związane z referencjami:
- IS DANGLING- sprawdzenie warunku, czy dana referencja jest zawieszona
- DEREF- dereferencja – dostęp do obiektu wskazywanego przez referencję
10. Dziedziczenie w typach obiektowych:
- UNDER- klauzula- typ nadrzędny, od którego dany typ dziedziczy
- OVERRIDING- Specyfikację dziedziczenia. W przeładowaniu metody wykorzystujemy słowo kluczowe OVERRIDING
- FINAL- Specyfikację dziedziczenia. Domyślnie typy obiektowe są traktowane jako FINAL.
- INSTANTABLE- Specyfikację dziedziczenia. Domyślnie typ obiektowy jest INSTANTIABLE - można na jego podstawie tworzyć obiekty.
11. Wartość NULL: obiekt o wartości NULL i obiekt zawierający wartości NULL - przedstaw i opisz różnice.
Obiekt o wartości NULL to tzw. „atomowy NULL” (który nie istnieje) to nie to samo, co obiekt zawierający atrybuty o wartości NULL.(ten ma puste atrybuty).
CRATE TYPE osoba AS OBJECT
( name VARCHAR2(30),
telefon VARCHAR2(30) );
CRATE TABLE kontakty
( kontakt osoba,
data DATE );
INSERT INTO kontakty VALUES (osoba(NULL,NULL),’23-jan-1020’);
INSERT INTO kontakty VALUES ( NULL, ’23-jan-2010’);
12. Klauzula DEFAULT przy tworzeniu tabel - jak działa i jak zaimplementować (czyli: napisz linijkę jak to ma wyglądać).
Określanie wartości domyślnej – przy deklaracji kolumny tabeli (jeśli ta kolumna jest obiektem lub kolekcją!) Jak działa? to wywołanie konstruktora
CREATE TABLE kontakty (
Kontakt osoba DEFAULT osoba (‘Kowalski’,’235r4235324’)
);
13. Jak możemy zaimplemetować kolekcje w Oracle obiektowym? (odp. tabele zagnieżdżone i tabele zmiennej długości, proszę znać również nazwy angielskie).
- tabele zagnieżdżone (ang. nested tables) To nieuporządkowany zbiór elementów tego samego typu. Mają jedną kolumnę typu prostego lub obiektowego zdefiniowanego przez użytkownika. Gdy kolumna jest obiektowa tabela ta może być traktowana jako wielokolumnowa (poszczególne kolumny odpowiadają atrybutom typu obiektowego).
-tabele o zmiennej długości (ang. varray) VARRAY – to wielopoziomowe tablice o zmiennej długości. Mogą być przechowywane na dwa sposoby: 1) może to być tablica VARRAY elementów typu VARRAY 2) albo tablica VARRAY tablic zagnieżdżonych. Jeśli ma mniej niż 4 000 bajtów jest przechowywana razem z wierszem tabeli. Tablice o większych rozmiarach przechowywane są w obiekcie typu LOB (ang. Large Object).
14. Wymień 2 cechy tabel zagnieżdżonych (slajd numer 3)
1. Mogą mieć dowolną liczbę elementów (wierszy), nie jest określona ich liczba i porządek. 2. Dodawanie, usuwanie i pobieranie wierszy – jak w relacyjnej.
15. Wymień 2 cechy tabel zmiennej długości (slajd numer 4)
1. To uporządkowana kolekcja elementów. 2. Każdy ma swój indeks (numer) identyfikujący
16. Jak traktowana jest tabela zagnieżdżona? kiedy jako jednokolumnowa, a kiedy jako wielokolumnowa?
Gdy kolumna jest obiektowa tabela ta może być traktowana jako wielokolumnowa (poszczególne kolumny odpowiadają atrybutom typu obiektowego).
17. Podaj jak definiujemy tabelę zagnieżdżoną (przykład)
CREATE TYPE nazwa_typu AS TABLE OF typ_kolumny; (AS TABLE nie AS OBJECT !!!)
18. Gdzie jest przechowywana tabela zagnieżdżona? (slajd numr 7)
Oracle przechowuje dane tabeli zagnieżdżonej dla wszystkich wierszy (obiektów) tabeli nadrzędnej w jednej odrębnej tabeli (w tzw. tabeli składowej, ang. stored table).
19. Podaj przykład wykorzsytania tabeli zgnieżdżonej (czyli deklaracja typów obiektowych, tablicowego i tabeli).
CREATE TYPE szczegóły_typ AS OBJECT (
towar CHAR(15),
ilosc NUMBER,
cena NUMBER );
CREATE TYPE szczegoly_typtab AS TABLE OF szczegoly_typ;
CREATE TABLE zamowienia (
nr_zam CHAR(10),
klient CHAR (15),
data DATE,
szczegoly_zam szczegoly_typtab)
NESTED TABLE szczegoly_zam STORE AS tabela_skladowa;
20. Co to sa kolekcje wielopoziomowe?
Typy kolekcji wielopoziomowych to takie typy, których elementami są inne kolekcje:
- tabela zagnieżdżona w tabeli zagnieżdżonej,
- tabela zagnieżdżona w tabeli VARRAY,
- tablica VARRAY typu tabela zagnieżdżona,
- tablica VARRAY typu tablica VARRAY,
- tabela zagnieżdżona lub tablica VARRAY typu zdefiniowanego przez użytkownika, zawierająca atrybut typu tabela zagnieżdżona lub VARRAY.
Tak samo, jak typy jednopoziomowe, typy wielopoziomowe mogą być używane dla kolumn tabel relacyjnych oraz dla atrybutów tabel obiektowych.
21. Jakie są kombinacje dotyczące przechowywania tablic zmiennej długości? (slajd numer 15) i jakie ograniczenia?
Mogą być przechowywane na dwa sposoby: 1) może to być tablica VARRAY elementów typu VARRAY 2) albo tablica VARRAY tablic zagnieżdżonych.
22. Co to jest metoda i do czego służy (w kontekście Oracle obiektowego).
Związane bezpośrednio z danym obiektem. Dzięki nim aplikacje uzyskują dostęp do atrybutów obiektu. Mają wbudowany parametr SELF – wskazujący na instancję obiektu, dla którego metoda została wywołana.Mogą odwoływać się do atrybutów i metod obiektu bez kwalifikatora SELF.
Przy definiowaniu – wskazuje na typ metody i nazwę, treść metody jest w CREATE TYPE BODY.
23. Zasady implementacji metody MEMBER.
W Create type jest ona implemetowana a w create body zostaje opisany sposób jej działania
24. Podaj przykład metody do wskazanego typu obiektowego.
CREATE TYPE liczba_wymierna AS OBJECT
( licznik INTEGER, mianownik INTEGER, MEMBER PROCEDURE normalizacja, …. );
CREATETYPE BODY liczba_wymierna AS --dla typu
MEMBER PROCEDURE normalizacja IS --wypisujemy treść procedury
g INTEGER;
BEGIN
g := gcd(SELF.num, SELF.den; --lub: g:= gcd(num,den);
num := num/g;
den := den/g;
END normalizacja;
….
END;
25. Zasady implementacji metody MAP.
– można porównywać obiekty poprzez odwzorowanie (mapowanie, ang. mapping) instancji obiektu na wartość skalarną DATE, NUMBER lub VARCHAR2
– Przy wywołaniu metody, dla każdego obiektu (każdej instancji obiektu) poszczególne obiekty są ‘rzutowane’ na oś – porządkowane zgodnie z klasycznymi mechanizmami porządkowania
– Funkcja MAP MEMBER jest baz parametrów, zwraca wartość skalarną jednego z typów prostych
– Jest wywoływana automatycznie przez system w momencie wykonywania poleceń SQL zawierających klauzule DISTINCT, GROUP BY i ORDER BY.
26. Podaj przykład metody MAP do wskazanego typu obiektowego.
metoda MAP MEMBER o nazwie pole() – porównywanie info o prostokątach na podstawie pola powierzchni:
CREATE TYPE prostokat_typ AS OBJECT
( dlugosc NUMBER, szerokosc NUMBER, MAP MEMBER FUNCTION pole RETURN NUMBER, …. );
CREATETYPE BODY prostokat_typ AS MAP MEMBER FUNCTION pole RETURN NUMBER IS
BEGIN
RETURN dlugosc*szerokosc;
END POLE;
…
END;
27. Zasady implementacji metody ORDER.
ORDER (ang.order methods) do bezpośredniego porównywania 2-ch obiektów (bieżącego z drugim, przekazanym jako parametr), przechowują info, który obiekt jest ‘mniejszy’ a który ‘większy’ albo czy ‘równe’ na podstawie podanego kryterium. Metody zwracają: liczbę dodatnią (+), liczbę ujemną(-) albo 0 ta liczba wskazuje, czy aktualny obiekt (SELF) jest większy, mniejszy czy równy temu z parametrem. Metoda wykonywana automatycznie zawsze wtedy, gdy wykonywana jest operacja porównywania obiektów. W typie obiektowym można zadeklarować co najwyżej jedną metodę ORDER (lub MAP). Metodę ORDER można zadeklarować jedynie w takim typie obiektowym, który nie jest dziedziczony z innego typu (czyli nie można deklarować w typie pochodnym)
28. Podaj przykład metody ORDER do wskazanego typu obiektowego.
CREATE TYPE klient_typ AS OBJECT
( id NUMBER, nazwisko VARCHAR2(30), adres VARCHAR2(30),
ORDER MEMBER FUNCTION porownaj (k klient_typ) RETURN INTEGER );
CREATE TYPE BODY klient_typ AS
ORDER MEMBER FUNCTION porownaj (k klient_typ) RETURN INTEGER IS
BEGIN
IF id < k.id THEN
RETURN -1; --moze byc dowolna liczba ujemna
ELSIF id > k.id THEN
RETURN 1; --moze byc dowolna dodatnia
ELSE
RETURN 0;
ENDIF; --jak widać składnia podoba do tej z bash’a linuksowego
END;
END
29. Zasady implementacji metod typu STATIC.
Związane są z określonym typem obiektowym - a nie z instancją typu (czyli analogicznie: tak jakby dotyczą całej klasy, a nie pojedynczych obiektów). Wykorzystywane do operacji globalnych dla typu obiektowego, bez odwoływania się do konkretnej instancji.
Nie jest wykorzystywany parametr SELF.
Wywołanie:
nazwa_typu.metoda(parametry);
30. Zasady dziedziczenia
FINAL/NOT FINAL,
Aby umożliwić dziedziczenie z danego typu obiektowego, polecenie definicji typu musi zawierać słowo kluczowe NOT FINAL:
CREATE TYPE osoba_objtyp AS OBJECT(
id NUMBER,
nazwisko VARCHAR2(30),
adres VARCHAR2(100)) NOT FINAL;
Jeżeli słowo kluczowe NOT FINAL nie będzie dołączone do definicji typu, to system przyjmie domyślnie parametr FINAL co oznacza, że na podstawie tego typu nie będą mogły być tworzone typy podrzędne
Parametr FINAL/NOT FINAL może być zmieniony za pomocą polecenia ALTER TYPE, np.:
ALTER TYPE osoba_objtyp FINAL;
Zmianę parametru NOT FINAL na FINAL można wykonać jedynie w przypadku, gdy dany typ nie posiada typów pochodnych.
UNDER.
Tworzenie typu podrzędnego odbywa się przy pomocy polecenia CREATE TYPE z parametrem UNDER:
CREATE TYPE student_objtyp UNDER osoba_objtyp(
id_wydz NUMBER,
kierunek VARCHAR2(30)) NOT FINAL;
Powyższe polecenie tworzy typ o nazwie student_objtyp jako typ podrzędny typu ooba_objtysp. Typ ten dziedziczy wszystkie atrybuty zdefiniowane w definicji typu
osoba_objtyp lub odziedziczone przez ten typ, oraz wszystkie metody zdefiniowane w typie osoba_objtyp i odziedziczone przez ten typ.
31. Zasady dziedziczenia po typie podrzędnym.
UNDER.
Tworzenie typu podrzędnego odbywa się przy pomocy polecenia CREATE TYPE z parametrem UNDER:
CREATE TYPE student_objtyp UNDER osoba_objtyp(
id_wydz NUMBER,
kierunek VARCHAR2(30)) NOT FINAL;
Powyższe polecenie tworzy typ o nazwie student_objtyp jako typ podrzędny typu ooba_objtysp. Typ ten dziedziczy wszystkie atrybuty zdefiniowane w definicji typu
osoba_objtyp lub odziedziczone przez ten typ, oraz wszystkie metody zdefiniowane w typie osoba_objtyp i odziedziczone przez ten typ.
32. Podaj przykład referencji obiektowej.
Rozumiemy jak wskaźnik do obiektu wierszowego.
CREATE TABLE osoba
( id NUMBER (4),
nazw_obj nazw_obj_typ,
adres_ref REF adres_obj_typ SCOPE IS adres_obj_tab);
33. co to jest OID? (pytanie jak w pliku z pytaniami numer W01)
ID Obiektu (OID) – jest określony przez System Zarządzania Obiektową Bazą Danych (SZOBD).
34. Co robi klauzula SCOPE FOR przy referencji?
ogranicza do przechowywania referencji wyłącznie do jednej tabeli obiektowej.
Podczas gdy referencje o nieograniczonym zakresie wymagają co najmniej 36 bajtów, referencje o ograniczonym zakresie wymagają tylko tyle bajtów ile zawiera OID obiektu wskazywanego i mogą zawierać mniej niż 16 bajtów (dla OID opartych na kluczu głównym).
35. Default i konstruktory - pytanie jak w pliku z pytaniami numer W01
Default
Określanie wartości domyślnej – przy deklaracji kolumny tabeli
(jeśli ta kolumna jest obiektem lub kolekcją!)
Jak działa? to wywołanie konstruktora
CREATE TABLE kontakty (
Kontakt osoba DEFAULT osoba (‘Kowalski’,’235r4235324’)
);
Konstruktory
Nazwa konstruktora = nazwa typu obiektowego, parametry = atrybuty typu.
CREATE TYPE klient_typ AS OBJECT
( id NUMBER,
nazwisko VARCHAR2(30),
tel VARCHAR2(30) );
Cust=klient_typ(103,’kowalski’,’344545234532’);
CREATE TABLEklient_obj_tab OF klient_typ;
INSERT INTO klinet_obj_tab VALUES
( klient_typ(102,’nowak’,’223243242345’) );
36. Co to jest PLSQL
PL/SQL (Procedural Language/SQL). Rozszerzenie języka SQL. Umożliwia wykorzystanie rozkazów SQL do wykonywania operacji na danych i realizowania zapytań w strukturze proceduralnych bloków. Narzędzie programowania transakcji (m.in.)
37. Jak są realizowane polecenia PLSQL?
PL/SQL nie jest samodzielnym produktem ORACLE, a stanowi technologię zaimplementowaną w RDBMS i w niektórych programach narzędziowych ORACLE.
Bloki PL/SQL są przekazywane i przetwarzane przez maszynę PL/SQL, która rezyduje albo w programie narzędziowym albo w samym RDBMS.
O tym, która maszyna zostanie zastosowana decyduje miejsce wywołania PL/SQL.
Maszyna PL/SQL wykonuje rozkazy proceduralne, a rozkazy SQL przesyła do wykonania do wykonawcy poleceń SQL w RDBMS.
Filtruje rozkazy SQL, pozostawiając do wykonania przez swojego wykonawcę pozostałe proceduralne rozkazy.
38. Jak są realizowane wyjątki? Podaj przykład.
39. co to jest serwer BD? (nazwy angielskie poproszę)
Serwer bazy danych Oracle (ang. database server) motor bazy + zaangażowane w obsługę danych zasoby sprzętowe, pliki bazodanowe, dzienniki powtórzeń etc.
40. Co to jest silnik bazy danych?
Motor bazy (ang. database engine) określa zbiór procesów czy programów realizujących funkcje związane z obsługą danych
41. Jakie zadania ma spełniać serwer BD? (slajd 5)
1.Praca w środowisku klient-serwer(przetwarzanie rozproszone)
Oddzielenie funkcji serwera bazy od zadań wykonywanych przez klienta
Serwer do składowania i zarządzania zbiorem danych
Klient formułowanie i wysyłanie zapytań o dane,
przetworzenia danych,
prezentacja danych,
modyfikowanie danych składowanych na serwerze
Funkcje klienckie może przejąć serwer (przechowuje i wykonuje elementy kodu aplikacji)
zalety:
Słabsze maszyny jako klient
Zmniejszenie natężenia ruchu sieciowego
2.Praca w środowisku wielowarstwowym (serwery aplikacji)
Trójwarstwowa architektura
(MVC – Model-View-Controller):
3.Składowanie i zarządzania dużymi bazami danych
Wykorzystania wysokowydajnych metod asynchronicznego zapisu na dyski
Zapewnienia dostępu metodą raw devices
Uporządkowania zasobów sprzętowych, buforów, PaO, procesorów
4.Obsługa wielu użytkowników jednocześnie
5.Możliwość przenoszenia danych
6.Zapewnienie dużej dostępności danych
w systemach produkcyjnych często 24 godziny/dobę
nie wymaga przerw w pracy bazy na kopie zapasowe, usuwania awarii systemu
7.Zapewnienie możliwości kontroli dostępu do danych
kontrola: role i przywileje
kontrola na poziomie dostępu
do tabeli i wiersza
8.Wymuszenie spójności danych
ważny: jednoczesny dostęp do danych bez zaburzenia logicznej struktury oraz zawartości
9.Realizacja przetwarzania rozproszonego Grid Computing
możliwe jest łączenie danych (składowanych fizycznie na różnych komputerach) w jedną (logicznie) strukturę danych
10.Replikacja danych
replikacja obiektów, albo zbiorów danych,
przenoszenie części danych do innej instancji bazy danych Oracle, jak i do pokrewnych magazynów danych (np. Oracle Lite)
42. co to jest INSTANCJA Oracle?
Grupa buforów Obszar globalny systemu (ang. System Global Area - SGA) wykorzystywana do obsługi bazy
Procesy drugoplanowe (ang. Background Processes) działają asynchronicznie, wykonują czynności związane z obsługą bazy i zapytaniami użytkowników
Inaczej: programy rezydujące w pamięci operacyjnej komputera, który pracuje jako serwer Oracle
Zazwyczaj: 1 instancja dla 1 bazy
jest możliwe otwarcie wielu instancji pracujących na danych jednaj bazy przy użyciu serwera równoległego (ang. Parallel Server Option)
43. Co to jest SGA? I do czego służy?
System Global Area – Globalny obszar systemu. jest obszarem pamięci współużytkowanej wykorzystywanym przez Oracle’a do przechowywania informacji kontrolnych instancji Oracle’a. SGA jest przydzielana podczas uruchamiania instancji i zwalniana podczas jej zatrzymywania
44. Wymień procesy działające na serwerze BD i ich zadania (podział z grubsza, nie wymieniać wszystkich).
proces usługowy. Jego rolą jest obsługa żądań użytkowników
45. Jakie pliki sa wykorzystywane w BD Oracle i co przechowują?
pliki konfiguracyjne (init files)
pliki kontrolne (control files) — binarne, bardzo ważne, zawierają informacje o położeniu WSZYSTKICH plików bazy danych wraz z datą i godziną ich zamknięcia
pliki danych (data files) — przechowują dane w postaci binarnej, z danych w nich zawartych korzysta się za pośrednictwem procesów serwera (tła)
pliki dziennika powtórzeń (redo-log files) — rejestrują wszystkie operacje wykonane na bazie
46. Co to są ekstenty?
Ekstent jest zbiorem ciągłych bloków. Taki zbiór bloków jest tworzony za każdym razem, kiedy do obiektu wymagana jest dodatkowa przestrzeń
47. Zależności pomiędzy segmentami, ekstentami a blokami danych.
Segmenty są po prostu zbiorem ekstentów
48. Jakie znasz typy segmentów? Wymień 4.
Segment danych, indeksu, przywracania, tymczasowy
49. co to jest Process Global Area?
PGA – Process Global Area pamięć przydzielona każdemu procesowi, W niej są zawarte prywatne obszary SQL. Ich maksymalna liczba to OPEN_CURSORS
50. Jak dzielimy język SQL (chodzi o DDL i DML).
51. Omów działanie komend DDL. Wymień przykładowe komenty DDL.
52. Omów działanie komend DMmL. Wymień przykładowe komenty DML.
53. Wymień i omów własności transakcji (nazwy po polsku i ang.)
54. Co zaczyna transakcję w systemie Oracle?
55. Co kończy transakcję w systemie Oracle?
56. Podaj przykład transakcji (to pytanie będzie doszczegółowione).
57. Zasady transakcji.
58. Zasady działania COMMIT, ROLLBACK. Podaj przykład.
59. Zasady działania SAVEPOINT.
60. Zasady działania ROLLBACK TO SAVEPOINT.
61. Co to są transakcje tylko do odczytu?
zapewnia spójność na poziomie transakcji, nie można w nich dokonywać żadnych modyfikacji danych, korzystają z mechanizmu wielowersyjności