BAZY DANYCH W APLIKACJACH SIECIOWYCH
Transkrypt
BAZY DANYCH W APLIKACJACH SIECIOWYCH
Kolekcje Atrybut typu obiektowego lub kolumna tabeli może być: typu prostego lub typu zbiorowego (kolekcji). Rodzaje kolekcji: VARRAY – typ tablicy jednowymiarowej (jak wektor); NESTED TABLE – (lista) typ tabeli zagnieżdżonej, wartością atrybutu może być cała tabela. Tablica asocjacyjna - w języku PL/SQL jest to tablica, która indeksuje poszczególne elementy za pomocą klucza będącego liczbą lub ciągiem tekstowym. Kolekcja ta jest odpowiednikiem tablicy haszującej lub mapy haszowanej w innych językach programowania. BAZY DANYCH W APLIKACJACH SIECIOWYCH Wykład 6 Kolekcje cd. Operacje na dużych obiektach. (Wybrane materiały) Dr inż. E. Busłowska Copyright © 2014-2015 E. Busłowska 1 Kolekcji o nazwie Lista - tablica VARRAY projektów. Jako argument VARRAY podajemy górne ograniczenie liczby projektów – np. liczba 4. CREATE TYPE Lista AS VARRAY(4) OF Projekt; Definicja typu obiektowego o nazwie Projekt. CREATE TYPE Projekt AS OBJECT ( Num_proj NUMBER(3), Tytuł VARCHAR2(35), Koszt NUMBER(7,2)); 3 Definicja tabeli Copyright © 2014-2015 E. Busłowska 4 Inicjacja wartości kolekcji Jeden z atrybutów tabeli tzn. Projekty jest typu tablicowego Lista. CREATE TABLE Wydziały ( Id_wydz NUMBER(2), Nazwa VARCHAR2(15), Budżet NUMBER(11,2), Projekty Lista); Copyright © 2014-2015 E. Busłowska 2 Definicja typ kolekcji Przykład zastosowania typu VARRAY Copyright © 2014-2015 E. Busłowska Copyright © 2014-2015 E. Busłowska 5 Używamy funkcji konstruktora o tej samej nazwie co typ kolekcji. Do tabeli Wydziały wstawiamy wartości atrybutów pamiętając aby zgodnie ze specyfikacją tablica Projekty nie miała więcej niż cztery elementy (ale może mieć mniej). INSERT INTO Wydziały VALUES(1,'Informatyka',100000, Lista(Projekt(1,'Analiza',123), Projekt(2,'Projekt',456))); Copyright © 2014-2015 E. Busłowska 6 1 Typ referencyjny Dostęp do wartości kolekcji w PL/SQL Dla każdego typu obiektowego Type jest automatycznie definiowany jego typ referencyjny oznaczany przez REF Type. Daje możliwość wiązania wartości atrybutu bądź wartości w kolumnie z innym obiektem podobnie jak klucz obcy odwołuje się do klucza głównego. Jest to alternatywny sposób tworzenia powiązań. W kodzie PL/SQL do poszczególnych elementów kolekcji można dostawać się używając składni: Nazwa_kolekcji(wskaźnik) Copyright © 2014-2015 E. Busłowska 7 Bardzo duże obiekty 9 CLOB - służy do przechowywania w bazie danych bardzo dużych bloków danych znakowych. BLOB - służy do przechowywania w bazie danych bardzo dużych, strukturalnych lub niestrukturalnych obiektów binarnych (np. zdjęć). BFILE - służy do przechowywania w bazie danych bardzo dużych plików binarnych. W odróżnieniu od innych obiektów typu danych LOB, obiekty typu BFILE nie są przechowywane w bazie danych, lecz poza nią. NCLOB służy do przechowywania w bazie danych bardzo dużych bloków jedno-lub wielobajtowych (o stałej długości) danych typu NCHAR. Copyright © 2014-2015 E. Busłowska 10 Pakiet DBMS_LOB Praca z obiektami LOB Większą część operacji na obiektach typu LOB wykonywane są przez procedury i funkcje pakietu DBMS_LOB. Do pracy z obiektami typu LOB należy posiadać uprawnienie systemowe CREATE ANY DIRECTORY i uprawnienie obiektowe EXECUTE do biblioteki DBMS_LOB. Copyright © 2014-2015 E. Busłowska 8 Typy danych LOB Obiekty (LOB) umożliwiają zapisanie w bazie danych wielkich ilości (do 4 GB) danych nieustrukturalizowanych (np. pliki graficzne, muzyczne). Wewnętrzna struktura tych obiektów jest niedostępna dla SQL, a dostęp realizowany jest dzięki odpowiednim podprogramom bazy danych Oracle. Typy danych LOB umożliwiają wydajny, bezpośredni i fragmentaryczny dostęp do danych i mogą stanowić atrybuty typów obiektowych. Copyright © 2014-2015 E. Busłowska Copyright © 2014-2015 E. Busłowska 11 Pakiet służy do obsługi typów LOB z poziomu PL/SQL. Najważniejsze podprogramy tego pakietu: APPEND() - parametry: cel IN OUT typ; typ::= {BLOB|CLOB}. Dolacza dane obiektu zródlo do obiektu cel. CLOSE() - parametry: lob IN OUT typ; typ::= {BLOB,CLOB,BFILE}. Zamyka otwarty wcześniej obiekt. COMPARE() - parametry: lob1 IN typ, lob2 IN typ, ilosc INTEGER, offset1 INTEGER, offset2 INTEGER; typ::= {BLOB|CLOB|BFILE}. Porównuje dwa obiekty LOB lub ich czśćci. Jeśli obiekty są równe, wówczas zwraca wartość 0, w przeciwnym wypadku wartość różną od 0. COPY() - parametry: cel IN OUT typ, zródlo IN typ, ilosc IN INTEGER, cel_offset IN INTEGER, zródlo_offset IN INTEGER; typ::= {BLOB|CLOB}. Kopiuje całkowicie lub częsciowo zawartość obiektu zródlo do obiektu cel. Copyright © 2014-2015 E. Busłowska 12 2